Contract Address Details

0xa0158f6b3f611b2FF79C6412caD180e969b2D7a7

Token
Frog Inu (FGID)
Creator
0xbe661e–db432a at 0x30e228–51ef9b
Balance
0 Doge
Tokens
Fetching tokens...
Transactions
85 Transactions
Transfers
174 Transfers
Gas Used
3,687,236
Last Balance Update
5058588
Contract name:
FrogInu




Optimization enabled
false
Compiler version
v0.8.9+commit.e5eed63a




EVM Version
default




Verified at
2022-08-17T19:23:55.832907Z

Contract source code

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.9;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    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);
}

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 9;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

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

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

        _afterTokenTransfer(account, address(0), amount);
    }

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

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

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

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

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

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

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

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

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

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

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

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

    function initialize(address, address) external;
}

interface IUniswapV2Router01 {
    function factory() external pure returns (address);
    function WWDOGE() 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 addLiquidityWDOGE(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountWDOGE, 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 removeLiquidityWDOGE(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountWDOGE);
    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 removeLiquidityWDOGEWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountWDOGE);
    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 swapExactWDOGEForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);
    function swapTokensForExactWDOGE(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapExactTokensForWDOGE(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
        external
        returns (uint[] memory amounts);
    function swapWDOGEForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
        external
        payable
        returns (uint[] memory amounts);

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

interface IUniswapV2Router02 is IUniswapV2Router01 {
    function removeLiquidityWDOGESupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline
    ) external returns (uint amountWDOGE);
    function removeLiquidityWDOGEWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountWDOGEMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountWDOGE);

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

contract FrogInu is ERC20, Ownable {
    uint256 public buyFee = 10;
    uint256 public sellFee = 10;
    
    uint256 public liquidityShare = 20;
    uint256 public marketingAndCharityShare = 80;

    address public marketingAndCharityWallet = 0x4C1E792992936c47CdC6cdBA85398e73F5e5f9eB;

    bool public walletToWalletTransferWithoutFee = false;

    IUniswapV2Router02 public uniswapV2Router;
    address public  uniswapV2Pair;
    
    address private DEAD_ADDRESS = 0x000000000000000000000000000000000000dEaD;

    bool private swapping;
    uint256 public swapTokensAtAmount;

    mapping (address => bool) private _isExcludedFromFees;
    mapping (address => bool) public automatedMarketMakerPairs;

    event ExcludeFromFees(address indexed account, bool isExcluded);
    event FeesUpdated(uint256 buyFee, uint256 sellFee);
    event FeeSharesUpdated(uint256 liquidityShare, uint256 marketingAndCharityShare);
    event MarketingAndCharityWalletsChanged(address marketingAndCharityWallet);
    event SetAutomatedMarketMakerPair(address indexed pair, bool indexed value);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 bnbReceived, uint256 tokensIntoLiqudity);
    event SwapAndSendMarketingCharity(uint256 tokensSwapped, uint256 bnbSend);
    event UpdateUniswapV2Router(address indexed newAddress, address indexed oldAddress);

    constructor () ERC20("Frog Inu", "FGID") 
    {   
        transferOwnership(msg.sender);

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0xa4EE06Ce40cb7e8c04E127c1F7D3dFB7F7039C81);
        address _uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WWDOGE());

        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair   = _uniswapV2Pair;

        _approve(address(this), address(uniswapV2Router), type(uint256).max);

        _setAutomatedMarketMakerPair(_uniswapV2Pair, true);

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[DEAD_ADDRESS] = true;
        _isExcludedFromFees[address(this)] = true;
        
        _mint(owner(), 1e15 * (10 ** 9));
        swapTokensAtAmount = totalSupply() / 5000;
    }

    receive() external payable {

  	}

    function claimStuckTokens(address token) external onlyOwner {
        IERC20 ERC20token = IERC20(token);
        uint256 balance = ERC20token.balanceOf(address(this));
        require(balance > 0, "Balance not enough");
        ERC20token.transfer(msg.sender, balance);
    }

    function claimStuckNativeToken(address payable recipient) public onlyOwner {
        require(address(this).balance > 0,"Address: insufficient balance");

        recipient.transfer(address(this).balance);
    }

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendBNB(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function updateUniswapV2Router(address newAddress) external onlyOwner {
        require(newAddress != address(uniswapV2Router), "The router already has that address");
        emit UpdateUniswapV2Router(newAddress, address(uniswapV2Router));
        uniswapV2Router = IUniswapV2Router02(newAddress);
        address _uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory())
            .createPair(address(this), uniswapV2Router.WWDOGE());
        uniswapV2Pair = _uniswapV2Pair;
    }

    function setAutomatedMarketMakerPair(address pair, bool value) external onlyOwner {
        require(pair != uniswapV2Pair, "The PancakeSwap pair cannot be removed from automatedMarketMakerPairs");

        _setAutomatedMarketMakerPair(pair, value);
    }
 
    function _setAutomatedMarketMakerPair(address pair, bool value) private {
        require(automatedMarketMakerPairs[pair] != value, "Automated market maker pair is already set to that value");
        automatedMarketMakerPairs[pair] = value;

        emit SetAutomatedMarketMakerPair(pair, value);
    }

    //=======FeeManagement=======//
    function excludeFromFees(address account, bool excluded) external onlyOwner {
        require(_isExcludedFromFees[account] != excluded, "Account is already the value of 'excluded'");
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

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

    function updateFees(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
        require(_buyFee <= 25 && _sellFee <= 25, "Fees must be less than 25%");
        buyFee = _buyFee;
        sellFee = _sellFee;
        emit FeesUpdated(buyFee, sellFee);
    }

    function updateFeeShares(uint256 _marketingAndCharityFeeShare, uint256 _liquidityFeeShare) external onlyOwner {
        require(_marketingAndCharityFeeShare + _liquidityFeeShare == 100, "Fee shares must add up to 100");
        marketingAndCharityShare = _marketingAndCharityFeeShare;
        liquidityShare = _liquidityFeeShare;
        emit FeeSharesUpdated(marketingAndCharityShare, liquidityShare);
    }

    function enableWalletToWalletTransferWithoutFee(bool enable) external onlyOwner {
        require(walletToWalletTransferWithoutFee != enable, "Wallet to wallet transfer without fee is already set to that value");
        walletToWalletTransferWithoutFee = enable;
    }

    function changeMarketingCharityWallet(address _marketingAndCharityWallet) external onlyOwner {
        require(_marketingAndCharityWallet != marketingAndCharityWallet, "Marketing and charity wallet is already that address");
        require(!isContract(_marketingAndCharityWallet), "Marketing and charity wallet cannot be a contract");
        marketingAndCharityWallet = _marketingAndCharityWallet;
        emit MarketingAndCharityWalletsChanged(marketingAndCharityWallet);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal  override {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
       
        if(amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

		uint256 contractTokenBalance = balanceOf(address(this));

        bool canSwap = contractTokenBalance >= swapTokensAtAmount;

        if( canSwap &&
            !swapping &&
            !automatedMarketMakerPairs[from]
        ) {
            swapping = true;

            if(liquidityShare > 0) {
                uint256 liquidityTokens = contractTokenBalance * liquidityShare / 100;
                swapAndLiquify(liquidityTokens);
            }
            
            if(marketingAndCharityShare > 0) {
                uint256 marketingAndCharityTokens = contractTokenBalance * marketingAndCharityShare / 100;
                swapAndSendMarketingCharity(marketingAndCharityTokens);
            }          

            swapping = false;
        }

        bool takeFee = !swapping;

        if(_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            takeFee = false;
        }

        if(walletToWalletTransferWithoutFee && from != uniswapV2Pair && to != uniswapV2Pair) {
            takeFee = false;
        }

        if(takeFee) {
            uint256 _totalFees;
            if(from == uniswapV2Pair) {
                _totalFees = buyFee;
            } else {
                _totalFees = sellFee;
            }
        	uint256 fees = amount * _totalFees / 100;
        	
        	amount = amount - fees;

            super._transfer(from, address(this), fees);
        }

        super._transfer(from, to, amount);

    }

    //=======Swap=======//
    function swapAndLiquify(uint256 tokens) private {
        uint256 half = tokens / 2;
        uint256 otherHalf = tokens - half;

        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WWDOGE();

        uniswapV2Router.swapExactTokensForWDOGESupportingFeeOnTransferTokens(
            half,
            0, // accept any amount of WDOGE
            path,
            address(this),
            block.timestamp);
        
        uint256 newBalance = address(this).balance - initialBalance;

        uniswapV2Router.addLiquidityWDOGE{value: newBalance}(
            address(this),
            otherHalf,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEAD_ADDRESS,
            block.timestamp
        );

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapAndSendMarketingCharity(uint256 tokenAmount) private {
        uint256 initialBalance = address(this).balance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WWDOGE();

        uniswapV2Router.swapExactTokensForWDOGESupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of WDOGE
            path,
            address(this),
            block.timestamp);

        uint256 newBalance = address(this).balance - initialBalance;
        
        if (marketingAndCharityShare > 0) {
            uint256 marketingAndCharityBNB = newBalance * marketingAndCharityShare / 100;
            sendBNB(payable(marketingAndCharityWallet), marketingAndCharityBNB);
        }

        emit SwapAndSendMarketingCharity(tokenAmount, newBalance);
    }

    function setSwapTokensAtAmount(uint256 newAmount) external onlyOwner{
        require(newAmount > totalSupply() / 100000, "SwapTokensAtAmount must be greater than 0.001% of total supply");
        swapTokensAtAmount = newAmount;
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"ExcludeFromFees","inputs":[{"type":"address","name":"account","internalType":"address","indexed":true},{"type":"bool","name":"isExcluded","internalType":"bool","indexed":false}],"anonymous":false},{"type":"event","name":"FeeSharesUpdated","inputs":[{"type":"uint256","name":"liquidityShare","internalType":"uint256","indexed":false},{"type":"uint256","name":"marketingAndCharityShare","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"FeesUpdated","inputs":[{"type":"uint256","name":"buyFee","internalType":"uint256","indexed":false},{"type":"uint256","name":"sellFee","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"MarketingAndCharityWalletsChanged","inputs":[{"type":"address","name":"marketingAndCharityWallet","internalType":"address","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"SetAutomatedMarketMakerPair","inputs":[{"type":"address","name":"pair","internalType":"address","indexed":true},{"type":"bool","name":"value","internalType":"bool","indexed":true}],"anonymous":false},{"type":"event","name":"SwapAndLiquify","inputs":[{"type":"uint256","name":"tokensSwapped","internalType":"uint256","indexed":false},{"type":"uint256","name":"bnbReceived","internalType":"uint256","indexed":false},{"type":"uint256","name":"tokensIntoLiqudity","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"SwapAndSendMarketingCharity","inputs":[{"type":"uint256","name":"tokensSwapped","internalType":"uint256","indexed":false},{"type":"uint256","name":"bnbSend","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"UpdateUniswapV2Router","inputs":[{"type":"address","name":"newAddress","internalType":"address","indexed":true},{"type":"address","name":"oldAddress","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"automatedMarketMakerPairs","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"buyFee","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"changeMarketingCharityWallet","inputs":[{"type":"address","name":"_marketingAndCharityWallet","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claimStuckNativeToken","inputs":[{"type":"address","name":"recipient","internalType":"address payable"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"claimStuckTokens","inputs":[{"type":"address","name":"token","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"decreaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"subtractedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"enableWalletToWalletTransferWithoutFee","inputs":[{"type":"bool","name":"enable","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"excludeFromFees","inputs":[{"type":"address","name":"account","internalType":"address"},{"type":"bool","name":"excluded","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"increaseAllowance","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"addedValue","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isExcludedFromFees","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"liquidityShare","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"marketingAndCharityShare","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"marketingAndCharityWallet","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"sellFee","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setAutomatedMarketMakerPair","inputs":[{"type":"address","name":"pair","internalType":"address"},{"type":"bool","name":"value","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSwapTokensAtAmount","inputs":[{"type":"uint256","name":"newAmount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"swapTokensAtAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"uniswapV2Pair","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IUniswapV2Router02"}],"name":"uniswapV2Router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateFeeShares","inputs":[{"type":"uint256","name":"_marketingAndCharityFeeShare","internalType":"uint256"},{"type":"uint256","name":"_liquidityFeeShare","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateFees","inputs":[{"type":"uint256","name":"_buyFee","internalType":"uint256"},{"type":"uint256","name":"_sellFee","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"updateUniswapV2Router","inputs":[{"type":"address","name":"newAddress","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"walletToWalletTransferWithoutFee","inputs":[]},{"type":"receive","stateMutability":"payable"}]
            

Contract Creation Code

0x6080604052600a600655600a60075560146008556050600955734c1e792992936c47cdc6cdba85398e73f5e5f9eb600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60146101000a81548160ff02191690831515021790555061dead600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550348015620000d857600080fd5b506040518060400160405280600881526020017f46726f6720496e750000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f464749440000000000000000000000000000000000000000000000000000000081525081600390805190602001906200015d92919062000d06565b5080600490805190602001906200017692919062000d06565b50505060006200018b6200066860201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200023b336200067060201b60201c565b600073a4ee06ce40cb7e8c04e127c1f7d3dfb7f7039c81905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200029d57600080fd5b505afa158015620002b2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d8919062000e20565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b1580156200033b57600080fd5b505afa15801562000350573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000376919062000e20565b6040518363ffffffff1660e01b81526004016200039592919062000e63565b602060405180830381600087803b158015620003b057600080fd5b505af1158015620003c5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003eb919062000e20565b905081600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004c430600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6200084560201b60201c565b620004d781600162000a1860201b60201c565b6001600f6000620004ed62000b4f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200063b6200062462000b4f60201b60201c565b69d3c21bcecceda100000062000b7960201b60201c565b6113886200064e62000cf260201b60201c565b6200065a919062000ef8565b600e81905550505062001375565b600033905090565b620006806200066860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161462000712576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007099062000f91565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000785576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200077c9062001029565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415620008b8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008af90620010c1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156200092b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009229062001159565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000a0b91906200118c565b60405180910390a3505050565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141562000aae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000aa5906200121f565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000bec576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000be39062001291565b60405180910390fd5b62000c006000838362000cfc60201b60201c565b806002600082825462000c149190620012b3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825462000c6b9190620012b3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000cd291906200118c565b60405180910390a362000cee6000838362000d0160201b60201c565b5050565b6000600254905090565b505050565b505050565b82805462000d14906200133f565b90600052602060002090601f01602090048101928262000d38576000855562000d84565b82601f1062000d5357805160ff191683800117855562000d84565b8280016001018555821562000d84579182015b8281111562000d8357825182559160200191906001019062000d66565b5b50905062000d93919062000d97565b5090565b5b8082111562000db257600081600090555060010162000d98565b5090565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000de88262000dbb565b9050919050565b62000dfa8162000ddb565b811462000e0657600080fd5b50565b60008151905062000e1a8162000def565b92915050565b60006020828403121562000e395762000e3862000db6565b5b600062000e498482850162000e09565b91505092915050565b62000e5d8162000ddb565b82525050565b600060408201905062000e7a600083018562000e52565b62000e89602083018462000e52565b9392505050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000f058262000e90565b915062000f128362000e90565b92508262000f255762000f2462000e9a565b5b828204905092915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600062000f7960208362000f30565b915062000f868262000f41565b602082019050919050565b6000602082019050818103600083015262000fac8162000f6a565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006200101160268362000f30565b91506200101e8262000fb3565b604082019050919050565b60006020820190508181036000830152620010448162001002565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000620010a960248362000f30565b9150620010b6826200104b565b604082019050919050565b60006020820190508181036000830152620010dc816200109a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006200114160228362000f30565b91506200114e82620010e3565b604082019050919050565b60006020820190508181036000830152620011748162001132565b9050919050565b620011868162000e90565b82525050565b6000602082019050620011a360008301846200117b565b92915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006200120760388362000f30565b91506200121482620011a9565b604082019050919050565b600060208201905081810360008301526200123a81620011f8565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062001279601f8362000f30565b9150620012868262001241565b602082019050919050565b60006020820190508181036000830152620012ac816200126a565b9050919050565b6000620012c08262000e90565b9150620012cd8362000e90565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562001305576200130462000ec9565b5b828201905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200135857607f821691505b602082108114156200136f576200136e62001310565b5b50919050565b614b0880620013856000396000f3fe6080604052600436106102085760003560e01c80636db7943711610118578063afa4f3b2116100a0578063d13dc28a1161006f578063d13dc28a14610788578063dd62ed3e146107b3578063e2f45605146107f0578063f2fde38b1461081b578063f9d0831a146108445761020f565b8063afa4f3b2146106ce578063b62496f5146106f7578063b9f4af7c14610734578063c02466681461075f5761020f565b806395d89b41116100e757806395d89b41146105d75780639a7a23d614610602578063a457c2d71461062b578063a8cf6afd14610668578063a9059cbb146106915761020f565b80636db794371461052f57806370a0823114610558578063715018a6146105955780638da5cb5b146105ac5761020f565b80632b14ca561161019b578063470624021161016a578063470624021461044a57806349bd5a5e146104755780634fbee193146104a05780635654d0b3146104dd57806365b8dbc0146105065761020f565b80632b14ca561461038e5780632ce6b3c0146103b9578063313ce567146103e2578063395093511461040d5761020f565b80631694505e116101d75780631694505e146102d257806318160ddd146102fd57806323b872dd1461032857806328c1a2c1146103655761020f565b806306fdde0314610214578063095ea7b31461023f57806315291cd41461027c5780631529fbbf146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961086d565b604051610236919061345a565b60405180910390f35b34801561024b57600080fd5b5061026660048036038101906102619190613515565b6108ff565b6040516102739190613570565b60405180910390f35b34801561028857600080fd5b5061029161091d565b60405161029e919061359a565b60405180910390f35b3480156102b357600080fd5b506102bc610923565b6040516102c99190613570565b60405180910390f35b3480156102de57600080fd5b506102e7610936565b6040516102f49190613614565b60405180910390f35b34801561030957600080fd5b5061031261095c565b60405161031f919061359a565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a919061362f565b610966565b60405161035c9190613570565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190613682565b610a85565b005b34801561039a57600080fd5b506103a3610bb9565b6040516103b0919061359a565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613700565b610bbf565b005b3480156103ee57600080fd5b506103f7610ce3565b6040516104049190613749565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190613515565b610cec565b6040516104419190613570565b60405180910390f35b34801561045657600080fd5b5061045f610d98565b60405161046c919061359a565b60405180910390f35b34801561048157600080fd5b5061048a610d9e565b6040516104979190613773565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c2919061378e565b610dc4565b6040516104d49190613570565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff91906137e7565b610e1a565b005b34801561051257600080fd5b5061052d6004803603810190610528919061378e565b610f24565b005b34801561053b57600080fd5b5061055660048036038101906105519190613682565b61131d565b005b34801561056457600080fd5b5061057f600480360381019061057a919061378e565b611454565b60405161058c919061359a565b60405180910390f35b3480156105a157600080fd5b506105aa61149c565b005b3480156105b857600080fd5b506105c16115f4565b6040516105ce9190613773565b60405180910390f35b3480156105e357600080fd5b506105ec61161e565b6040516105f9919061345a565b60405180910390f35b34801561060e57600080fd5b5061062960048036038101906106249190613814565b6116b0565b005b34801561063757600080fd5b50610652600480360381019061064d9190613515565b6117e6565b60405161065f9190613570565b60405180910390f35b34801561067457600080fd5b5061068f600480360381019061068a919061378e565b6118d1565b005b34801561069d57600080fd5b506106b860048036038101906106b39190613515565b611adf565b6040516106c59190613570565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f09190613854565b611afd565b005b34801561070357600080fd5b5061071e6004803603810190610719919061378e565b611bf5565b60405161072b9190613570565b60405180910390f35b34801561074057600080fd5b50610749611c15565b604051610756919061359a565b60405180910390f35b34801561076b57600080fd5b5061078660048036038101906107819190613814565b611c1b565b005b34801561079457600080fd5b5061079d611dee565b6040516107aa9190613773565b60405180910390f35b3480156107bf57600080fd5b506107da60048036038101906107d59190613881565b611e14565b6040516107e7919061359a565b60405180910390f35b3480156107fc57600080fd5b50610805611e9b565b604051610812919061359a565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d919061378e565b611ea1565b005b34801561085057600080fd5b5061086b6004803603810190610866919061378e565b612068565b005b60606003805461087c906138f0565b80601f01602080910402602001604051908101604052809291908181526020018280546108a8906138f0565b80156108f55780601f106108ca576101008083540402835291602001916108f5565b820191906000526020600020905b8154815290600101906020018083116108d857829003601f168201915b5050505050905090565b600061091361090c612267565b848461226f565b6001905092915050565b60085481565b600a60149054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109b2612267565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a6e5782811015610a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5090613994565b60405180910390fd5b610a6d85610a65612267565b85840361226f565b5b610a7985858561243a565b60019150509392505050565b610a8d612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1390613a00565b60405180910390fd5b60648183610b2a9190613a4f565b14610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190613af1565b60405180910390fd5b81600981905550806008819055507fe27eff07c82fe40755857df4c86d1146ab1d125c63b256a87c7ff2fba40c224e600954600854604051610bad929190613b11565b60405180910390a15050565b60075481565b610bc7612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90613a00565b60405180910390fd5b60004711610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090613b86565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610cdf573d6000803e3d6000fd5b5050565b60006009905090565b6000610d8e610cf9612267565b848460016000610d07612267565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d899190613a4f565b61226f565b6001905092915050565b60065481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e22612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890613a00565b60405180910390fd5b801515600a60149054906101000a900460ff1615151415610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe90613c3e565b60405180910390fd5b80600a60146101000a81548160ff02191690831515021790555050565b610f2c612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb290613a00565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561104c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104390613cd0565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e60405160405180910390a380600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab9190613d05565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b15801561122f57600080fd5b505afa158015611243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112679190613d05565b6040518363ffffffff1660e01b8152600401611284929190613d32565b602060405180830381600087803b15801561129e57600080fd5b505af11580156112b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d69190613d05565b905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611325612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab90613a00565b60405180910390fd5b601982111580156113c6575060198111155b611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90613da7565b60405180910390fd5b81600681905550806007819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1600654600754604051611448929190613b11565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114a4612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90613a00565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461162d906138f0565b80601f0160208091040260200160405190810160405280929190818152602001828054611659906138f0565b80156116a65780601f1061167b576101008083540402835291602001916116a6565b820191906000526020600020905b81548152906001019060200180831161168957829003601f168201915b5050505050905090565b6116b8612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173e90613a00565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cf90613e5f565b60405180910390fd5b6117e282826128a7565b5050565b600080600160006117f5612267565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156118b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a990613ef1565b60405180910390fd5b6118c66118bd612267565b8585840361226f565b600191505092915050565b6118d9612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90613a00565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f090613f83565b60405180910390fd5b611a02816129db565b15611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990614015565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3d965dd74b04c63d6adfe5ef031c7097655a7df206fe10af4269eddd8582315e600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611ad49190613773565b60405180910390a150565b6000611af3611aec612267565b848461243a565b6001905092915050565b611b05612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8b90613a00565b60405180910390fd5b620186a0611ba061095c565b611baa9190614064565b8111611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be290614107565b60405180910390fd5b80600e8190555050565b60106020528060005260406000206000915054906101000a900460ff1681565b60095481565b611c23612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca990613a00565b60405180910390fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3c90614199565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611de29190613570565b60405180910390a25050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b611ea9612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2f90613a00565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9f9061422b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612070612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613a00565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161213f9190613773565b60206040518083038186803b15801561215757600080fd5b505afa15801561216b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218f9190614260565b9050600081116121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cb906142d9565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161220f9291906142f9565b602060405180830381600087803b15801561222957600080fd5b505af115801561223d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122619190614337565b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d6906143d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561234f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234690614468565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161242d919061359a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a1906144fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561251a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125119061458c565b60405180910390fd5b60008114156125345761252f838360006129fe565b6128a2565b600061253f30611454565b90506000600e5482101590508080156125655750600d60149054906101000a900460ff16155b80156125bb5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561265f576001600d60146101000a81548160ff0219169083151502179055506000600854111561260f5760006064600854846125f891906145ac565b6126029190614064565b905061260d81612c7f565b505b6000600954111561264357600060646009548461262c91906145ac565b6126369190614064565b905061264181612ff7565b505b6000600d60146101000a81548160ff0219169083151502179055505b6000600d60149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127155750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561271f57600090505b600a60149054906101000a900460ff1680156127895750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156127e35750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156127ed57600090505b8015612893576000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561285557600654905061285b565b60075490505b60006064828761286b91906145ac565b6128759190614064565b905080866128839190614606565b95506128908830836129fe565b50505b61289e8686866129fe565b5050505b505050565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561293a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612931906146ac565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a65906144fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad59061458c565b60405180910390fd5b612ae98383836132c3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b669061473e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c029190613a4f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c66919061359a565b60405180910390a3612c798484846132c8565b50505050565b6000600282612c8e9190614064565b905060008183612c9e9190614606565b905060004790506000600267ffffffffffffffff811115612cc257612cc161475e565b5b604051908082528060200260200182016040528015612cf05781602001602082028036833780820191505090505b5090503081600081518110612d0857612d0761478d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b158015612daa57600080fd5b505afa158015612dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de29190613d05565b81600181518110612df657612df561478d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8560008430426040518663ffffffff1660e01b8152600401612e949594939291906148b5565b600060405180830381600087803b158015612eae57600080fd5b505af1158015612ec2573d6000803e3d6000fd5b5050505060008247612ed49190614606565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6529ab4823087600080600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612f5f9695949392919061490f565b6060604051808303818588803b158015612f7857600080fd5b505af1158015612f8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fb19190614970565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858286604051612fe7939291906149c3565b60405180910390a1505050505050565b60004790506000600267ffffffffffffffff8111156130195761301861475e565b5b6040519080825280602002602001820160405280156130475781602001602082028036833780820191505090505b509050308160008151811061305f5761305e61478d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b15801561310157600080fd5b505afa158015613115573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131399190613d05565b8160018151811061314d5761314c61478d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8460008430426040518663ffffffff1660e01b81526004016131eb9594939291906148b5565b600060405180830381600087803b15801561320557600080fd5b505af1158015613219573d6000803e3d6000fd5b505050506000824761322b9190614606565b90506000600954111561328457600060646009548361324a91906145ac565b6132549190614064565b9050613282600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826132cd565b505b7f2aa1b563b7a01a4a770797417da7811b113e2be30276adfbff4afc6ca9c8aada84826040516132b5929190613b11565b60405180910390a150505050565b505050565b505050565b80471015613310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330790613b86565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161333690614a2b565b60006040518083038185875af1925050503d8060008114613373576040519150601f19603f3d011682016040523d82523d6000602084013e613378565b606091505b50509050806133bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b390614ab2565b60405180910390fd5b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133fb5780820151818401526020810190506133e0565b8381111561340a576000848401525b50505050565b6000601f19601f8301169050919050565b600061342c826133c1565b61343681856133cc565b93506134468185602086016133dd565b61344f81613410565b840191505092915050565b600060208201905081810360008301526134748184613421565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134ac82613481565b9050919050565b6134bc816134a1565b81146134c757600080fd5b50565b6000813590506134d9816134b3565b92915050565b6000819050919050565b6134f2816134df565b81146134fd57600080fd5b50565b60008135905061350f816134e9565b92915050565b6000806040838503121561352c5761352b61347c565b5b600061353a858286016134ca565b925050602061354b85828601613500565b9150509250929050565b60008115159050919050565b61356a81613555565b82525050565b60006020820190506135856000830184613561565b92915050565b613594816134df565b82525050565b60006020820190506135af600083018461358b565b92915050565b6000819050919050565b60006135da6135d56135d084613481565b6135b5565b613481565b9050919050565b60006135ec826135bf565b9050919050565b60006135fe826135e1565b9050919050565b61360e816135f3565b82525050565b60006020820190506136296000830184613605565b92915050565b6000806000606084860312156136485761364761347c565b5b6000613656868287016134ca565b9350506020613667868287016134ca565b925050604061367886828701613500565b9150509250925092565b600080604083850312156136995761369861347c565b5b60006136a785828601613500565b92505060206136b885828601613500565b9150509250929050565b60006136cd82613481565b9050919050565b6136dd816136c2565b81146136e857600080fd5b50565b6000813590506136fa816136d4565b92915050565b6000602082840312156137165761371561347c565b5b6000613724848285016136eb565b91505092915050565b600060ff82169050919050565b6137438161372d565b82525050565b600060208201905061375e600083018461373a565b92915050565b61376d816134a1565b82525050565b60006020820190506137886000830184613764565b92915050565b6000602082840312156137a4576137a361347c565b5b60006137b2848285016134ca565b91505092915050565b6137c481613555565b81146137cf57600080fd5b50565b6000813590506137e1816137bb565b92915050565b6000602082840312156137fd576137fc61347c565b5b600061380b848285016137d2565b91505092915050565b6000806040838503121561382b5761382a61347c565b5b6000613839858286016134ca565b925050602061384a858286016137d2565b9150509250929050565b60006020828403121561386a5761386961347c565b5b600061387884828501613500565b91505092915050565b600080604083850312156138985761389761347c565b5b60006138a6858286016134ca565b92505060206138b7858286016134ca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061390857607f821691505b6020821081141561391c5761391b6138c1565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061397e6028836133cc565b915061398982613922565b604082019050919050565b600060208201905081810360008301526139ad81613971565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139ea6020836133cc565b91506139f5826139b4565b602082019050919050565b60006020820190508181036000830152613a19816139dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a5a826134df565b9150613a65836134df565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a9a57613a99613a20565b5b828201905092915050565b7f46656520736861726573206d7573742061646420757020746f20313030000000600082015250565b6000613adb601d836133cc565b9150613ae682613aa5565b602082019050919050565b60006020820190508181036000830152613b0a81613ace565b9050919050565b6000604082019050613b26600083018561358b565b613b33602083018461358b565b9392505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613b70601d836133cc565b9150613b7b82613b3a565b602082019050919050565b60006020820190508181036000830152613b9f81613b63565b9050919050565b7f57616c6c657420746f2077616c6c6574207472616e7366657220776974686f7560008201527f742066656520697320616c72656164792073657420746f20746861742076616c60208201527f7565000000000000000000000000000000000000000000000000000000000000604082015250565b6000613c286042836133cc565b9150613c3382613ba6565b606082019050919050565b60006020820190508181036000830152613c5781613c1b565b9050919050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613cba6023836133cc565b9150613cc582613c5e565b604082019050919050565b60006020820190508181036000830152613ce981613cad565b9050919050565b600081519050613cff816134b3565b92915050565b600060208284031215613d1b57613d1a61347c565b5b6000613d2984828501613cf0565b91505092915050565b6000604082019050613d476000830185613764565b613d546020830184613764565b9392505050565b7f46656573206d757374206265206c657373207468616e20323525000000000000600082015250565b6000613d91601a836133cc565b9150613d9c82613d5b565b602082019050919050565b60006020820190508181036000830152613dc081613d84565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b6000613e496045836133cc565b9150613e5482613dc7565b606082019050919050565b60006020820190508181036000830152613e7881613e3c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613edb6025836133cc565b9150613ee682613e7f565b604082019050919050565b60006020820190508181036000830152613f0a81613ece565b9050919050565b7f4d61726b6574696e6720616e6420636861726974792077616c6c65742069732060008201527f616c726561647920746861742061646472657373000000000000000000000000602082015250565b6000613f6d6034836133cc565b9150613f7882613f11565b604082019050919050565b60006020820190508181036000830152613f9c81613f60565b9050919050565b7f4d61726b6574696e6720616e6420636861726974792077616c6c65742063616e60008201527f6e6f74206265206120636f6e7472616374000000000000000000000000000000602082015250565b6000613fff6031836133cc565b915061400a82613fa3565b604082019050919050565b6000602082019050818103600083015261402e81613ff2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061406f826134df565b915061407a836134df565b92508261408a57614089614035565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e30303125206f6620746f74616c20737570706c790000602082015250565b60006140f1603e836133cc565b91506140fc82614095565b604082019050919050565b60006020820190508181036000830152614120816140e4565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000614183602a836133cc565b915061418e82614127565b604082019050919050565b600060208201905081810360008301526141b281614176565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142156026836133cc565b9150614220826141b9565b604082019050919050565b6000602082019050818103600083015261424481614208565b9050919050565b60008151905061425a816134e9565b92915050565b6000602082840312156142765761427561347c565b5b60006142848482850161424b565b91505092915050565b7f42616c616e6365206e6f7420656e6f7567680000000000000000000000000000600082015250565b60006142c36012836133cc565b91506142ce8261428d565b602082019050919050565b600060208201905081810360008301526142f2816142b6565b9050919050565b600060408201905061430e6000830185613764565b61431b602083018461358b565b9392505050565b600081519050614331816137bb565b92915050565b60006020828403121561434d5761434c61347c565b5b600061435b84828501614322565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006143c06024836133cc565b91506143cb82614364565b604082019050919050565b600060208201905081810360008301526143ef816143b3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006144526022836133cc565b915061445d826143f6565b604082019050919050565b6000602082019050818103600083015261448181614445565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006144e46025836133cc565b91506144ef82614488565b604082019050919050565b60006020820190508181036000830152614513816144d7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145766023836133cc565b91506145818261451a565b604082019050919050565b600060208201905081810360008301526145a581614569565b9050919050565b60006145b7826134df565b91506145c2836134df565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145fb576145fa613a20565b5b828202905092915050565b6000614611826134df565b915061461c836134df565b92508282101561462f5761462e613a20565b5b828203905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006146966038836133cc565b91506146a18261463a565b604082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147286026836133cc565b9150614733826146cc565b604082019050919050565b600060208201905081810360008301526147578161471b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006147e16147dc6147d7846147bc565b6135b5565b6134df565b9050919050565b6147f1816147c6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61482c816134a1565b82525050565b600061483e8383614823565b60208301905092915050565b6000602082019050919050565b6000614862826147f7565b61486c8185614802565b935061487783614813565b8060005b838110156148a857815161488f8882614832565b975061489a8361484a565b92505060018101905061487b565b5085935050505092915050565b600060a0820190506148ca600083018861358b565b6148d760208301876147e8565b81810360408301526148e98186614857565b90506148f86060830185613764565b614905608083018461358b565b9695505050505050565b600060c0820190506149246000830189613764565b614931602083018861358b565b61493e60408301876147e8565b61494b60608301866147e8565b6149586080830185613764565b61496560a083018461358b565b979650505050505050565b6000806000606084860312156149895761498861347c565b5b60006149978682870161424b565b93505060206149a88682870161424b565b92505060406149b98682870161424b565b9150509250925092565b60006060820190506149d8600083018661358b565b6149e5602083018561358b565b6149f2604083018461358b565b949350505050565b600081905092915050565b50565b6000614a156000836149fa565b9150614a2082614a05565b600082019050919050565b6000614a3682614a08565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614a9c603a836133cc565b9150614aa782614a40565b604082019050919050565b60006020820190508181036000830152614acb81614a8f565b905091905056fea264697066735822122092af62edf082e0e9dfe40552f8c5140a81da4b738f0103209aab6d675b7ac3f564736f6c63430008090033

Deployed ByteCode

0x6080604052600436106102085760003560e01c80636db7943711610118578063afa4f3b2116100a0578063d13dc28a1161006f578063d13dc28a14610788578063dd62ed3e146107b3578063e2f45605146107f0578063f2fde38b1461081b578063f9d0831a146108445761020f565b8063afa4f3b2146106ce578063b62496f5146106f7578063b9f4af7c14610734578063c02466681461075f5761020f565b806395d89b41116100e757806395d89b41146105d75780639a7a23d614610602578063a457c2d71461062b578063a8cf6afd14610668578063a9059cbb146106915761020f565b80636db794371461052f57806370a0823114610558578063715018a6146105955780638da5cb5b146105ac5761020f565b80632b14ca561161019b578063470624021161016a578063470624021461044a57806349bd5a5e146104755780634fbee193146104a05780635654d0b3146104dd57806365b8dbc0146105065761020f565b80632b14ca561461038e5780632ce6b3c0146103b9578063313ce567146103e2578063395093511461040d5761020f565b80631694505e116101d75780631694505e146102d257806318160ddd146102fd57806323b872dd1461032857806328c1a2c1146103655761020f565b806306fdde0314610214578063095ea7b31461023f57806315291cd41461027c5780631529fbbf146102a75761020f565b3661020f57005b600080fd5b34801561022057600080fd5b5061022961086d565b604051610236919061345a565b60405180910390f35b34801561024b57600080fd5b5061026660048036038101906102619190613515565b6108ff565b6040516102739190613570565b60405180910390f35b34801561028857600080fd5b5061029161091d565b60405161029e919061359a565b60405180910390f35b3480156102b357600080fd5b506102bc610923565b6040516102c99190613570565b60405180910390f35b3480156102de57600080fd5b506102e7610936565b6040516102f49190613614565b60405180910390f35b34801561030957600080fd5b5061031261095c565b60405161031f919061359a565b60405180910390f35b34801561033457600080fd5b5061034f600480360381019061034a919061362f565b610966565b60405161035c9190613570565b60405180910390f35b34801561037157600080fd5b5061038c60048036038101906103879190613682565b610a85565b005b34801561039a57600080fd5b506103a3610bb9565b6040516103b0919061359a565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db9190613700565b610bbf565b005b3480156103ee57600080fd5b506103f7610ce3565b6040516104049190613749565b60405180910390f35b34801561041957600080fd5b50610434600480360381019061042f9190613515565b610cec565b6040516104419190613570565b60405180910390f35b34801561045657600080fd5b5061045f610d98565b60405161046c919061359a565b60405180910390f35b34801561048157600080fd5b5061048a610d9e565b6040516104979190613773565b60405180910390f35b3480156104ac57600080fd5b506104c760048036038101906104c2919061378e565b610dc4565b6040516104d49190613570565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff91906137e7565b610e1a565b005b34801561051257600080fd5b5061052d6004803603810190610528919061378e565b610f24565b005b34801561053b57600080fd5b5061055660048036038101906105519190613682565b61131d565b005b34801561056457600080fd5b5061057f600480360381019061057a919061378e565b611454565b60405161058c919061359a565b60405180910390f35b3480156105a157600080fd5b506105aa61149c565b005b3480156105b857600080fd5b506105c16115f4565b6040516105ce9190613773565b60405180910390f35b3480156105e357600080fd5b506105ec61161e565b6040516105f9919061345a565b60405180910390f35b34801561060e57600080fd5b5061062960048036038101906106249190613814565b6116b0565b005b34801561063757600080fd5b50610652600480360381019061064d9190613515565b6117e6565b60405161065f9190613570565b60405180910390f35b34801561067457600080fd5b5061068f600480360381019061068a919061378e565b6118d1565b005b34801561069d57600080fd5b506106b860048036038101906106b39190613515565b611adf565b6040516106c59190613570565b60405180910390f35b3480156106da57600080fd5b506106f560048036038101906106f09190613854565b611afd565b005b34801561070357600080fd5b5061071e6004803603810190610719919061378e565b611bf5565b60405161072b9190613570565b60405180910390f35b34801561074057600080fd5b50610749611c15565b604051610756919061359a565b60405180910390f35b34801561076b57600080fd5b5061078660048036038101906107819190613814565b611c1b565b005b34801561079457600080fd5b5061079d611dee565b6040516107aa9190613773565b60405180910390f35b3480156107bf57600080fd5b506107da60048036038101906107d59190613881565b611e14565b6040516107e7919061359a565b60405180910390f35b3480156107fc57600080fd5b50610805611e9b565b604051610812919061359a565b60405180910390f35b34801561082757600080fd5b50610842600480360381019061083d919061378e565b611ea1565b005b34801561085057600080fd5b5061086b6004803603810190610866919061378e565b612068565b005b60606003805461087c906138f0565b80601f01602080910402602001604051908101604052809291908181526020018280546108a8906138f0565b80156108f55780601f106108ca576101008083540402835291602001916108f5565b820191906000526020600020905b8154815290600101906020018083116108d857829003601f168201915b5050505050905090565b600061091361090c612267565b848461226f565b6001905092915050565b60085481565b600a60149054906101000a900460ff1681565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109b2612267565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a6e5782811015610a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5090613994565b60405180910390fd5b610a6d85610a65612267565b85840361226f565b5b610a7985858561243a565b60019150509392505050565b610a8d612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b1c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1390613a00565b60405180910390fd5b60648183610b2a9190613a4f565b14610b6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6190613af1565b60405180910390fd5b81600981905550806008819055507fe27eff07c82fe40755857df4c86d1146ab1d125c63b256a87c7ff2fba40c224e600954600854604051610bad929190613b11565b60405180910390a15050565b60075481565b610bc7612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4d90613a00565b60405180910390fd5b60004711610c99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9090613b86565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610cdf573d6000803e3d6000fd5b5050565b60006009905090565b6000610d8e610cf9612267565b848460016000610d07612267565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610d899190613a4f565b61226f565b6001905092915050565b60065481565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610e22612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea890613a00565b60405180910390fd5b801515600a60149054906101000a900460ff1615151415610f07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610efe90613c3e565b60405180910390fd5b80600a60146101000a81548160ff02191690831515021790555050565b610f2c612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb290613a00565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561104c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104390613cd0565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8fc842bbd331dfa973645f4ed48b11683d501ebf1352708d77a5da2ab49a576e60405160405180910390a380600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b15801561117357600080fd5b505afa158015611187573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ab9190613d05565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b15801561122f57600080fd5b505afa158015611243573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112679190613d05565b6040518363ffffffff1660e01b8152600401611284929190613d32565b602060405180830381600087803b15801561129e57600080fd5b505af11580156112b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112d69190613d05565b905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b611325612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ab90613a00565b60405180910390fd5b601982111580156113c6575060198111155b611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90613da7565b60405180910390fd5b81600681905550806007819055507f5c6323bf1c2d7aaea2c091a4751c1c87af7f2864650c336507a77d0557af37a1600654600754604051611448929190613b11565b60405180910390a15050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6114a4612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611533576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152a90613a00565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461162d906138f0565b80601f0160208091040260200160405190810160405280929190818152602001828054611659906138f0565b80156116a65780601f1061167b576101008083540402835291602001916116a6565b820191906000526020600020905b81548152906001019060200180831161168957829003601f168201915b5050505050905090565b6116b8612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611747576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173e90613a00565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156117d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117cf90613e5f565b60405180910390fd5b6117e282826128a7565b5050565b600080600160006117f5612267565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156118b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a990613ef1565b60405180910390fd5b6118c66118bd612267565b8585840361226f565b600191505092915050565b6118d9612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195f90613a00565b60405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156119f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f090613f83565b60405180910390fd5b611a02816129db565b15611a42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3990614015565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f3d965dd74b04c63d6adfe5ef031c7097655a7df206fe10af4269eddd8582315e600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051611ad49190613773565b60405180910390a150565b6000611af3611aec612267565b848461243a565b6001905092915050565b611b05612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8b90613a00565b60405180910390fd5b620186a0611ba061095c565b611baa9190614064565b8111611beb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611be290614107565b60405180910390fd5b80600e8190555050565b60106020528060005260406000206000915054906101000a900460ff1681565b60095481565b611c23612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca990613a00565b60405180910390fd5b801515600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151415611d45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d3c90614199565b60405180910390fd5b80600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611de29190613570565b60405180910390a25050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600e5481565b611ea9612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f2f90613a00565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f9f9061422b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612070612267565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146120ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f690613a00565b60405180910390fd5b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161213f9190613773565b60206040518083038186803b15801561215757600080fd5b505afa15801561216b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061218f9190614260565b9050600081116121d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cb906142d9565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b815260040161220f9291906142f9565b602060405180830381600087803b15801561222957600080fd5b505af115801561223d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122619190614337565b50505050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156122df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122d6906143d6565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561234f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234690614468565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161242d919061359a565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156124aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124a1906144fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561251a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125119061458c565b60405180910390fd5b60008114156125345761252f838360006129fe565b6128a2565b600061253f30611454565b90506000600e5482101590508080156125655750600d60149054906101000a900460ff16155b80156125bb5750601060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561265f576001600d60146101000a81548160ff0219169083151502179055506000600854111561260f5760006064600854846125f891906145ac565b6126029190614064565b905061260d81612c7f565b505b6000600954111561264357600060646009548461262c91906145ac565b6126369190614064565b905061264181612ff7565b505b6000600d60146101000a81548160ff0219169083151502179055505b6000600d60149054906101000a900460ff16159050600f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127155750600f60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561271f57600090505b600a60149054906101000a900460ff1680156127895750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156127e35750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156127ed57600090505b8015612893576000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141561285557600654905061285b565b60075490505b60006064828761286b91906145ac565b6128759190614064565b905080866128839190614606565b95506128908830836129fe565b50505b61289e8686866129fe565b5050505b505050565b801515601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515141561293a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612931906146ac565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a65906144fa565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612ade576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad59061458c565b60405180910390fd5b612ae98383836132c3565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612b6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b669061473e565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612c029190613a4f565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612c66919061359a565b60405180910390a3612c798484846132c8565b50505050565b6000600282612c8e9190614064565b905060008183612c9e9190614606565b905060004790506000600267ffffffffffffffff811115612cc257612cc161475e565b5b604051908082528060200260200182016040528015612cf05781602001602082028036833780820191505090505b5090503081600081518110612d0857612d0761478d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b158015612daa57600080fd5b505afa158015612dbe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612de29190613d05565b81600181518110612df657612df561478d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8560008430426040518663ffffffff1660e01b8152600401612e949594939291906148b5565b600060405180830381600087803b158015612eae57600080fd5b505af1158015612ec2573d6000803e3d6000fd5b5050505060008247612ed49190614606565b9050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6529ab4823087600080600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401612f5f9695949392919061490f565b6060604051808303818588803b158015612f7857600080fd5b505af1158015612f8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612fb19190614970565b5050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb561858286604051612fe7939291906149c3565b60405180910390a1505050505050565b60004790506000600267ffffffffffffffff8111156130195761301861475e565b5b6040519080825280602002602001820160405280156130475781602001602082028036833780820191505090505b509050308160008151811061305f5761305e61478d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634ed154606040518163ffffffff1660e01b815260040160206040518083038186803b15801561310157600080fd5b505afa158015613115573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131399190613d05565b8160018151811061314d5761314c61478d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b43d9bbb8460008430426040518663ffffffff1660e01b81526004016131eb9594939291906148b5565b600060405180830381600087803b15801561320557600080fd5b505af1158015613219573d6000803e3d6000fd5b505050506000824761322b9190614606565b90506000600954111561328457600060646009548361324a91906145ac565b6132549190614064565b9050613282600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826132cd565b505b7f2aa1b563b7a01a4a770797417da7811b113e2be30276adfbff4afc6ca9c8aada84826040516132b5929190613b11565b60405180910390a150505050565b505050565b505050565b80471015613310576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161330790613b86565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff168260405161333690614a2b565b60006040518083038185875af1925050503d8060008114613373576040519150601f19603f3d011682016040523d82523d6000602084013e613378565b606091505b50509050806133bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133b390614ab2565b60405180910390fd5b505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156133fb5780820151818401526020810190506133e0565b8381111561340a576000848401525b50505050565b6000601f19601f8301169050919050565b600061342c826133c1565b61343681856133cc565b93506134468185602086016133dd565b61344f81613410565b840191505092915050565b600060208201905081810360008301526134748184613421565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006134ac82613481565b9050919050565b6134bc816134a1565b81146134c757600080fd5b50565b6000813590506134d9816134b3565b92915050565b6000819050919050565b6134f2816134df565b81146134fd57600080fd5b50565b60008135905061350f816134e9565b92915050565b6000806040838503121561352c5761352b61347c565b5b600061353a858286016134ca565b925050602061354b85828601613500565b9150509250929050565b60008115159050919050565b61356a81613555565b82525050565b60006020820190506135856000830184613561565b92915050565b613594816134df565b82525050565b60006020820190506135af600083018461358b565b92915050565b6000819050919050565b60006135da6135d56135d084613481565b6135b5565b613481565b9050919050565b60006135ec826135bf565b9050919050565b60006135fe826135e1565b9050919050565b61360e816135f3565b82525050565b60006020820190506136296000830184613605565b92915050565b6000806000606084860312156136485761364761347c565b5b6000613656868287016134ca565b9350506020613667868287016134ca565b925050604061367886828701613500565b9150509250925092565b600080604083850312156136995761369861347c565b5b60006136a785828601613500565b92505060206136b885828601613500565b9150509250929050565b60006136cd82613481565b9050919050565b6136dd816136c2565b81146136e857600080fd5b50565b6000813590506136fa816136d4565b92915050565b6000602082840312156137165761371561347c565b5b6000613724848285016136eb565b91505092915050565b600060ff82169050919050565b6137438161372d565b82525050565b600060208201905061375e600083018461373a565b92915050565b61376d816134a1565b82525050565b60006020820190506137886000830184613764565b92915050565b6000602082840312156137a4576137a361347c565b5b60006137b2848285016134ca565b91505092915050565b6137c481613555565b81146137cf57600080fd5b50565b6000813590506137e1816137bb565b92915050565b6000602082840312156137fd576137fc61347c565b5b600061380b848285016137d2565b91505092915050565b6000806040838503121561382b5761382a61347c565b5b6000613839858286016134ca565b925050602061384a858286016137d2565b9150509250929050565b60006020828403121561386a5761386961347c565b5b600061387884828501613500565b91505092915050565b600080604083850312156138985761389761347c565b5b60006138a6858286016134ca565b92505060206138b7858286016134ca565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061390857607f821691505b6020821081141561391c5761391b6138c1565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061397e6028836133cc565b915061398982613922565b604082019050919050565b600060208201905081810360008301526139ad81613971565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006139ea6020836133cc565b91506139f5826139b4565b602082019050919050565b60006020820190508181036000830152613a19816139dd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000613a5a826134df565b9150613a65836134df565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613a9a57613a99613a20565b5b828201905092915050565b7f46656520736861726573206d7573742061646420757020746f20313030000000600082015250565b6000613adb601d836133cc565b9150613ae682613aa5565b602082019050919050565b60006020820190508181036000830152613b0a81613ace565b9050919050565b6000604082019050613b26600083018561358b565b613b33602083018461358b565b9392505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613b70601d836133cc565b9150613b7b82613b3a565b602082019050919050565b60006020820190508181036000830152613b9f81613b63565b9050919050565b7f57616c6c657420746f2077616c6c6574207472616e7366657220776974686f7560008201527f742066656520697320616c72656164792073657420746f20746861742076616c60208201527f7565000000000000000000000000000000000000000000000000000000000000604082015250565b6000613c286042836133cc565b9150613c3382613ba6565b606082019050919050565b60006020820190508181036000830152613c5781613c1b565b9050919050565b7f54686520726f7574657220616c7265616479206861732074686174206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613cba6023836133cc565b9150613cc582613c5e565b604082019050919050565b60006020820190508181036000830152613ce981613cad565b9050919050565b600081519050613cff816134b3565b92915050565b600060208284031215613d1b57613d1a61347c565b5b6000613d2984828501613cf0565b91505092915050565b6000604082019050613d476000830185613764565b613d546020830184613764565b9392505050565b7f46656573206d757374206265206c657373207468616e20323525000000000000600082015250565b6000613d91601a836133cc565b9150613d9c82613d5b565b602082019050919050565b60006020820190508181036000830152613dc081613d84565b9050919050565b7f5468652050616e63616b655377617020706169722063616e6e6f74206265207260008201527f656d6f7665642066726f6d206175746f6d617465644d61726b65744d616b657260208201527f5061697273000000000000000000000000000000000000000000000000000000604082015250565b6000613e496045836133cc565b9150613e5482613dc7565b606082019050919050565b60006020820190508181036000830152613e7881613e3c565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613edb6025836133cc565b9150613ee682613e7f565b604082019050919050565b60006020820190508181036000830152613f0a81613ece565b9050919050565b7f4d61726b6574696e6720616e6420636861726974792077616c6c65742069732060008201527f616c726561647920746861742061646472657373000000000000000000000000602082015250565b6000613f6d6034836133cc565b9150613f7882613f11565b604082019050919050565b60006020820190508181036000830152613f9c81613f60565b9050919050565b7f4d61726b6574696e6720616e6420636861726974792077616c6c65742063616e60008201527f6e6f74206265206120636f6e7472616374000000000000000000000000000000602082015250565b6000613fff6031836133cc565b915061400a82613fa3565b604082019050919050565b6000602082019050818103600083015261402e81613ff2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061406f826134df565b915061407a836134df565b92508261408a57614089614035565b5b828204905092915050565b7f53776170546f6b656e734174416d6f756e74206d75737420626520677265617460008201527f6572207468616e20302e30303125206f6620746f74616c20737570706c790000602082015250565b60006140f1603e836133cc565b91506140fc82614095565b604082019050919050565b60006020820190508181036000830152614120816140e4565b9050919050565b7f4163636f756e7420697320616c7265616479207468652076616c7565206f662060008201527f276578636c756465642700000000000000000000000000000000000000000000602082015250565b6000614183602a836133cc565b915061418e82614127565b604082019050919050565b600060208201905081810360008301526141b281614176565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006142156026836133cc565b9150614220826141b9565b604082019050919050565b6000602082019050818103600083015261424481614208565b9050919050565b60008151905061425a816134e9565b92915050565b6000602082840312156142765761427561347c565b5b60006142848482850161424b565b91505092915050565b7f42616c616e6365206e6f7420656e6f7567680000000000000000000000000000600082015250565b60006142c36012836133cc565b91506142ce8261428d565b602082019050919050565b600060208201905081810360008301526142f2816142b6565b9050919050565b600060408201905061430e6000830185613764565b61431b602083018461358b565b9392505050565b600081519050614331816137bb565b92915050565b60006020828403121561434d5761434c61347c565b5b600061435b84828501614322565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006143c06024836133cc565b91506143cb82614364565b604082019050919050565b600060208201905081810360008301526143ef816143b3565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006144526022836133cc565b915061445d826143f6565b604082019050919050565b6000602082019050818103600083015261448181614445565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006144e46025836133cc565b91506144ef82614488565b604082019050919050565b60006020820190508181036000830152614513816144d7565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b60006145766023836133cc565b91506145818261451a565b604082019050919050565b600060208201905081810360008301526145a581614569565b9050919050565b60006145b7826134df565b91506145c2836134df565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156145fb576145fa613a20565b5b828202905092915050565b6000614611826134df565b915061461c836134df565b92508282101561462f5761462e613a20565b5b828203905092915050565b7f4175746f6d61746564206d61726b6574206d616b65722070616972206973206160008201527f6c72656164792073657420746f20746861742076616c75650000000000000000602082015250565b60006146966038836133cc565b91506146a18261463a565b604082019050919050565b600060208201905081810360008301526146c581614689565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006147286026836133cc565b9150614733826146cc565b604082019050919050565b600060208201905081810360008301526147578161471b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000819050919050565b60006147e16147dc6147d7846147bc565b6135b5565b6134df565b9050919050565b6147f1816147c6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61482c816134a1565b82525050565b600061483e8383614823565b60208301905092915050565b6000602082019050919050565b6000614862826147f7565b61486c8185614802565b935061487783614813565b8060005b838110156148a857815161488f8882614832565b975061489a8361484a565b92505060018101905061487b565b5085935050505092915050565b600060a0820190506148ca600083018861358b565b6148d760208301876147e8565b81810360408301526148e98186614857565b90506148f86060830185613764565b614905608083018461358b565b9695505050505050565b600060c0820190506149246000830189613764565b614931602083018861358b565b61493e60408301876147e8565b61494b60608301866147e8565b6149586080830185613764565b61496560a083018461358b565b979650505050505050565b6000806000606084860312156149895761498861347c565b5b60006149978682870161424b565b93505060206149a88682870161424b565b92505060406149b98682870161424b565b9150509250925092565b60006060820190506149d8600083018661358b565b6149e5602083018561358b565b6149f2604083018461358b565b949350505050565b600081905092915050565b50565b6000614a156000836149fa565b9150614a2082614a05565b600082019050919050565b6000614a3682614a08565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614a9c603a836133cc565b9150614aa782614a40565b604082019050919050565b60006020820190508181036000830152614acb81614a8f565b905091905056fea264697066735822122092af62edf082e0e9dfe40552f8c5140a81da4b738f0103209aab6d675b7ac3f564736f6c63430008090033