ETH Price: $3,407.87 (-0.24%)
Gas: 9 Gwei

Token

ElonObamaPepeVitalikTrumpSantaInu (XMAS)
 

Overview

Max Total Supply

24,122,023 XMAS

Holders

6

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
171,448.185906512074616078 XMAS

Value
$0.00
0xf1466EBdd36d5e3638A12316477520bF3b2378A1
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:
ElonObamaPepeVitalikTrumpSantaInu

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-12-20
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.17;

/**
 * Autists unite for xmas!
 *
 * TG: https://t.me/eopvtsinu
 * Web: https://www.elonobamapepevitaliktrumpsantainu.lol/ 
 */

// SafeMath Library

library SafeMath {

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }
}

// Standard IERC20 Interface

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    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);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

// Context

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

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

abstract contract Project {
    address public marketingWallet = 0x4f53e42B90fBb7a6757008909856f1f2Ab8720b2;
    
    string constant NAME = "ElonObamaPepeVitalikTrumpSantaInu";
    string constant SYMBOL = "XMAS";
    uint8 constant DECIMALS = 18;

    uint256 _totalSupply              = 24_12_2023 * 10**DECIMALS;
    uint256 public _maxTxAmount       = (_totalSupply / 100) * 2;
    uint256 public _maxWalletToken    = (_totalSupply / 100) * 2;
    uint256 public buyTotalFee        = 20;
    uint256 public swapLpFee          = 5;
    uint256 public swapMarketing      = 25;
    uint256 public swapTotalFee       = swapMarketing + swapLpFee;

    uint256 public transFee           = 0;
    uint256 public feeDenominator     = 100;

    uint256 public swapThreshold      = (_totalSupply / 1000) * 5; // 0.5%
    uint256 public swapAmount         = (_totalSupply / 1000) * 2; // 0.2%
}


// Ownership

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;

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

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// Uniswap Factory

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

// Uniswap Pair

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

// Uniswap Router

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

// Uniswap Router Updated

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 ElonObamaPepeVitalikTrumpSantaInu is Project, IERC20, Ownable {
    using SafeMath for uint256;

    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isMaxExempt;
    
    event Burn(address indexed from, uint256 value);
    
    address public autoLiquidityReceiver;

    uint256 targetLiquidity = 8;
    uint256 targetLiquidityDenominator = 100;

    IUniswapV2Router02 public immutable contractRouter;
    address public immutable uniswapV2Pair;

    bool public tradingOpen = false;
    uint256 launchBlock;
    
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D); //Mainnet & Testnet ETH
         // Create a uniswap pair for this new token
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        // set the rest of the contract variables
        contractRouter = _uniswapV2Router;

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

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isMaxExempt[msg.sender] = true;

        isFeeExempt[marketingWallet] = true;
        isMaxExempt[marketingWallet] = true;
        isTxLimitExempt[marketingWallet] = true;

        autoLiquidityReceiver = msg.sender;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return DECIMALS; }
    function symbol() external pure override returns (string memory) { return SYMBOL; }
    function name() external pure override returns (string memory) { return NAME; }
    function getOwner() external view override returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setTxLimit(uint256 amount) external onlyOwner() {
        _maxTxAmount = amount;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(sender != owner() && recipient != owner()){
            require(tradingOpen,"Trading not open yet");
        }

        bool inSell = (recipient == uniswapV2Pair);
        bool inTransfer = (recipient != uniswapV2Pair && sender != uniswapV2Pair);

        if (recipient != address(this) && 
            recipient != address(DEAD) && 
            recipient != uniswapV2Pair && 
            recipient != marketingWallet &&
            recipient != autoLiquidityReceiver
        ){
            uint256 heldTokens = balanceOf(recipient);
            if(!isMaxExempt[recipient]) {
                require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
            }
        }

        // Checks max transaction limit
        // but no point if the recipient is exempt
        // this check ensures that someone that is buying and is txnExempt then they are able to buy any amount
        if(!isTxLimitExempt[recipient]) {
            checkTxLimit(sender, amount);
        }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = amount;

        // Do NOT take a fee if sender AND recipient are NOT the contract
        // i.e. you are doing a transfer
        if(inTransfer) {
            if(transFee > 0) {
                amountReceived = takeTransferFee(sender, amount);
            }
        } else {
            amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount, inSell) : amount;
            
            if(shouldSwapBack()){ swapBack(); }
        }

        uint256 recipientBalance = _balances[recipient];
        recipientBalance = recipientBalance.add(amountReceived);

        _balances[recipient] = recipientBalance;

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

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

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeTransferFee(address sender, uint256 amount) internal returns (uint256) {

        uint256 feeToTake = transFee;
        uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {
        uint256 feeToTake;
        feeToTake = isSell ? swapTotalFee : buyTotalFee;

        uint256 feeAmount = amount.mul(feeToTake).mul(100).div(feeDenominator * 100);
        
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != uniswapV2Pair
        && !inSwap
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance() external {
        uint256 amountETH = address(this).balance;
        payable(marketingWallet).transfer(amountETH);
    }

    // switch Trading
    function openTrading() external onlyOwner() {
        tradingOpen = true;
        launchBlock = block.number;
    }

    function feeOnTransfer(uint256 _fee) external onlyOwner() {
        require(_fee <= 10, "Fee cannot be more than 10%");
        transFee = _fee;
    }

    function feeOnSell(uint256 _newSwapLpFee, uint256 _newSwapMarketingFee, uint256 _feeDenominator) external onlyOwner() {
        uint256 newSellFee = _newSwapLpFee + _newSwapMarketingFee;
        require(newSellFee <= 25, "Fee cannot be this large");

        swapLpFee = _newSwapLpFee;
        swapMarketing = _newSwapMarketingFee;
        swapTotalFee = newSellFee;
        feeDenominator = _feeDenominator;
    }

    function feeOnBuy(uint256 _buyTax) external onlyOwner() {
        require(_buyTax <= 25, "Fee cannot be this large");
        buyTotalFee = _buyTax;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = swapLpFee;
        uint256 amountToLiquify = swapAmount.mul(dynamicLiquidityFee).div(swapTotalFee).div(2);
        uint256 amountToSwap = swapAmount.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = swapTotalFee.sub(dynamicLiquidityFee.div(2));

        uint256 amountETHLiquidity = amountETH.mul(swapLpFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(swapMarketing).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingWallet).call{value: amountETHMarketing, gas: 30000}("");

        // Supress warning msg
        tmpSuccess = false;

        if(amountToLiquify > 0){
            contractRouter.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external onlyOwner() {
        isFeeExempt[holder] = exempt;
    }

    function setIsMaxExempt(address holder, bool exempt) external onlyOwner() {
        isMaxExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external onlyOwner() {
        isTxLimitExempt[holder] = exempt;
    }

    function setNewMarketingWallet (address _newMarketingWallet) external onlyOwner() {
        isFeeExempt[marketingWallet] = false;
        isFeeExempt[_newMarketingWallet] = true;
        marketingWallet = _newMarketingWallet;
    }

    function setSwapThresholdAmount(uint256 _amount) external onlyOwner() {
        swapThreshold = _amount * 10**DECIMALS;
    }

    function setSwapAmount(uint256 _amount) external onlyOwner() {
        if(_amount > swapThreshold) {
            swapAmount = swapThreshold;
        } else {
            swapAmount = _amount * 10**DECIMALS;
        }        
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external onlyOwner() {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

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

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(uniswapV2Pair).mul(2)).div(getCirculatingSupply());
    }

    event AutoLiquify(uint256 amountETH, uint256 amountBOG);

    function manualSwap() external onlyOwner() {
        swapBack();
    }

    function unclog() external onlyOwner() {
        uint256 oldSwapAmount = swapAmount;
        uint256 oldSwapThreshold = swapThreshold;
        swapAmount = address(this).balance;
        swapThreshold = address(this).balance;

        if(swapAmount > 0) {
            swapBack();
        }

        swapAmount = oldSwapAmount;
        swapThreshold = oldSwapThreshold;
    }

    function removeLimits() external onlyOwner() {
        _maxTxAmount = _totalSupply;
        _maxWalletToken = _totalSupply;
        swapThreshold = 0;
    }

    function setFinalTaxes() external onlyOwner() {
        buyTotalFee = 2;
        swapLpFee = 1;
        swapMarketing = 1;
        swapTotalFee = 1;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountBOG","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"contractRouter","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyTax","type":"uint256"}],"name":"feeOnBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newSwapLpFee","type":"uint256"},{"internalType":"uint256","name":"_newSwapMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"}],"name":"feeOnSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"}],"name":"feeOnTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setFinalTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsMaxExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newMarketingWallet","type":"address"}],"name":"setNewMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapThresholdAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapLpFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapMarketing","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTotalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"transFee","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":"unclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c0604052734f53e42b90fbb7a6757008909856f1f2ab8720b26000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620000689190620009ac565b63017012a7620000799190620009fd565b600155600260646001546200008f919062000a77565b6200009b9190620009fd565b60025560026064600154620000b1919062000a77565b620000bd9190620009fd565b6003556014600455600580556019600655600554600654620000e0919062000aaf565b6007556000600855606460095560056103e860015462000101919062000a77565b6200010d9190620009fd565b600a5560026103e860015462000124919062000a77565b620001309190620009fd565b600b55600860145560646015556000601660006101000a81548160ff0219169083151502179055503480156200016557600080fd5b506000620001786200080a60201b60201c565b905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200027c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a2919062000b54565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200030a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000330919062000b54565b6040518363ffffffff1660e01b81526004016200034f92919062000b97565b6020604051808303816000875af11580156200036f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000395919062000b54565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601160008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600154600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620007fb919062000bd5565b60405180910390a35062000bf2565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008a05780860481111562000878576200087762000812565b5b6001851615620008885780820291505b8081029050620008988562000841565b945062000858565b94509492505050565b600082620008bb57600190506200098e565b81620008cb57600090506200098e565b8160018114620008e45760028114620008ef5762000925565b60019150506200098e565b60ff84111562000904576200090362000812565b5b8360020a9150848211156200091e576200091d62000812565b5b506200098e565b5060208310610133831016604e8410600b84101617156200095f5782820a90508381111562000959576200095862000812565b5b6200098e565b6200096e84848460016200084e565b9250905081840481111562000988576200098762000812565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620009b98262000995565b9150620009c6836200099f565b9250620009f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008a9565b905092915050565b600062000a0a8262000995565b915062000a178362000995565b925082820262000a278162000995565b9150828204841483151762000a415762000a4062000812565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000a848262000995565b915062000a918362000995565b92508262000aa45762000aa362000a48565b5b828204905092915050565b600062000abc8262000995565b915062000ac98362000995565b925082820190508082111562000ae45762000ae362000812565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000b1c8262000aef565b9050919050565b62000b2e8162000b0f565b811462000b3a57600080fd5b50565b60008151905062000b4e8162000b23565b92915050565b60006020828403121562000b6d5762000b6c62000aea565b5b600062000b7d8482850162000b3d565b91505092915050565b62000b918162000b0f565b82525050565b600060408201905062000bae600083018562000b86565b62000bbd602083018462000b86565b9392505050565b62000bcf8162000995565b82525050565b600060208201905062000bec600083018462000bc4565b92915050565b60805160a05161433062000c576000396000818161125401528181611cbb01528181612382015281816123d50152818161242c015281816124f001526134360152600081816115c401528181612a7101528181612b530152612d3201526143306000f3fe6080604052600436106102975760003560e01c806367ac77b41161015a578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e1461097f578063e53c30b0146109bc578063e632313c146109e7578063f2fde38b14610a10578063f84ba65d14610a39578063ffb54a9914610a625761029e565b8063a9059cbb14610871578063c9567bf9146108ae578063ca33e64c146108c5578063cf703bb9146108f0578063d51ed1c814610919578063dd395c63146109565761029e565b806378109e541161011357806378109e54146107715780637d1db4a51461079c578063893d20e8146107c75780638da5cb5b146107f257806395d89b411461081d5780639b928c2f146108485761029e565b806367ac77b41461069957806367c45349146106c457806370a08231146106db578063715018a614610718578063751039fc1461072f57806375f0a874146107465761029e565b80632b112e49116101fe57806349bd5a5e116101b757806349bd5a5e1461059f5780634dd0e4d3146105ca57806351bc3c85146105f3578063571ac8b01461060a5780635c85974f14610647578063658d4b7f146106705761029e565b80632b112e49146104b15780632e8fa821146104dc578063313ce56714610507578063364333f4146105325780633705b3921461054957806346e421a2146105745761029e565b806318160ddd1161025057806318160ddd146103b55780631e25dc54146103e05780631f7347871461040b578063201e79911461042257806323b872dd1461044b57806329e04b4a146104885761029e565b8063026f7d15146102a35780630445b667146102ce57806306fdde03146102f9578063095ea7b3146103245780631600d30214610361578063180b0d7e1461038a5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610a8d565b6040516102c5919061351e565b60405180910390f35b3480156102da57600080fd5b506102e3610a93565b6040516102f0919061351e565b60405180910390f35b34801561030557600080fd5b5061030e610a99565b60405161031b91906135c9565b60405180910390f35b34801561033057600080fd5b5061034b6004803603810190610346919061367a565b610ab9565b60405161035891906136d5565b60405180910390f35b34801561036d57600080fd5b50610388600480360381019061038391906136f0565b610bab565b005b34801561039657600080fd5b5061039f610d56565b6040516103ac919061351e565b60405180910390f35b3480156103c157600080fd5b506103ca610d5c565b6040516103d7919061351e565b60405180910390f35b3480156103ec57600080fd5b506103f5610d66565b604051610402919061351e565b60405180910390f35b34801561041757600080fd5b50610420610d6c565b005b34801561042e57600080fd5b506104496004803603810190610444919061371d565b610e25565b005b34801561045757600080fd5b50610472600480360381019061046d919061375d565b610ece565b60405161047f91906136d5565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa91906137b0565b6110ce565b005b3480156104bd57600080fd5b506104c6611187565b6040516104d3919061351e565b60405180910390f35b3480156104e857600080fd5b506104f16111c8565b6040516104fe919061351e565b60405180910390f35b34801561051357600080fd5b5061051c6111ce565b60405161052991906137f9565b60405180910390f35b34801561053e57600080fd5b506105476111d7565b005b34801561055557600080fd5b5061055e611246565b60405161056b919061351e565b60405180910390f35b34801561058057600080fd5b5061058961124c565b604051610596919061351e565b60405180910390f35b3480156105ab57600080fd5b506105b4611252565b6040516105c19190613823565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec91906137b0565b611276565b005b3480156105ff57600080fd5b5061060861135b565b005b34801561061657600080fd5b50610631600480360381019061062c91906136f0565b6113fc565b60405161063e91906136d5565b60405180910390f35b34801561065357600080fd5b5061066e600480360381019061066991906137b0565b61142f565b005b34801561067c57600080fd5b506106976004803603810190610692919061386a565b6114d0565b005b3480156106a557600080fd5b506106ae6115c2565b6040516106bb9190613909565b60405180910390f35b3480156106d057600080fd5b506106d96115e6565b005b3480156106e757600080fd5b5061070260048036038101906106fd91906136f0565b6116bf565b60405161070f919061351e565b60405180910390f35b34801561072457600080fd5b5061072d611708565b005b34801561073b57600080fd5b50610744611860565b005b34801561075257600080fd5b5061075b611913565b6040516107689190613823565b60405180910390f35b34801561077d57600080fd5b50610786611937565b604051610793919061351e565b60405180910390f35b3480156107a857600080fd5b506107b161193d565b6040516107be919061351e565b60405180910390f35b3480156107d357600080fd5b506107dc611943565b6040516107e99190613823565b60405180910390f35b3480156107fe57600080fd5b50610807611952565b6040516108149190613823565b60405180910390f35b34801561082957600080fd5b5061083261197c565b60405161083f91906135c9565b60405180910390f35b34801561085457600080fd5b5061086f600480360381019061086a9190613924565b6119b9565b005b34801561087d57600080fd5b506108986004803603810190610893919061367a565b611ac6565b6040516108a591906136d5565b60405180910390f35b3480156108ba57600080fd5b506108c3611adb565b005b3480156108d157600080fd5b506108da611b96565b6040516108e79190613823565b60405180910390f35b3480156108fc57600080fd5b50610917600480360381019061091291906137b0565b611bbc565b005b34801561092557600080fd5b50610940600480360381019061093b91906137b0565b611ca1565b60405161094d919061351e565b60405180910390f35b34801561096257600080fd5b5061097d6004803603810190610978919061386a565b611d11565b005b34801561098b57600080fd5b506109a660048036038101906109a19190613977565b611e03565b6040516109b3919061351e565b60405180910390f35b3480156109c857600080fd5b506109d1611e8a565b6040516109de919061351e565b60405180910390f35b3480156109f357600080fd5b50610a0e6004803603810190610a0991906137b0565b611e90565b005b348015610a1c57600080fd5b50610a376004803603810190610a3291906136f0565b611f62565b005b348015610a4557600080fd5b50610a606004803603810190610a5b919061386a565b612128565b005b348015610a6e57600080fd5b50610a7761221a565b604051610a8491906136d5565b60405180910390f35b60065481565b600a5481565b60606040518060600160405280602181526020016142da60219139905090565b600081600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b99919061351e565b60405180910390a36001905092915050565b610bb361222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3990613a03565b60405180910390fd5b6000601060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6000600154905090565b60085481565b610d7461222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90613a03565b60405180910390fd5b6002600481905550600160058190555060016006819055506001600781905550565b610e2d61222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390613a03565b60405180910390fd5b81601481905550806015819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110ba57611039826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122359092919063ffffffff16565b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6110c584848461228a565b90509392505050565b6110d661222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c90613a03565b60405180910390fd5b6012600a6111739190613b85565b8161117e9190613bd0565b600a8190555050565b60006111c361119660006116bf565b6111b56111a461dead6116bf565b60015461294190919063ffffffff16565b61294190919063ffffffff16565b905090565b600b5481565b60006012905090565b600047905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611242573d6000803e3d6000fd5b5050565b60045481565b60055481565b7f000000000000000000000000000000000000000000000000000000000000000081565b61127e61222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613a03565b60405180910390fd5b6019811115611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890613c5e565b60405180910390fd5b8060048190555050565b61136361222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e990613a03565b60405180910390fd5b6113fa612957565b565b6000611428827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ab9565b9050919050565b61143761222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd90613a03565b60405180910390fd5b8060028190555050565b6114d861222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90613a03565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b6115ee61222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167490613a03565b60405180910390fd5b6000600b5490506000600a54905047600b8190555047600a819055506000600b5411156116ad576116ac612957565b5b81600b8190555080600a819055505050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61171061222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613a03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61186861222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee90613a03565b60405180910390fd5b6001546002819055506001546003819055506000600a81905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60025481565b600061194d611952565b905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f584d415300000000000000000000000000000000000000000000000000000000815250905090565b6119c161222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4790613a03565b60405180910390fd5b60008284611a5e9190613c7e565b90506019811115611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90613c5e565b60405180910390fd5b8360058190555082600681905550806007819055508160098190555050505050565b6000611ad333848461228a565b905092915050565b611ae361222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990613a03565b60405180910390fd5b6001601660006101000a81548160ff02191690831515021790555043601781905550565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bc461222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a90613a03565b60405180910390fd5b600a811115611c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8e90613cfe565b60405180910390fd5b8060088190555050565b6000611d0a611cae611187565b611cfc611ced6002611cdf7f00000000000000000000000000000000000000000000000000000000000000006116bf565b612e5e90919063ffffffff16565b85612e5e90919063ffffffff16565b612e7490919063ffffffff16565b9050919050565b611d1961222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9f90613a03565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b611e9861222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e90613a03565b60405180910390fd5b600a54811115611f3f57600a54600b81905550611f5f565b6012600a611f4d9190613b85565b81611f589190613bd0565b600b819055505b50565b611f6a61222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff090613a03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205f90613d90565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61213061222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b690613a03565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b600033905090565b600083831115829061227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227491906135c9565b60405180910390fd5b5082840390509392505050565b6000601860009054906101000a900460ff16156122b3576122ac848484612e8a565b905061293a565b6122bb611952565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561232957506122f9611952565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561237e57601660009054906101000a900460ff1661237d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237490613dfc565b60405180910390fd5b5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561247b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b90503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156124e7575061dead73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561253f57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612597575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156125f15750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156126a7576000612601866116bf565b9050601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126a55760035485826126639190613c7e565b11156126a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269b90613e8e565b60405180910390fd5b5b505b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661270357612702868561305d565b5b61278c846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122359092919063ffffffff16565b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600084905081156127f757600060085411156127f2576127ef87866130fa565b90505b61282f565b61280087613263565b61280a5784612816565b6128158786856132ba565b5b9050612820613432565b1561282e5761282d612957565b5b5b6000600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061288682826134ef90919063ffffffff16565b905080600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612929919061351e565b60405180910390a360019450505050505b9392505050565b6000818361294f9190613eae565b905092915050565b6001601860006101000a81548160ff0219169083151502179055506000600554905060006129b760026129a960075461299b86600b54612e5e90919063ffffffff16565b612e7490919063ffffffff16565b612e7490919063ffffffff16565b905060006129d082600b5461294190919063ffffffff16565b90506000600267ffffffffffffffff8111156129ef576129ee613ee2565b5b604051908082528060200260200182016040528015612a1d5781602001602082028036833780820191505090505b5090503081600081518110612a3557612a34613f11565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afe9190613f55565b81600181518110612b1257612b11613f11565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060004790507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612bb395949392919061407b565b600060405180830381600087803b158015612bcd57600080fd5b505af1158015612be1573d6000803e3d6000fd5b505050506000612bfa824761294190919063ffffffff16565b90506000612c26612c15600289612e7490919063ffffffff16565b60075461294190919063ffffffff16565b90506000612c646002612c5684612c4860055488612e5e90919063ffffffff16565b612e7490919063ffffffff16565b612e7490919063ffffffff16565b90506000612c8f83612c8160065487612e5e90919063ffffffff16565b612e7490919063ffffffff16565b905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612cdc90614106565b600060405180830381858888f193505050503d8060008114612d1a576040519150601f19603f3d011682016040523d82523d6000602084013e612d1f565b606091505b50509050600090506000891115612e37577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612db79695949392919061411b565b60606040518083038185885af1158015612dd5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dfa9190614191565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a604051612e2e9291906141e4565b60405180910390a15b505050505050505050506000601860006101000a81548160ff021916908315150217905550565b60008183612e6c9190613bd0565b905092915050565b60008183612e82919061423c565b905092915050565b6000612f15826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122359092919063ffffffff16565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612faa82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134ef90919063ffffffff16565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161304a919061351e565b60405180910390a3600190509392505050565b600254811115806130b75750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ed906142b9565b60405180910390fd5b5050565b6000806008549050600061314a60646009546131169190613bd0565b61313c606461312e8689612e5e90919063ffffffff16565b612e5e90919063ffffffff16565b612e7490919063ffffffff16565b905061319e81600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134ef90919063ffffffff16565b600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161323e919061351e565b60405180910390a3613259818561294190919063ffffffff16565b9250505092915050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080826132ca576004546132ce565b6007545b9050600061331860646009546132e49190613bd0565b61330a60646132fc868a612e5e90919063ffffffff16565b612e5e90919063ffffffff16565b612e7490919063ffffffff16565b905061336c81600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134ef90919063ffffffff16565b600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161340c919061351e565b60405180910390a3613427818661294190919063ffffffff16565b925050509392505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561349d5750601860009054906101000a900460ff16155b80156134ea5750600a54600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b600081836134fd9190613c7e565b905092915050565b6000819050919050565b61351881613505565b82525050565b6000602082019050613533600083018461350f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613573578082015181840152602081019050613558565b60008484015250505050565b6000601f19601f8301169050919050565b600061359b82613539565b6135a58185613544565b93506135b5818560208601613555565b6135be8161357f565b840191505092915050565b600060208201905081810360008301526135e38184613590565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061361b826135f0565b9050919050565b61362b81613610565b811461363657600080fd5b50565b60008135905061364881613622565b92915050565b61365781613505565b811461366257600080fd5b50565b6000813590506136748161364e565b92915050565b60008060408385031215613691576136906135eb565b5b600061369f85828601613639565b92505060206136b085828601613665565b9150509250929050565b60008115159050919050565b6136cf816136ba565b82525050565b60006020820190506136ea60008301846136c6565b92915050565b600060208284031215613706576137056135eb565b5b600061371484828501613639565b91505092915050565b60008060408385031215613734576137336135eb565b5b600061374285828601613665565b925050602061375385828601613665565b9150509250929050565b600080600060608486031215613776576137756135eb565b5b600061378486828701613639565b935050602061379586828701613639565b92505060406137a686828701613665565b9150509250925092565b6000602082840312156137c6576137c56135eb565b5b60006137d484828501613665565b91505092915050565b600060ff82169050919050565b6137f3816137dd565b82525050565b600060208201905061380e60008301846137ea565b92915050565b61381d81613610565b82525050565b60006020820190506138386000830184613814565b92915050565b613847816136ba565b811461385257600080fd5b50565b6000813590506138648161383e565b92915050565b60008060408385031215613881576138806135eb565b5b600061388f85828601613639565b92505060206138a085828601613855565b9150509250929050565b6000819050919050565b60006138cf6138ca6138c5846135f0565b6138aa565b6135f0565b9050919050565b60006138e1826138b4565b9050919050565b60006138f3826138d6565b9050919050565b613903816138e8565b82525050565b600060208201905061391e60008301846138fa565b92915050565b60008060006060848603121561393d5761393c6135eb565b5b600061394b86828701613665565b935050602061395c86828701613665565b925050604061396d86828701613665565b9150509250925092565b6000806040838503121561398e5761398d6135eb565b5b600061399c85828601613639565b92505060206139ad85828601613639565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139ed602083613544565b91506139f8826139b7565b602082019050919050565b60006020820190508181036000830152613a1c816139e0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613aa957808604811115613a8557613a84613a23565b5b6001851615613a945780820291505b8081029050613aa285613a52565b9450613a69565b94509492505050565b600082613ac25760019050613b7e565b81613ad05760009050613b7e565b8160018114613ae65760028114613af057613b1f565b6001915050613b7e565b60ff841115613b0257613b01613a23565b5b8360020a915084821115613b1957613b18613a23565b5b50613b7e565b5060208310610133831016604e8410600b8410161715613b545782820a905083811115613b4f57613b4e613a23565b5b613b7e565b613b618484846001613a5f565b92509050818404811115613b7857613b77613a23565b5b81810290505b9392505050565b6000613b9082613505565b9150613b9b836137dd565b9250613bc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613ab2565b905092915050565b6000613bdb82613505565b9150613be683613505565b9250828202613bf481613505565b91508282048414831517613c0b57613c0a613a23565b5b5092915050565b7f4665652063616e6e6f742062652074686973206c617267650000000000000000600082015250565b6000613c48601883613544565b9150613c5382613c12565b602082019050919050565b60006020820190508181036000830152613c7781613c3b565b9050919050565b6000613c8982613505565b9150613c9483613505565b9250828201905080821115613cac57613cab613a23565b5b92915050565b7f4665652063616e6e6f74206265206d6f7265207468616e203130250000000000600082015250565b6000613ce8601b83613544565b9150613cf382613cb2565b602082019050919050565b60006020820190508181036000830152613d1781613cdb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d7a602683613544565b9150613d8582613d1e565b604082019050919050565b60006020820190508181036000830152613da981613d6d565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000613de6601483613544565b9150613df182613db0565b602082019050919050565b60006020820190508181036000830152613e1581613dd9565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000613e78603e83613544565b9150613e8382613e1c565b604082019050919050565b60006020820190508181036000830152613ea781613e6b565b9050919050565b6000613eb982613505565b9150613ec483613505565b9250828203905081811115613edc57613edb613a23565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f4f81613622565b92915050565b600060208284031215613f6b57613f6a6135eb565b5b6000613f7984828501613f40565b91505092915050565b6000819050919050565b6000613fa7613fa2613f9d84613f82565b6138aa565b613505565b9050919050565b613fb781613f8c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ff281613610565b82525050565b60006140048383613fe9565b60208301905092915050565b6000602082019050919050565b600061402882613fbd565b6140328185613fc8565b935061403d83613fd9565b8060005b8381101561406e5781516140558882613ff8565b975061406083614010565b925050600181019050614041565b5085935050505092915050565b600060a082019050614090600083018861350f565b61409d6020830187613fae565b81810360408301526140af818661401d565b90506140be6060830185613814565b6140cb608083018461350f565b9695505050505050565b600081905092915050565b50565b60006140f06000836140d5565b91506140fb826140e0565b600082019050919050565b6000614111826140e3565b9150819050919050565b600060c0820190506141306000830189613814565b61413d602083018861350f565b61414a6040830187613fae565b6141576060830186613fae565b6141646080830185613814565b61417160a083018461350f565b979650505050505050565b60008151905061418b8161364e565b92915050565b6000806000606084860312156141aa576141a96135eb565b5b60006141b88682870161417c565b93505060206141c98682870161417c565b92505060406141da8682870161417c565b9150509250925092565b60006040820190506141f9600083018561350f565b614206602083018461350f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061424782613505565b915061425283613505565b9250826142625761426161420d565b5b828204905092915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006142a3601183613544565b91506142ae8261426d565b602082019050919050565b600060208201905081810360008301526142d281614296565b905091905056fe456c6f6e4f62616d6150657065566974616c696b5472756d7053616e7461496e75a264697066735822122013add9ae1dc5895f8a600310fb18e35d86e6b1b051a2368ed0e90e607bc8445b64736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102975760003560e01c806367ac77b41161015a578063a9059cbb116100c1578063dd62ed3e1161007a578063dd62ed3e1461097f578063e53c30b0146109bc578063e632313c146109e7578063f2fde38b14610a10578063f84ba65d14610a39578063ffb54a9914610a625761029e565b8063a9059cbb14610871578063c9567bf9146108ae578063ca33e64c146108c5578063cf703bb9146108f0578063d51ed1c814610919578063dd395c63146109565761029e565b806378109e541161011357806378109e54146107715780637d1db4a51461079c578063893d20e8146107c75780638da5cb5b146107f257806395d89b411461081d5780639b928c2f146108485761029e565b806367ac77b41461069957806367c45349146106c457806370a08231146106db578063715018a614610718578063751039fc1461072f57806375f0a874146107465761029e565b80632b112e49116101fe57806349bd5a5e116101b757806349bd5a5e1461059f5780634dd0e4d3146105ca57806351bc3c85146105f3578063571ac8b01461060a5780635c85974f14610647578063658d4b7f146106705761029e565b80632b112e49146104b15780632e8fa821146104dc578063313ce56714610507578063364333f4146105325780633705b3921461054957806346e421a2146105745761029e565b806318160ddd1161025057806318160ddd146103b55780631e25dc54146103e05780631f7347871461040b578063201e79911461042257806323b872dd1461044b57806329e04b4a146104885761029e565b8063026f7d15146102a35780630445b667146102ce57806306fdde03146102f9578063095ea7b3146103245780631600d30214610361578063180b0d7e1461038a5761029e565b3661029e57005b600080fd5b3480156102af57600080fd5b506102b8610a8d565b6040516102c5919061351e565b60405180910390f35b3480156102da57600080fd5b506102e3610a93565b6040516102f0919061351e565b60405180910390f35b34801561030557600080fd5b5061030e610a99565b60405161031b91906135c9565b60405180910390f35b34801561033057600080fd5b5061034b6004803603810190610346919061367a565b610ab9565b60405161035891906136d5565b60405180910390f35b34801561036d57600080fd5b50610388600480360381019061038391906136f0565b610bab565b005b34801561039657600080fd5b5061039f610d56565b6040516103ac919061351e565b60405180910390f35b3480156103c157600080fd5b506103ca610d5c565b6040516103d7919061351e565b60405180910390f35b3480156103ec57600080fd5b506103f5610d66565b604051610402919061351e565b60405180910390f35b34801561041757600080fd5b50610420610d6c565b005b34801561042e57600080fd5b506104496004803603810190610444919061371d565b610e25565b005b34801561045757600080fd5b50610472600480360381019061046d919061375d565b610ece565b60405161047f91906136d5565b60405180910390f35b34801561049457600080fd5b506104af60048036038101906104aa91906137b0565b6110ce565b005b3480156104bd57600080fd5b506104c6611187565b6040516104d3919061351e565b60405180910390f35b3480156104e857600080fd5b506104f16111c8565b6040516104fe919061351e565b60405180910390f35b34801561051357600080fd5b5061051c6111ce565b60405161052991906137f9565b60405180910390f35b34801561053e57600080fd5b506105476111d7565b005b34801561055557600080fd5b5061055e611246565b60405161056b919061351e565b60405180910390f35b34801561058057600080fd5b5061058961124c565b604051610596919061351e565b60405180910390f35b3480156105ab57600080fd5b506105b4611252565b6040516105c19190613823565b60405180910390f35b3480156105d657600080fd5b506105f160048036038101906105ec91906137b0565b611276565b005b3480156105ff57600080fd5b5061060861135b565b005b34801561061657600080fd5b50610631600480360381019061062c91906136f0565b6113fc565b60405161063e91906136d5565b60405180910390f35b34801561065357600080fd5b5061066e600480360381019061066991906137b0565b61142f565b005b34801561067c57600080fd5b506106976004803603810190610692919061386a565b6114d0565b005b3480156106a557600080fd5b506106ae6115c2565b6040516106bb9190613909565b60405180910390f35b3480156106d057600080fd5b506106d96115e6565b005b3480156106e757600080fd5b5061070260048036038101906106fd91906136f0565b6116bf565b60405161070f919061351e565b60405180910390f35b34801561072457600080fd5b5061072d611708565b005b34801561073b57600080fd5b50610744611860565b005b34801561075257600080fd5b5061075b611913565b6040516107689190613823565b60405180910390f35b34801561077d57600080fd5b50610786611937565b604051610793919061351e565b60405180910390f35b3480156107a857600080fd5b506107b161193d565b6040516107be919061351e565b60405180910390f35b3480156107d357600080fd5b506107dc611943565b6040516107e99190613823565b60405180910390f35b3480156107fe57600080fd5b50610807611952565b6040516108149190613823565b60405180910390f35b34801561082957600080fd5b5061083261197c565b60405161083f91906135c9565b60405180910390f35b34801561085457600080fd5b5061086f600480360381019061086a9190613924565b6119b9565b005b34801561087d57600080fd5b506108986004803603810190610893919061367a565b611ac6565b6040516108a591906136d5565b60405180910390f35b3480156108ba57600080fd5b506108c3611adb565b005b3480156108d157600080fd5b506108da611b96565b6040516108e79190613823565b60405180910390f35b3480156108fc57600080fd5b50610917600480360381019061091291906137b0565b611bbc565b005b34801561092557600080fd5b50610940600480360381019061093b91906137b0565b611ca1565b60405161094d919061351e565b60405180910390f35b34801561096257600080fd5b5061097d6004803603810190610978919061386a565b611d11565b005b34801561098b57600080fd5b506109a660048036038101906109a19190613977565b611e03565b6040516109b3919061351e565b60405180910390f35b3480156109c857600080fd5b506109d1611e8a565b6040516109de919061351e565b60405180910390f35b3480156109f357600080fd5b50610a0e6004803603810190610a0991906137b0565b611e90565b005b348015610a1c57600080fd5b50610a376004803603810190610a3291906136f0565b611f62565b005b348015610a4557600080fd5b50610a606004803603810190610a5b919061386a565b612128565b005b348015610a6e57600080fd5b50610a7761221a565b604051610a8491906136d5565b60405180910390f35b60065481565b600a5481565b60606040518060600160405280602181526020016142da60219139905090565b600081600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610b99919061351e565b60405180910390a36001905092915050565b610bb361222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3990613a03565b60405180910390fd5b6000601060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60095481565b6000600154905090565b60085481565b610d7461222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfa90613a03565b60405180910390fd5b6002600481905550600160058190555060016006819055506001600781905550565b610e2d61222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ebc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb390613a03565b60405180910390fd5b81601481905550806015819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146110ba57611039826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122359092919063ffffffff16565b600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6110c584848461228a565b90509392505050565b6110d661222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115c90613a03565b60405180910390fd5b6012600a6111739190613b85565b8161117e9190613bd0565b600a8190555050565b60006111c361119660006116bf565b6111b56111a461dead6116bf565b60015461294190919063ffffffff16565b61294190919063ffffffff16565b905090565b600b5481565b60006012905090565b600047905060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611242573d6000803e3d6000fd5b5050565b60045481565b60055481565b7f00000000000000000000000025d391009d33d47fb5733548003f5a84d3f4815181565b61127e61222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461130d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161130490613a03565b60405180910390fd5b6019811115611351576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134890613c5e565b60405180910390fd5b8060048190555050565b61136361222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e990613a03565b60405180910390fd5b6113fa612957565b565b6000611428827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610ab9565b9050919050565b61143761222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114bd90613a03565b60405180910390fd5b8060028190555050565b6114d861222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611567576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155e90613a03565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6115ee61222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461167d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167490613a03565b60405180910390fd5b6000600b5490506000600a54905047600b8190555047600a819055506000600b5411156116ad576116ac612957565b5b81600b8190555080600a819055505050565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61171061222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461179f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179690613a03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61186861222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ee90613a03565b60405180910390fd5b6001546002819055506001546003819055506000600a81905550565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b60025481565b600061194d611952565b905090565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f584d415300000000000000000000000000000000000000000000000000000000815250905090565b6119c161222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4790613a03565b60405180910390fd5b60008284611a5e9190613c7e565b90506019811115611aa4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9b90613c5e565b60405180910390fd5b8360058190555082600681905550806007819055508160098190555050505050565b6000611ad333848461228a565b905092915050565b611ae361222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6990613a03565b60405180910390fd5b6001601660006101000a81548160ff02191690831515021790555043601781905550565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611bc461222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4a90613a03565b60405180910390fd5b600a811115611c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8e90613cfe565b60405180910390fd5b8060088190555050565b6000611d0a611cae611187565b611cfc611ced6002611cdf7f00000000000000000000000025d391009d33d47fb5733548003f5a84d3f481516116bf565b612e5e90919063ffffffff16565b85612e5e90919063ffffffff16565b612e7490919063ffffffff16565b9050919050565b611d1961222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611da8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d9f90613a03565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60075481565b611e9861222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e90613a03565b60405180910390fd5b600a54811115611f3f57600a54600b81905550611f5f565b6012600a611f4d9190613b85565b81611f589190613bd0565b600b819055505b50565b611f6a61222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ff9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff090613a03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612068576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205f90613d90565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61213061222d565b73ffffffffffffffffffffffffffffffffffffffff16600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146121bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b690613a03565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601660009054906101000a900460ff1681565b600033905090565b600083831115829061227d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227491906135c9565b60405180910390fd5b5082840390509392505050565b6000601860009054906101000a900460ff16156122b3576122ac848484612e8a565b905061293a565b6122bb611952565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561232957506122f9611952565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561237e57601660009054906101000a900460ff1661237d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161237490613dfc565b60405180910390fd5b5b60007f00000000000000000000000025d391009d33d47fb5733548003f5a84d3f4815173ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614905060007f00000000000000000000000025d391009d33d47fb5733548003f5a84d3f4815173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415801561247b57507f00000000000000000000000025d391009d33d47fb5733548003f5a84d3f4815173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b90503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156124e7575061dead73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561253f57507f00000000000000000000000025d391009d33d47fb5733548003f5a84d3f4815173ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015612597575060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b80156125f15750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156126a7576000612601866116bf565b9050601260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166126a55760035485826126639190613c7e565b11156126a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269b90613e8e565b60405180910390fd5b5b505b601160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661270357612702868561305d565b5b61278c846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122359092919063ffffffff16565b600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600084905081156127f757600060085411156127f2576127ef87866130fa565b90505b61282f565b61280087613263565b61280a5784612816565b6128158786856132ba565b5b9050612820613432565b1561282e5761282d612957565b5b5b6000600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061288682826134ef90919063ffffffff16565b905080600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612929919061351e565b60405180910390a360019450505050505b9392505050565b6000818361294f9190613eae565b905092915050565b6001601860006101000a81548160ff0219169083151502179055506000600554905060006129b760026129a960075461299b86600b54612e5e90919063ffffffff16565b612e7490919063ffffffff16565b612e7490919063ffffffff16565b905060006129d082600b5461294190919063ffffffff16565b90506000600267ffffffffffffffff8111156129ef576129ee613ee2565b5b604051908082528060200260200182016040528015612a1d5781602001602082028036833780820191505090505b5090503081600081518110612a3557612a34613f11565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ada573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612afe9190613f55565b81600181518110612b1257612b11613f11565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060004790507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b8152600401612bb395949392919061407b565b600060405180830381600087803b158015612bcd57600080fd5b505af1158015612be1573d6000803e3d6000fd5b505050506000612bfa824761294190919063ffffffff16565b90506000612c26612c15600289612e7490919063ffffffff16565b60075461294190919063ffffffff16565b90506000612c646002612c5684612c4860055488612e5e90919063ffffffff16565b612e7490919063ffffffff16565b612e7490919063ffffffff16565b90506000612c8f83612c8160065487612e5e90919063ffffffff16565b612e7490919063ffffffff16565b905060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612cdc90614106565b600060405180830381858888f193505050503d8060008114612d1a576040519150601f19603f3d011682016040523d82523d6000602084013e612d1f565b606091505b50509050600090506000891115612e37577f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d71984308c600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612db79695949392919061411b565b60606040518083038185885af1158015612dd5573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612dfa9190614191565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506838a604051612e2e9291906141e4565b60405180910390a15b505050505050505050506000601860006101000a81548160ff021916908315150217905550565b60008183612e6c9190613bd0565b905092915050565b60008183612e82919061423c565b905092915050565b6000612f15826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546122359092919063ffffffff16565b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612faa82600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134ef90919063ffffffff16565b600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161304a919061351e565b60405180910390a3600190509392505050565b600254811115806130b75750601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6130f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130ed906142b9565b60405180910390fd5b5050565b6000806008549050600061314a60646009546131169190613bd0565b61313c606461312e8689612e5e90919063ffffffff16565b612e5e90919063ffffffff16565b612e7490919063ffffffff16565b905061319e81600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134ef90919063ffffffff16565b600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161323e919061351e565b60405180910390a3613259818561294190919063ffffffff16565b9250505092915050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080826132ca576004546132ce565b6007545b9050600061331860646009546132e49190613bd0565b61330a60646132fc868a612e5e90919063ffffffff16565b612e5e90919063ffffffff16565b612e7490919063ffffffff16565b905061336c81600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134ef90919063ffffffff16565b600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161340c919061351e565b60405180910390a3613427818661294190919063ffffffff16565b925050509392505050565b60007f00000000000000000000000025d391009d33d47fb5733548003f5a84d3f4815173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561349d5750601860009054906101000a900460ff16155b80156134ea5750600a54600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b600081836134fd9190613c7e565b905092915050565b6000819050919050565b61351881613505565b82525050565b6000602082019050613533600083018461350f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613573578082015181840152602081019050613558565b60008484015250505050565b6000601f19601f8301169050919050565b600061359b82613539565b6135a58185613544565b93506135b5818560208601613555565b6135be8161357f565b840191505092915050565b600060208201905081810360008301526135e38184613590565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061361b826135f0565b9050919050565b61362b81613610565b811461363657600080fd5b50565b60008135905061364881613622565b92915050565b61365781613505565b811461366257600080fd5b50565b6000813590506136748161364e565b92915050565b60008060408385031215613691576136906135eb565b5b600061369f85828601613639565b92505060206136b085828601613665565b9150509250929050565b60008115159050919050565b6136cf816136ba565b82525050565b60006020820190506136ea60008301846136c6565b92915050565b600060208284031215613706576137056135eb565b5b600061371484828501613639565b91505092915050565b60008060408385031215613734576137336135eb565b5b600061374285828601613665565b925050602061375385828601613665565b9150509250929050565b600080600060608486031215613776576137756135eb565b5b600061378486828701613639565b935050602061379586828701613639565b92505060406137a686828701613665565b9150509250925092565b6000602082840312156137c6576137c56135eb565b5b60006137d484828501613665565b91505092915050565b600060ff82169050919050565b6137f3816137dd565b82525050565b600060208201905061380e60008301846137ea565b92915050565b61381d81613610565b82525050565b60006020820190506138386000830184613814565b92915050565b613847816136ba565b811461385257600080fd5b50565b6000813590506138648161383e565b92915050565b60008060408385031215613881576138806135eb565b5b600061388f85828601613639565b92505060206138a085828601613855565b9150509250929050565b6000819050919050565b60006138cf6138ca6138c5846135f0565b6138aa565b6135f0565b9050919050565b60006138e1826138b4565b9050919050565b60006138f3826138d6565b9050919050565b613903816138e8565b82525050565b600060208201905061391e60008301846138fa565b92915050565b60008060006060848603121561393d5761393c6135eb565b5b600061394b86828701613665565b935050602061395c86828701613665565b925050604061396d86828701613665565b9150509250925092565b6000806040838503121561398e5761398d6135eb565b5b600061399c85828601613639565b92505060206139ad85828601613639565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139ed602083613544565b91506139f8826139b7565b602082019050919050565b60006020820190508181036000830152613a1c816139e0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115613aa957808604811115613a8557613a84613a23565b5b6001851615613a945780820291505b8081029050613aa285613a52565b9450613a69565b94509492505050565b600082613ac25760019050613b7e565b81613ad05760009050613b7e565b8160018114613ae65760028114613af057613b1f565b6001915050613b7e565b60ff841115613b0257613b01613a23565b5b8360020a915084821115613b1957613b18613a23565b5b50613b7e565b5060208310610133831016604e8410600b8410161715613b545782820a905083811115613b4f57613b4e613a23565b5b613b7e565b613b618484846001613a5f565b92509050818404811115613b7857613b77613a23565b5b81810290505b9392505050565b6000613b9082613505565b9150613b9b836137dd565b9250613bc87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613ab2565b905092915050565b6000613bdb82613505565b9150613be683613505565b9250828202613bf481613505565b91508282048414831517613c0b57613c0a613a23565b5b5092915050565b7f4665652063616e6e6f742062652074686973206c617267650000000000000000600082015250565b6000613c48601883613544565b9150613c5382613c12565b602082019050919050565b60006020820190508181036000830152613c7781613c3b565b9050919050565b6000613c8982613505565b9150613c9483613505565b9250828201905080821115613cac57613cab613a23565b5b92915050565b7f4665652063616e6e6f74206265206d6f7265207468616e203130250000000000600082015250565b6000613ce8601b83613544565b9150613cf382613cb2565b602082019050919050565b60006020820190508181036000830152613d1781613cdb565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613d7a602683613544565b9150613d8582613d1e565b604082019050919050565b60006020820190508181036000830152613da981613d6d565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000613de6601483613544565b9150613df182613db0565b602082019050919050565b60006020820190508181036000830152613e1581613dd9565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c20796f752063616e206e6f74206275792074686174206d7563682e0000602082015250565b6000613e78603e83613544565b9150613e8382613e1c565b604082019050919050565b60006020820190508181036000830152613ea781613e6b565b9050919050565b6000613eb982613505565b9150613ec483613505565b9250828203905081811115613edc57613edb613a23565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050613f4f81613622565b92915050565b600060208284031215613f6b57613f6a6135eb565b5b6000613f7984828501613f40565b91505092915050565b6000819050919050565b6000613fa7613fa2613f9d84613f82565b6138aa565b613505565b9050919050565b613fb781613f8c565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613ff281613610565b82525050565b60006140048383613fe9565b60208301905092915050565b6000602082019050919050565b600061402882613fbd565b6140328185613fc8565b935061403d83613fd9565b8060005b8381101561406e5781516140558882613ff8565b975061406083614010565b925050600181019050614041565b5085935050505092915050565b600060a082019050614090600083018861350f565b61409d6020830187613fae565b81810360408301526140af818661401d565b90506140be6060830185613814565b6140cb608083018461350f565b9695505050505050565b600081905092915050565b50565b60006140f06000836140d5565b91506140fb826140e0565b600082019050919050565b6000614111826140e3565b9150819050919050565b600060c0820190506141306000830189613814565b61413d602083018861350f565b61414a6040830187613fae565b6141576060830186613fae565b6141646080830185613814565b61417160a083018461350f565b979650505050505050565b60008151905061418b8161364e565b92915050565b6000806000606084860312156141aa576141a96135eb565b5b60006141b88682870161417c565b93505060206141c98682870161417c565b92505060406141da8682870161417c565b9150509250925092565b60006040820190506141f9600083018561350f565b614206602083018461350f565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061424782613505565b915061425283613505565b9250826142625761426161420d565b5b828204905092915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006142a3601183613544565b91506142ae8261426d565b602082019050919050565b600060208201905081810360008301526142d281614296565b905091905056fe456c6f6e4f62616d6150657065566974616c696b5472756d7053616e7461496e75a264697066735822122013add9ae1dc5895f8a600310fb18e35d86e6b1b051a2368ed0e90e607bc8445b64736f6c63430008110033

Deployed Bytecode Sourcemap

12298:12504:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3095:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14535:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14958:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22784:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3047:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14267:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3003:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24638:159;;;;;;;;;;;;;:::i;:::-;;23406:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15476:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23027:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23598:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3171:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14361:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19783:153;;;;;;;;;;;;;:::i;:::-;;2799:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2844:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13059:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20684:157;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23996:72;;;;;;;;;;;;;:::i;:::-;;15182:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15854:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22389:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13002:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24076:386;;;;;;;;;;;;;:::i;:::-;;14706:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3837:148;;;;;;;;;;;;;:::i;:::-;;24470:160;;;;;;;;;;;;;:::i;:::-;;2369:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2732:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2665;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14620:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3623:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14446:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20254:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15312:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19967:118;;;;;;;;;;;;;:::i;:::-;;12874:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20093:153;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23748:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;22518:121;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14817:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2933:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23162:236;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3993:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;22647:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13106:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2888:38;;;;:::o;3095:61::-;;;;:::o;14535:79::-;14583:13;14607:4;;;;;;;;;;;;;;;;;14600:11;;14535:79;:::o;14958:216::-;15033:4;15085:6;15050:11;:23;15062:10;15050:23;;;;;;;;;;;;;;;:32;15074:7;15050:32;;;;;;;;;;;;;;;:41;;;;15128:7;15107:37;;15116:10;15107:37;;;15137:6;15107:37;;;;;;:::i;:::-;;;;;;;;15162:4;15155:11;;14958:216;;;;:::o;22784:235::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22908:5:::1;22877:11;:28;22889:15:::0;::::1;;;;;;;;;;22877:28;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;22959:4;22924:11;:32;22936:19;22924:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;22992:19;22974:15;::::0;:37:::1;;;;;;;;;;;;;;;;;;22784:235:::0;:::o;3047:39::-;;;;:::o;14267:88::-;14322:7;14340:12;;14333:19;;14267:88;:::o;3003:37::-;;;;:::o;24638:159::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24709:1:::1;24695:11;:15;;;;24733:1;24721:9;:13;;;;24761:1;24745:13;:17;;;;24788:1;24773:12;:16;;;;24638:159::o:0;23406:184::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23523:7:::1;23505:15;:25;;;;23570:12;23541:26;:41;;;;23406:184:::0;;:::o;15476:370::-;15576:4;15631:17;15596:11;:19;15608:6;15596:19;;;;;;;;;;;;;;;:31;15616:10;15596:31;;;;;;;;;;;;;;;;:52;15593:186;;15698:69;15734:6;15698:69;;;;;;;;;;;;;;;;;:11;:19;15710:6;15698:19;;;;;;;;;;;;;;;:31;15718:10;15698:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;15664:11;:19;15676:6;15664:19;;;;;;;;;;;;;;;:31;15684:10;15664:31;;;;;;;;;;;;;;;:103;;;;15593:186;15798:40;15812:6;15820:9;15831:6;15798:13;:40::i;:::-;15791:47;;15476:370;;;;;:::o;23027:127::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2586:2:::1;23134;:12;;;;:::i;:::-;23124:7;:22;;;;:::i;:::-;23108:13;:38;;;;23027:127:::0;:::o;23598:142::-;23651:7;23678:54;23716:15;12508:42;23716:9;:15::i;:::-;23678:33;23695:15;12435:42;23695:9;:15::i;:::-;23678:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;23671:61;;23598:142;:::o;3171:61::-;;;;:::o;14361:79::-;14413:5;2586:2;14422:15;;14361:79;:::o;19783:153::-;19832:17;19852:21;19832:41;;19892:15;;;;;;;;;;19884:33;;:44;19918:9;19884:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19821:115;19783:153::o;2799:38::-;;;;:::o;2844:37::-;;;;:::o;13059:38::-;;;:::o;20684:157::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20770:2:::1;20759:7;:13;;20751:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;20826:7;20812:11;:21;;;;20684:157:::0;:::o;23996:72::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24050:10:::1;:8;:10::i;:::-;23996:72::o:0;15182:122::-;15237:4;15261:35;15269:7;15278:17;15261:7;:35::i;:::-;15254:42;;15182:122;;;:::o;15854:97::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;15937:6:::1;15922:12;:21;;;;15854:97:::0;:::o;22389:121::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22496:6:::1;22474:11;:19;22486:6;22474:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22389:121:::0;;:::o;13002:50::-;;;:::o;24076:386::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24126:21:::1;24150:10;;24126:34;;24171:24;24198:13;;24171:40;;24235:21;24222:10;:34;;;;24283:21;24267:13;:37;;;;24333:1;24320:10;;:14;24317:56;;;24351:10;:8;:10::i;:::-;24317:56;24398:13;24385:10;:26;;;;24438:16;24422:13;:32;;;;24115:347;;24076:386::o:0;14706:105::-;14772:7;14790:9;:18;14800:7;14790:18;;;;;;;;;;;;;;;;14783:25;;14706:105;;;:::o;3837:148::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3944:1:::1;3907:40;;3928:6;;;;;;;;;;;3907:40;;;;;;;;;;;;3975:1;3958:6;;:19;;;;;;;;;;;;;;;;;;3837:148::o:0;24470:160::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;24541:12:::1;;24526;:27;;;;24582:12;;24564:15;:30;;;;24621:1;24605:13;:17;;;;24470:160::o:0;2369:75::-;;;;;;;;;;;;:::o;2732:60::-;;;;:::o;2665:::-;;;;:::o;14620:80::-;14672:7;14690;:5;:7::i;:::-;14683:14;;14620:80;:::o;3623:79::-;3661:7;3688:6;;;;;;;;;;;3681:13;;3623:79;:::o;14446:83::-;14496:13;14520:6;;;;;;;;;;;;;;;;;14513:13;;14446:83;:::o;20254:422::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20383:18:::1;20420:20;20404:13;:36;;;;:::i;:::-;20383:57;;20473:2;20459:10;:16;;20451:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;20529:13;20517:9;:25;;;;20569:20;20553:13;:36;;;;20615:10;20600:12;:25;;;;20653:15;20636:14;:32;;;;20372:304;20254:422:::0;;;:::o;15312:156::-;15392:4;15416:44;15430:10;15442:9;15453:6;15416:13;:44::i;:::-;15409:51;;15312:156;;;;:::o;19967:118::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20036:4:::1;20022:11;;:18;;;;;;;;;;;;;;;;;;20065:12;20051:11;:26;;;;19967:118::o:0;12874:36::-;;;;;;;;;;;;;:::o;20093:153::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20178:2:::1;20170:4;:10;;20162:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;20234:4;20223:8;:15;;;;20093:153:::0;:::o;23748:176::-;23816:7;23843:73;23893:22;:20;:22::i;:::-;23843:45;23856:31;23885:1;23856:24;23866:13;23856:9;:24::i;:::-;:28;;:31;;;;:::i;:::-;23843:8;:12;;:45;;;;:::i;:::-;:49;;:73;;;;:::i;:::-;23836:80;;23748:176;;;:::o;22518:121::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22625:6:::1;22603:11;:19;22615:6;22603:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;22518:121:::0;;:::o;14817:133::-;14901:7;14919:11;:19;14931:6;14919:19;;;;;;;;;;;;;;;:28;14939:7;14919:28;;;;;;;;;;;;;;;;14912:35;;14817:133;;;;:::o;2933:61::-;;;;:::o;23162:236::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;23247:13:::1;;23237:7;:23;23234:149;;;23290:13;;23277:10;:26;;;;23234:149;;;2586:2;23359;:12;;;;:::i;:::-;23349:7;:22;;;;:::i;:::-;23336:10;:35;;;;23234:149;23162:236:::0;:::o;3993:244::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4102:1:::1;4082:22;;:8;:22;;::::0;4074:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4192:8;4163:38;;4184:6;;;;;;;;;;;4163:38;;;;;;;;;;;;4221:8;4212:6;;:17;;;;;;;;;;;;;;;;;;3993:244:::0;:::o;22647:129::-;3760:12;:10;:12::i;:::-;3750:22;;:6;;;;;;;;;;;:22;;;3742:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;22762:6:::1;22736:15;:23;22752:6;22736:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;22647:129:::0;;:::o;13106:31::-;;;;;;;;;;;;;:::o;1990:98::-;2043:7;2070:10;2063:17;;1990:98;:::o;671:240::-;791:7;849:1;844;:6;;852:12;836:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;891:1;887;:5;880:12;;671:240;;;;;:::o;15959:2112::-;16051:4;16071:6;;;;;;;;;;;16068:63;;;16087:41;16102:6;16110:9;16121:6;16087:14;:41::i;:::-;16080:48;;;;16068:63;16156:7;:5;:7::i;:::-;16146:17;;:6;:17;;;;:41;;;;;16180:7;:5;:7::i;:::-;16167:20;;:9;:20;;;;16146:41;16143:115;;;16211:11;;;;;;;;;;;16203:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;16143:115;16270:11;16298:13;16285:26;;:9;:26;;;16270:42;;16323:15;16355:13;16342:26;;:9;:26;;;;:53;;;;;16382:13;16372:23;;:6;:23;;;;16342:53;16323:73;;16434:4;16413:26;;:9;:26;;;;:70;;;;;12435:42;16457:26;;:9;:26;;;;16413:70;:114;;;;;16514:13;16501:26;;:9;:26;;;;16413:114;:160;;;;;16558:15;;;;;;;;;;16545:28;;:9;:28;;;;16413:160;:211;;;;;16603:21;;;;;;;;;;;16590:34;;:9;:34;;;;16413:211;16409:485;;;16650:18;16671:20;16681:9;16671;:20::i;:::-;16650:41;;16710:11;:22;16722:9;16710:22;;;;;;;;;;;;;;;;;;;;;;;;;16706:177;;16786:15;;16775:6;16762:10;:19;;;;:::i;:::-;16761:40;;16753:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;16706:177;16635:259;16409:485;17116:15;:26;17132:9;17116:26;;;;;;;;;;;;;;;;;;;;;;;;;17112:87;;17159:28;17172:6;17180;17159:12;:28::i;:::-;17112:87;17258:53;17280:6;17258:53;;;;;;;;;;;;;;;;;:9;:17;17268:6;17258:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;17238:9;:17;17248:6;17238:17;;;;;;;;;;;;;;;:73;;;;17324:22;17349:6;17324:31;;17488:10;17485:318;;;17529:1;17518:8;;:12;17515:100;;;17568:31;17584:6;17592;17568:15;:31::i;:::-;17551:48;;17515:100;17485:318;;;17664:21;17678:6;17664:13;:21::i;:::-;:64;;17722:6;17664:64;;;17688:31;17696:6;17704;17712;17688:7;:31::i;:::-;17664:64;17647:81;;17760:16;:14;:16::i;:::-;17757:35;;;17779:10;:8;:10::i;:::-;17757:35;17485:318;17815:24;17842:9;:20;17852:9;17842:20;;;;;;;;;;;;;;;;17815:47;;17892:36;17913:14;17892:16;:20;;:36;;;;:::i;:::-;17873:55;;17964:16;17941:9;:20;17951:9;17941:20;;;;;;;;;;;;;;;:39;;;;18015:9;17998:43;;18007:6;17998:43;;;18026:14;17998:43;;;;;;:::i;:::-;;;;;;;;18059:4;18052:11;;;;;;15959:2112;;;;;;:::o;353:98::-;411:7;442:1;438;:5;;;;:::i;:::-;431:12;;353:98;;;;:::o;20849:1532::-;13225:4;13216:6;;:13;;;;;;;;;;;;;;;;;;20898:27:::1;20928:9;;20898:39;;20948:23;20974:60;21032:1;20974:53;21014:12;;20974:35;20989:19;20974:10;;:14;;:35;;;;:::i;:::-;:39;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;20948:86;;21045:20;21068:31;21083:15;21068:10;;:14;;:31;;;;:::i;:::-;21045:54;;21112:21;21150:1;21136:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21112:40;;21181:4;21163;21168:1;21163:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;21207:14;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;21197:4;21202:1;21197:7;;;;;;;;:::i;:::-;;;;;;;:31;;;;;;;;;::::0;::::1;21241:21;21265;21241:45;;21299:14;:65;;;21379:12;21406:1;21422:4;21449;21469:15;21299:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;21508:17;21528:40;21554:13;21528:21;:25;;:40;;;;:::i;:::-;21508:60;;21581:19;21603:44;21620:26;21644:1;21620:19;:23;;:26;;;;:::i;:::-;21603:12;;:16;;:44;;;;:::i;:::-;21581:66;;21660:26;21689:48;21735:1;21689:41;21718:11;21689:24;21703:9;;21689;:13;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;:45;;:48;;;;:::i;:::-;21660:77;;21748:26;21777:45;21810:11;21777:28;21791:13;;21777:9;:13;;:28;;;;:::i;:::-;:32;;:45;;;;:::i;:::-;21748:74;;21836:15;21864::::0;::::1;;;;;;;;;;21856:29;;21893:18;21918:5;21856:72;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21835:93;;;21986:5;21973:18;;22025:1;22007:15;:19;22004:370;;;22042:14;:30;;;22080:18;22126:4;22150:15;22184:1;22204::::0;22224:21:::1;;;;;;;;;;;22264:15;22042:252;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;22314:48;22326:18;22346:15;22314:48;;;;;;;:::i;:::-;;;;;;;;22004:370;20887:1494;;;;;;;;;;13243:5:::0;13234:6;;:14;;;;;;;;;;;;;;;;;;20849:1532::o;459:98::-;517:7;548:1;544;:5;;;;:::i;:::-;537:12;;459:98;;;;:::o;565:::-;623:7;654:1;650;:5;;;;:::i;:::-;643:12;;565:98;;;;:::o;18079:330::-;18172:4;18209:53;18231:6;18209:53;;;;;;;;;;;;;;;;;:9;:17;18219:6;18209:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;18189:9;:17;18199:6;18189:17;;;;;;;;;;;;;;;:73;;;;18296:32;18321:6;18296:9;:20;18306:9;18296:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;18273:9;:20;18283:9;18273:20;;;;;;;;;;;;;;;:55;;;;18361:9;18344:35;;18353:6;18344:35;;;18372:6;18344:35;;;;;;:::i;:::-;;;;;;;;18397:4;18390:11;;18079:330;;;;;:::o;18417:166::-;18514:12;;18504:6;:22;;:49;;;;18530:15;:23;18546:6;18530:23;;;;;;;;;;;;;;;;;;;;;;;;;18504:49;18496:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;18417:166;;:::o;18713:406::-;18788:7;18810:17;18830:8;;18810:28;;18849:17;18869:56;18921:3;18904:14;;:20;;;;:::i;:::-;18869:30;18895:3;18869:21;18880:9;18869:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;:34;;:56;;;;:::i;:::-;18849:76;;18973:39;19002:9;18973;:24;18991:4;18973:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;18946:9;:24;18964:4;18946:24;;;;;;;;;;;;;;;:66;;;;19053:4;19028:42;;19037:6;19028:42;;;19060:9;19028:42;;;;;;:::i;:::-;;;;;;;;19090:21;19101:9;19090:6;:10;;:21;;;;:::i;:::-;19083:28;;;;18713:406;;;;:::o;18591:114::-;18653:4;18678:11;:19;18690:6;18678:19;;;;;;;;;;;;;;;;;;;;;;;;;18677:20;18670:27;;18591:114;;;:::o;19127:458::-;19207:7;19227:17;19267:6;:35;;19291:11;;19267:35;;;19276:12;;19267:35;19255:47;;19315:17;19335:56;19387:3;19370:14;;:20;;;;:::i;:::-;19335:30;19361:3;19335:21;19346:9;19335:6;:10;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;:34;;:56;;;;:::i;:::-;19315:76;;19439:39;19468:9;19439;:24;19457:4;19439:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;19412:9;:24;19430:4;19412:24;;;;;;;;;;;;;;;:66;;;;19519:4;19494:42;;19503:6;19494:42;;;19526:9;19494:42;;;;;;:::i;:::-;;;;;;;;19556:21;19567:9;19556:6;:10;;:21;;;;:::i;:::-;19549:28;;;;19127:458;;;;;:::o;19593:182::-;19642:4;19680:13;19666:27;;:10;:27;;;;:47;;;;;19707:6;;;;;;;;;;;19706:7;19666:47;:101;;;;;19754:13;;19726:9;:24;19744:4;19726:24;;;;;;;;;;;;;;;;:41;;19666:101;19659:108;;19593:182;:::o;247:98::-;305:7;336:1;332;:5;;;;:::i;:::-;325:12;;247:98;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:474::-;4201:6;4209;4258:2;4246:9;4237:7;4233:23;4229:32;4226:119;;;4264:79;;:::i;:::-;4226:119;4384:1;4409:53;4454:7;4445:6;4434:9;4430:22;4409:53;:::i;:::-;4399:63;;4355:117;4511:2;4537:53;4582:7;4573:6;4562:9;4558:22;4537:53;:::i;:::-;4527:63;;4482:118;4133:474;;;;;:::o;4613:619::-;4690:6;4698;4706;4755:2;4743:9;4734:7;4730:23;4726:32;4723:119;;;4761:79;;:::i;:::-;4723:119;4881:1;4906:53;4951:7;4942:6;4931:9;4927:22;4906:53;:::i;:::-;4896:63;;4852:117;5008:2;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4979:118;5136:2;5162:53;5207:7;5198:6;5187:9;5183:22;5162:53;:::i;:::-;5152:63;;5107:118;4613:619;;;;;:::o;5238:329::-;5297:6;5346:2;5334:9;5325:7;5321:23;5317:32;5314:119;;;5352:79;;:::i;:::-;5314:119;5472:1;5497:53;5542:7;5533:6;5522:9;5518:22;5497:53;:::i;:::-;5487:63;;5443:117;5238:329;;;;:::o;5573:86::-;5608:7;5648:4;5641:5;5637:16;5626:27;;5573:86;;;:::o;5665:112::-;5748:22;5764:5;5748:22;:::i;:::-;5743:3;5736:35;5665:112;;:::o;5783:214::-;5872:4;5910:2;5899:9;5895:18;5887:26;;5923:67;5987:1;5976:9;5972:17;5963:6;5923:67;:::i;:::-;5783:214;;;;:::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:116::-;6425:21;6440:5;6425:21;:::i;:::-;6418:5;6415:32;6405:60;;6461:1;6458;6451:12;6405:60;6355:116;:::o;6477:133::-;6520:5;6558:6;6545:20;6536:29;;6574:30;6598:5;6574:30;:::i;:::-;6477:133;;;;:::o;6616:468::-;6681:6;6689;6738:2;6726:9;6717:7;6713:23;6709:32;6706:119;;;6744:79;;:::i;:::-;6706:119;6864:1;6889:53;6934:7;6925:6;6914:9;6910:22;6889:53;:::i;:::-;6879:63;;6835:117;6991:2;7017:50;7059:7;7050:6;7039:9;7035:22;7017:50;:::i;:::-;7007:60;;6962:115;6616:468;;;;;:::o;7090:60::-;7118:3;7139:5;7132:12;;7090:60;;;:::o;7156:142::-;7206:9;7239:53;7257:34;7266:24;7284:5;7266:24;:::i;:::-;7257:34;:::i;:::-;7239:53;:::i;:::-;7226:66;;7156:142;;;:::o;7304:126::-;7354:9;7387:37;7418:5;7387:37;:::i;:::-;7374:50;;7304:126;;;:::o;7436:153::-;7513:9;7546:37;7577:5;7546:37;:::i;:::-;7533:50;;7436:153;;;:::o;7595:185::-;7709:64;7767:5;7709:64;:::i;:::-;7704:3;7697:77;7595:185;;:::o;7786:276::-;7906:4;7944:2;7933:9;7929:18;7921:26;;7957:98;8052:1;8041:9;8037:17;8028:6;7957:98;:::i;:::-;7786:276;;;;:::o;8068:619::-;8145:6;8153;8161;8210:2;8198:9;8189:7;8185:23;8181:32;8178:119;;;8216:79;;:::i;:::-;8178:119;8336:1;8361:53;8406:7;8397:6;8386:9;8382:22;8361:53;:::i;:::-;8351:63;;8307:117;8463:2;8489:53;8534:7;8525:6;8514:9;8510:22;8489:53;:::i;:::-;8479:63;;8434:118;8591:2;8617:53;8662:7;8653:6;8642:9;8638:22;8617:53;:::i;:::-;8607:63;;8562:118;8068:619;;;;;:::o;8693:474::-;8761:6;8769;8818:2;8806:9;8797:7;8793:23;8789:32;8786:119;;;8824:79;;:::i;:::-;8786:119;8944:1;8969:53;9014:7;9005:6;8994:9;8990:22;8969:53;:::i;:::-;8959:63;;8915:117;9071:2;9097:53;9142:7;9133:6;9122:9;9118:22;9097:53;:::i;:::-;9087:63;;9042:118;8693:474;;;;;:::o;9173:182::-;9313:34;9309:1;9301:6;9297:14;9290:58;9173:182;:::o;9361:366::-;9503:3;9524:67;9588:2;9583:3;9524:67;:::i;:::-;9517:74;;9600:93;9689:3;9600:93;:::i;:::-;9718:2;9713:3;9709:12;9702:19;;9361:366;;;:::o;9733:419::-;9899:4;9937:2;9926:9;9922:18;9914:26;;9986:9;9980:4;9976:20;9972:1;9961:9;9957:17;9950:47;10014:131;10140:4;10014:131;:::i;:::-;10006:139;;9733:419;;;:::o;10158:180::-;10206:77;10203:1;10196:88;10303:4;10300:1;10293:15;10327:4;10324:1;10317:15;10344:102;10386:8;10433:5;10430:1;10426:13;10405:34;;10344:102;;;:::o;10452:848::-;10513:5;10520:4;10544:6;10535:15;;10568:5;10559:14;;10582:712;10603:1;10593:8;10590:15;10582:712;;;10698:4;10693:3;10689:14;10683:4;10680:24;10677:50;;;10707:18;;:::i;:::-;10677:50;10757:1;10747:8;10743:16;10740:451;;;11172:4;11165:5;11161:16;11152:25;;10740:451;11222:4;11216;11212:15;11204:23;;11252:32;11275:8;11252:32;:::i;:::-;11240:44;;10582:712;;;10452:848;;;;;;;:::o;11306:1073::-;11360:5;11551:8;11541:40;;11572:1;11563:10;;11574:5;;11541:40;11600:4;11590:36;;11617:1;11608:10;;11619:5;;11590:36;11686:4;11734:1;11729:27;;;;11770:1;11765:191;;;;11679:277;;11729:27;11747:1;11738:10;;11749:5;;;11765:191;11810:3;11800:8;11797:17;11794:43;;;11817:18;;:::i;:::-;11794:43;11866:8;11863:1;11859:16;11850:25;;11901:3;11894:5;11891:14;11888:40;;;11908:18;;:::i;:::-;11888:40;11941:5;;;11679:277;;12065:2;12055:8;12052:16;12046:3;12040:4;12037:13;12033:36;12015:2;12005:8;12002:16;11997:2;11991:4;11988:12;11984:35;11968:111;11965:246;;;12121:8;12115:4;12111:19;12102:28;;12156:3;12149:5;12146:14;12143:40;;;12163:18;;:::i;:::-;12143:40;12196:5;;11965:246;12236:42;12274:3;12264:8;12258:4;12255:1;12236:42;:::i;:::-;12221:57;;;;12310:4;12305:3;12301:14;12294:5;12291:25;12288:51;;;12319:18;;:::i;:::-;12288:51;12368:4;12361:5;12357:16;12348:25;;11306:1073;;;;;;:::o;12385:281::-;12443:5;12467:23;12485:4;12467:23;:::i;:::-;12459:31;;12511:25;12527:8;12511:25;:::i;:::-;12499:37;;12555:104;12592:66;12582:8;12576:4;12555:104;:::i;:::-;12546:113;;12385:281;;;;:::o;12672:410::-;12712:7;12735:20;12753:1;12735:20;:::i;:::-;12730:25;;12769:20;12787:1;12769:20;:::i;:::-;12764:25;;12824:1;12821;12817:9;12846:30;12864:11;12846:30;:::i;:::-;12835:41;;13025:1;13016:7;13012:15;13009:1;13006:22;12986:1;12979:9;12959:83;12936:139;;13055:18;;:::i;:::-;12936:139;12720:362;12672:410;;;;:::o;13088:174::-;13228:26;13224:1;13216:6;13212:14;13205:50;13088:174;:::o;13268:366::-;13410:3;13431:67;13495:2;13490:3;13431:67;:::i;:::-;13424:74;;13507:93;13596:3;13507:93;:::i;:::-;13625:2;13620:3;13616:12;13609:19;;13268:366;;;:::o;13640:419::-;13806:4;13844:2;13833:9;13829:18;13821:26;;13893:9;13887:4;13883:20;13879:1;13868:9;13864:17;13857:47;13921:131;14047:4;13921:131;:::i;:::-;13913:139;;13640:419;;;:::o;14065:191::-;14105:3;14124:20;14142:1;14124:20;:::i;:::-;14119:25;;14158:20;14176:1;14158:20;:::i;:::-;14153:25;;14201:1;14198;14194:9;14187:16;;14222:3;14219:1;14216:10;14213:36;;;14229:18;;:::i;:::-;14213:36;14065:191;;;;:::o;14262:177::-;14402:29;14398:1;14390:6;14386:14;14379:53;14262:177;:::o;14445:366::-;14587:3;14608:67;14672:2;14667:3;14608:67;:::i;:::-;14601:74;;14684:93;14773:3;14684:93;:::i;:::-;14802:2;14797:3;14793:12;14786:19;;14445:366;;;:::o;14817:419::-;14983:4;15021:2;15010:9;15006:18;14998:26;;15070:9;15064:4;15060:20;15056:1;15045:9;15041:17;15034:47;15098:131;15224:4;15098:131;:::i;:::-;15090:139;;14817:419;;;:::o;15242:225::-;15382:34;15378:1;15370:6;15366:14;15359:58;15451:8;15446:2;15438:6;15434:15;15427:33;15242:225;:::o;15473:366::-;15615:3;15636:67;15700:2;15695:3;15636:67;:::i;:::-;15629:74;;15712:93;15801:3;15712:93;:::i;:::-;15830:2;15825:3;15821:12;15814:19;;15473:366;;;:::o;15845:419::-;16011:4;16049:2;16038:9;16034:18;16026:26;;16098:9;16092:4;16088:20;16084:1;16073:9;16069:17;16062:47;16126:131;16252:4;16126:131;:::i;:::-;16118:139;;15845:419;;;:::o;16270:170::-;16410:22;16406:1;16398:6;16394:14;16387:46;16270:170;:::o;16446:366::-;16588:3;16609:67;16673:2;16668:3;16609:67;:::i;:::-;16602:74;;16685:93;16774:3;16685:93;:::i;:::-;16803:2;16798:3;16794:12;16787:19;;16446:366;;;:::o;16818:419::-;16984:4;17022:2;17011:9;17007:18;16999:26;;17071:9;17065:4;17061:20;17057:1;17046:9;17042:17;17035:47;17099:131;17225:4;17099:131;:::i;:::-;17091:139;;16818:419;;;:::o;17243:249::-;17383:34;17379:1;17371:6;17367:14;17360:58;17452:32;17447:2;17439:6;17435:15;17428:57;17243:249;:::o;17498:366::-;17640:3;17661:67;17725:2;17720:3;17661:67;:::i;:::-;17654:74;;17737:93;17826:3;17737:93;:::i;:::-;17855:2;17850:3;17846:12;17839:19;;17498:366;;;:::o;17870:419::-;18036:4;18074:2;18063:9;18059:18;18051:26;;18123:9;18117:4;18113:20;18109:1;18098:9;18094:17;18087:47;18151:131;18277:4;18151:131;:::i;:::-;18143:139;;17870:419;;;:::o;18295:194::-;18335:4;18355:20;18373:1;18355:20;:::i;:::-;18350:25;;18389:20;18407:1;18389:20;:::i;:::-;18384:25;;18433:1;18430;18426:9;18418:17;;18457:1;18451:4;18448:11;18445:37;;;18462:18;;:::i;:::-;18445:37;18295:194;;;;:::o;18495:180::-;18543:77;18540:1;18533:88;18640:4;18637:1;18630:15;18664:4;18661:1;18654:15;18681:180;18729:77;18726:1;18719:88;18826:4;18823:1;18816:15;18850:4;18847:1;18840:15;18867:143;18924:5;18955:6;18949:13;18940:22;;18971:33;18998:5;18971:33;:::i;:::-;18867:143;;;;:::o;19016:351::-;19086:6;19135:2;19123:9;19114:7;19110:23;19106:32;19103:119;;;19141:79;;:::i;:::-;19103:119;19261:1;19286:64;19342:7;19333:6;19322:9;19318:22;19286:64;:::i;:::-;19276:74;;19232:128;19016:351;;;;:::o;19373:85::-;19418:7;19447:5;19436:16;;19373:85;;;:::o;19464:158::-;19522:9;19555:61;19573:42;19582:32;19608:5;19582:32;:::i;:::-;19573:42;:::i;:::-;19555:61;:::i;:::-;19542:74;;19464:158;;;:::o;19628:147::-;19723:45;19762:5;19723:45;:::i;:::-;19718:3;19711:58;19628:147;;:::o;19781:114::-;19848:6;19882:5;19876:12;19866:22;;19781:114;;;:::o;19901:184::-;20000:11;20034:6;20029:3;20022:19;20074:4;20069:3;20065:14;20050:29;;19901:184;;;;:::o;20091:132::-;20158:4;20181:3;20173:11;;20211:4;20206:3;20202:14;20194:22;;20091:132;;;:::o;20229:108::-;20306:24;20324:5;20306:24;:::i;:::-;20301:3;20294:37;20229:108;;:::o;20343:179::-;20412:10;20433:46;20475:3;20467:6;20433:46;:::i;:::-;20511:4;20506:3;20502:14;20488:28;;20343:179;;;;:::o;20528:113::-;20598:4;20630;20625:3;20621:14;20613:22;;20528:113;;;:::o;20677:732::-;20796:3;20825:54;20873:5;20825:54;:::i;:::-;20895:86;20974:6;20969:3;20895:86;:::i;:::-;20888:93;;21005:56;21055:5;21005:56;:::i;:::-;21084:7;21115:1;21100:284;21125:6;21122:1;21119:13;21100:284;;;21201:6;21195:13;21228:63;21287:3;21272:13;21228:63;:::i;:::-;21221:70;;21314:60;21367:6;21314:60;:::i;:::-;21304:70;;21160:224;21147:1;21144;21140:9;21135:14;;21100:284;;;21104:14;21400:3;21393:10;;20801:608;;;20677:732;;;;:::o;21415:831::-;21678:4;21716:3;21705:9;21701:19;21693:27;;21730:71;21798:1;21787:9;21783:17;21774:6;21730:71;:::i;:::-;21811:80;21887:2;21876:9;21872:18;21863:6;21811:80;:::i;:::-;21938:9;21932:4;21928:20;21923:2;21912:9;21908:18;21901:48;21966:108;22069:4;22060:6;21966:108;:::i;:::-;21958:116;;22084:72;22152:2;22141:9;22137:18;22128:6;22084:72;:::i;:::-;22166:73;22234:3;22223:9;22219:19;22210:6;22166:73;:::i;:::-;21415:831;;;;;;;;:::o;22252:147::-;22353:11;22390:3;22375:18;;22252:147;;;;:::o;22405:114::-;;:::o;22525:398::-;22684:3;22705:83;22786:1;22781:3;22705:83;:::i;:::-;22698:90;;22797:93;22886:3;22797:93;:::i;:::-;22915:1;22910:3;22906:11;22899:18;;22525:398;;;:::o;22929:379::-;23113:3;23135:147;23278:3;23135:147;:::i;:::-;23128:154;;23299:3;23292:10;;22929:379;;;:::o;23314:807::-;23563:4;23601:3;23590:9;23586:19;23578:27;;23615:71;23683:1;23672:9;23668:17;23659:6;23615:71;:::i;:::-;23696:72;23764:2;23753:9;23749:18;23740:6;23696:72;:::i;:::-;23778:80;23854:2;23843:9;23839:18;23830:6;23778:80;:::i;:::-;23868;23944:2;23933:9;23929:18;23920:6;23868:80;:::i;:::-;23958:73;24026:3;24015:9;24011:19;24002:6;23958:73;:::i;:::-;24041;24109:3;24098:9;24094:19;24085:6;24041:73;:::i;:::-;23314:807;;;;;;;;;:::o;24127:143::-;24184:5;24215:6;24209:13;24200:22;;24231:33;24258:5;24231:33;:::i;:::-;24127:143;;;;:::o;24276:663::-;24364:6;24372;24380;24429:2;24417:9;24408:7;24404:23;24400:32;24397:119;;;24435:79;;:::i;:::-;24397:119;24555:1;24580:64;24636:7;24627:6;24616:9;24612:22;24580:64;:::i;:::-;24570:74;;24526:128;24693:2;24719:64;24775:7;24766:6;24755:9;24751:22;24719:64;:::i;:::-;24709:74;;24664:129;24832:2;24858:64;24914:7;24905:6;24894:9;24890:22;24858:64;:::i;:::-;24848:74;;24803:129;24276:663;;;;;:::o;24945:332::-;25066:4;25104:2;25093:9;25089:18;25081:26;;25117:71;25185:1;25174:9;25170:17;25161:6;25117:71;:::i;:::-;25198:72;25266:2;25255:9;25251:18;25242:6;25198:72;:::i;:::-;24945:332;;;;;:::o;25283:180::-;25331:77;25328:1;25321:88;25428:4;25425:1;25418:15;25452:4;25449:1;25442:15;25469:185;25509:1;25526:20;25544:1;25526:20;:::i;:::-;25521:25;;25560:20;25578:1;25560:20;:::i;:::-;25555:25;;25599:1;25589:35;;25604:18;;:::i;:::-;25589:35;25646:1;25643;25639:9;25634:14;;25469:185;;;;:::o;25660:167::-;25800:19;25796:1;25788:6;25784:14;25777:43;25660:167;:::o;25833:366::-;25975:3;25996:67;26060:2;26055:3;25996:67;:::i;:::-;25989:74;;26072:93;26161:3;26072:93;:::i;:::-;26190:2;26185:3;26181:12;26174:19;;25833:366;;;:::o;26205:419::-;26371:4;26409:2;26398:9;26394:18;26386:26;;26458:9;26452:4;26448:20;26444:1;26433:9;26429:17;26422:47;26486:131;26612:4;26486:131;:::i;:::-;26478:139;;26205:419;;;:::o

Swarm Source

ipfs://13add9ae1dc5895f8a600310fb18e35d86e6b1b051a2368ed0e90e607bc8445b
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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