ETH Price: $3,602.35 (+5.15%)

Token

PEPI (PEPI)
 

Overview

Max Total Supply

100,000,000 PEPI

Holders

254

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000001 PEPI

Value
$0.00
0x53814c4ac686412dbec03bf6a04e4fdb25fd72a2
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
PEPICOIN

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-19
*/

//SPDX-License-Identifier: Unlicensed

/* 

 _______  _______  _______  ___  
|       ||       ||       ||   | 
|    _  ||    ___||    _  ||   | 
|   |_| ||   |___ |   |_| ||   | 
|    ___||    ___||    ___||   | 
|   |    |   |___ |   |    |   | 
|___|    |_______||___|    |___| 

*/

pragma solidity 0.8.21;


interface IERC20 {

    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

    function _msgData() internal view returns (bytes memory) {
        this;
        return msg.data;
    }
}

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

interface IPancakePair {
    function sync() external;
}

interface IDEXRouter {

    function factory() external pure returns (address);
    function WETH() external pure returns (address);

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

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

}

contract Ownable is Context {
    address private _owner;

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

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

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

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
   
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

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

contract PEPICOIN is IERC20, Ownable {
    using SafeMath for uint256;
    
    address WETH;
    address constant DEAD          = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO          = 0x0000000000000000000000000000000000000000;

    string _name = "PEPI";
    string _symbol = "PEPI";
    uint8 constant _decimals = 9;

    uint256 _totalSupply = 1 * 10**8 * 10**_decimals; 
    uint256 public _maxTxAmount = (_totalSupply * 1) / 100; // 1%
    uint256 public _maxWalletSize = (_totalSupply * 1) / 100; // 1%  

    mapping (address => uint256) public _rOwned;
    uint256 public _totalProportion = _totalSupply;

    mapping (address => mapping (address => uint256)) _allowances;
    mapping (address => bool) isCooldownExempt;    
    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
 
    uint256 liquidityFeeBuy = 3; 
    uint256 liquidityFeeSell = 3;

    uint256 TeamFeeBuy = 0;  
    uint256 TeamFeeSell = 0;  

    uint256 marketingFeeBuy = 4;   
    uint256 marketingFeeSell = 15;   

    uint256 reflectionFeeBuy = 1;   
    uint256 reflectionFeeSell = 2;   

    uint256 totalFeeBuy = marketingFeeBuy + liquidityFeeBuy + TeamFeeBuy + reflectionFeeBuy;     
    uint256 totalFeeSell = marketingFeeSell + liquidityFeeSell + TeamFeeSell + reflectionFeeSell; 

    uint256 feeDenominator = 100; 
       
    address autoLPReceiver;
    address marketingReceiver;
    address teamReceiver;

    uint256 targetLiquidity = 100;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = false;

    bool public buyCooldownEnabled = true;
    uint8 public CooldownTimerInterval = 10; //seconds
    mapping (address => uint) public CooldownTimer;
    
    bool public claimingFees = true; 
    bool alternateSwaps = true;  
    uint256 smallSwapThreshold = _totalSupply * 1 / 1000; // .1%
    uint256 largeSwapThreshold = _totalSupply * 2 / 1000; // .2%

    uint256 public swapThreshold = smallSwapThreshold;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () {

        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;
        _allowances[address(this)][msg.sender] = type(uint256).max;

        isTxLimitExempt[address(this)] = true;
        isTxLimitExempt[address(router)] = true;
	    isTxLimitExempt[pair] = true;
        isTxLimitExempt[msg.sender] = true;
        isTxLimitExempt[marketingReceiver] = true;
        isFeeExempt[msg.sender] = true;
        isCooldownExempt[msg.sender] = true;
        isCooldownExempt[DEAD] = true;
        isCooldownExempt[address(this)] = true;

        
        autoLPReceiver = msg.sender; 
        teamReceiver = msg.sender;
        marketingReceiver = msg.sender;

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

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure returns (uint8) { return _decimals; }
    function name() external view returns (string memory) { return _name; }
    function symbol() external view returns (string memory) { return _symbol; }
    function getOwner() external view returns (address) { return owner(); }
    function balanceOf(address account) public view override returns (uint256) { return tokenFromReflection(_rOwned[account]); }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }
       

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

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

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

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

        return _transferFrom(sender, recipient, amount);
    }

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

        if (recipient != pair && recipient != DEAD && recipient != marketingReceiver && !isTxLimitExempt[recipient]) {
            require(balanceOf(recipient) + amount <= _maxWalletSize, "Max Wallet Exceeded");

        if (sender == pair &&
            buyCooldownEnabled &&
            !isCooldownExempt[recipient]) {
            require(CooldownTimer[recipient] < block.timestamp,"Please wait for between buys");
            CooldownTimer[recipient] = block.timestamp + CooldownTimerInterval;
        }
        
        }
        
        if(!isTxLimitExempt[sender]) {
            require(amount <= _maxTxAmount, "Transaction Amount Exceeded");
        }
     
        if (recipient != pair && recipient != DEAD && !isTxLimitExempt[recipient]) {
            require(tradingOpen,"Trading not open yet");
        
        }

        if(shouldSwapBack()){ swapBack(); }

        uint256 proportionAmount = tokensToProportion(amount);

        _rOwned[sender] = _rOwned[sender].sub(proportionAmount, "Insufficient Balance");

        uint256 proportionReceived = shouldTakeFee(sender) && shouldTakeFee(recipient) ? takeFeeInProportions(sender == pair? true : false, sender, recipient, proportionAmount) : proportionAmount;
        _rOwned[recipient] = _rOwned[recipient].add(proportionReceived);

        emit Transfer(sender, recipient, tokenFromReflection(proportionReceived));
        return true;
    }

    function tokensToProportion(uint256 tokens) public view returns (uint256) {
        return tokens.mul(_totalProportion).div(_totalSupply);
    }

    function tokenFromReflection(uint256 proportion) public view returns (uint256) {
        return proportion.mul(_totalSupply).div(_totalProportion);
    }

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

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

    }

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

    function getTotalFeeBuy(bool) public view returns (uint256) {
        return totalFeeBuy;
    }

    function getTotalFeeSell(bool) public view returns (uint256) {
        return totalFeeSell;
    }

    function takeFeeInProportions(bool buying, address sender, address receiver, uint256 proportionAmount) internal returns (uint256) {
        uint256 proportionFeeAmount = buying == true? proportionAmount.mul(getTotalFeeBuy(receiver == pair)).div(feeDenominator) :
        proportionAmount.mul(getTotalFeeSell(receiver == pair)).div(feeDenominator);

        
        uint256 proportionReflected = buying == true? proportionFeeAmount.mul(reflectionFeeBuy).div(totalFeeBuy) :
        proportionFeeAmount.mul(reflectionFeeSell).div(totalFeeSell);

        _totalProportion = _totalProportion.sub(proportionReflected);

        
        uint256 _proportionToContract = proportionFeeAmount.sub(proportionReflected);
        _rOwned[address(this)] = _rOwned[address(this)].add(_proportionToContract);

        emit Transfer(sender, address(this), tokenFromReflection(_proportionToContract));
        emit Reflect(proportionReflected, _totalProportion);
        return proportionAmount.sub(proportionFeeAmount);
    }

     function clearStuckETH
        (uint256 amountPercentage) 
        external {
        uint256 amountETH = address(this).balance;
        payable(teamReceiver).transfer(amountETH * amountPercentage / 100);

        emit ClearStuck(amountPercentage);
    }

     function clearForeignToken
     (address tokenAddress, uint256 tokens) 
     external onlyOwner returns (bool) {
     require(tokenAddress != address(this), "Owner cannot claim native tokens"); 
     if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }
        emit ClearToken(tokenAddress, tokens);
        return IERC20(tokenAddress).transfer(msg.sender, tokens);
       
    }
  
      function removeLimits() 
      external onlyOwner { 
     _maxWalletSize = _totalSupply;
     _maxTxAmount = _totalSupply;

    }

    function multiSendTokens(address[] memory accounts, uint256[] memory amounts) external onlyOwner {
        require(accounts.length == amounts.length, "Lengths do not match.");
        for (uint16 i = 0; i < accounts.length; i++) {
        require(balanceOf(msg.sender) >= amounts[i], "Not enough tokens.");       
        _basicTransfer(msg.sender,accounts[i],amounts[i]);
    }
}
  

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

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFeeSell;
        uint256 _totalFee = totalFeeSell.sub(reflectionFeeSell);
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(_totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

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

        uint256 balanceBefore = address(this).balance;

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

        uint256 amountETH = address(this).balance.sub(balanceBefore);
        uint256 totalETHFee = _totalFee.sub(dynamicLiquidityFee.div(2));
        uint256 amountETHLiquidity = amountETH.mul(liquidityFeeSell).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFeeSell).div(totalETHFee);
        uint256 amountETHTeam = amountETH.mul(TeamFeeSell).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(teamReceiver).call{value: amountETHTeam, gas: 30000}("");
             
            if(amountToLiquify > 0) {
             router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLPReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }

        swapThreshold = !alternateSwaps ? swapThreshold : swapThreshold == smallSwapThreshold ? largeSwapThreshold : smallSwapThreshold;
    }

    function setSwapThreshold
    (bool _enabled, uint256 _amountS, uint256 _amountL, bool _alternate) 
    external onlyOwner {
    require(_amountS < (_totalSupply/50), "Cannot set swap amount above 2%");
    require(_amountS > (_totalSupply/100000), "Cannot set swap amount below 0.001%");
    require(_amountL < (_totalSupply/50), "Cannot set swap amount above 2%");
    require(_amountL > (_totalSupply/100000), "Cannot set swap amount below 0.001%");
    alternateSwaps = _alternate;
    claimingFees = _enabled;
    smallSwapThreshold = _amountS;
    largeSwapThreshold = _amountL;
    swapThreshold = smallSwapThreshold;

        emit set_SellAmounts(alternateSwaps, claimingFees, smallSwapThreshold, largeSwapThreshold);
    }

    function enableTrading() 
    public onlyOwner {
    require (!tradingOpen);
    tradingOpen = true;
    
    }

    function setFees
    (uint256 _liquidityFeeBuy, uint256 _reflectionFeeBuy, uint256 _marketingFeeBuy, uint256 _TeamFeeBuy, uint256 _feeDenominator,
    uint256 _liquidityFeeSell, uint256 _reflectionFeeSell, uint256 _marketingFeeSell, uint256 _TeamFeeSell) 
    external onlyOwner {
    liquidityFeeBuy = _liquidityFeeBuy;
    reflectionFeeBuy = _reflectionFeeBuy;
    marketingFeeBuy = _marketingFeeBuy;
    TeamFeeBuy = _TeamFeeBuy;
    totalFeeBuy = liquidityFeeBuy.add(reflectionFeeBuy).add(marketingFeeBuy).add(TeamFeeBuy);

    liquidityFeeSell = _liquidityFeeSell;
    reflectionFeeSell = _reflectionFeeSell;
    marketingFeeSell = _marketingFeeSell;
    TeamFeeSell = _TeamFeeSell;
    totalFeeSell = liquidityFeeSell.add(reflectionFeeSell).add(marketingFeeSell).add(TeamFeeSell);
       
    feeDenominator = _feeDenominator;

    require(totalFeeBuy <= feeDenominator/1,"Cannot set buy fees above 20%"); 
    require(totalFeeSell <=feeDenominator/1,"Cannot set sell fees above 20%"); 
        
     }
     
    function updateMaxWallet
    (uint256 maxWalletHolding) 
    external onlyOwner() {
    require(maxWalletHolding >= 1);
    _maxWalletSize = (_totalSupply * maxWalletHolding ) / 1000;
    emit set_MaxWallet(_maxWalletSize);
    }

    function updateMaxTransaction
    (uint256 maxTransactionSize) 
    external onlyOwner() {
    require(maxTransactionSize >= 1, "Cannot set max TX below .1%");
     _maxTxAmount = (_totalSupply * maxTransactionSize ) / 1000;
    emit set_MaxTransaction(_maxTxAmount);
    
      }
      
    function addTaxExemption
    (address[] calldata addresses, bool status) 
    public onlyOwner {
    for (uint256 i; i < addresses.length; ++i) {
    isFeeExempt[addresses[i]] = status;
        }
    }

    function addTXLimitExemption
    (address[] calldata addresses, bool status)
    public onlyOwner {
    for (uint256 i; i < addresses.length; ++i) {
    isTxLimitExempt[addresses[i]] = status;
        } 
    }

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

    
    function setPresaleAddress
    (address holder, bool exempt) external onlyOwner {
    isFeeExempt[holder] = exempt;
    isTxLimitExempt[holder] = exempt;
    }
    
    function setTaxReceivers
    (address _marketingReceiver, address _autoLPReceiver, address _TeamReceiver) 
    external onlyOwner {
    marketingReceiver = _marketingReceiver;
    teamReceiver = _TeamReceiver;
    autoLPReceiver = _autoLPReceiver;

    emit set_Receivers(marketingReceiver, teamReceiver, autoLPReceiver);
    }

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

    function getLiquidityBacking
    (uint256 accuracy) 
    private view returns (uint256) {
    return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());

    }

    function isOverLiquified
    (uint256 target, uint256 accuracy)
    public view returns (bool) {
    return getLiquidityBacking(accuracy) > target;
    
    }

    event AutoLiquify(uint256 amountETH, uint256 amountTokens);
    event user_exemptfromfees(address Wallet, bool Exempt);
    event user_TxExempt(address Wallet, bool Exempt);
    event ClearStuck(uint256 amount);
    event ClearToken(address tokenAddress, uint256 tokens);
    event set_Receivers(address marketingReceiver, address teamReceiver,address autoLPReceiver);
    event set_MaxWallet(uint256 maxWallet);
    event set_MaxTransaction(uint256 maxTXAmount);
    event set_SellAmounts(bool enabled, bool alternate, uint256 amountS, uint256 amountL);
    event Reflect(uint256 amountReflected, uint256 newTotalProportion);
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClearStuck","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"ClearToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountReflected","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"newTotalProportion","type":"uint256"}],"name":"Reflect","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTXAmount","type":"uint256"}],"name":"set_MaxTransaction","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxWallet","type":"uint256"}],"name":"set_MaxWallet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"marketingReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"teamReceiver","type":"address"},{"indexed":false,"internalType":"address","name":"autoLPReceiver","type":"address"}],"name":"set_Receivers","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"},{"indexed":false,"internalType":"bool","name":"alternate","type":"bool"},{"indexed":false,"internalType":"uint256","name":"amountS","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountL","type":"uint256"}],"name":"set_SellAmounts","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_TxExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"Wallet","type":"address"},{"indexed":false,"internalType":"bool","name":"Exempt","type":"bool"}],"name":"user_exemptfromfees","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"CooldownTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_rOwned","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_totalProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"addCooldownExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addTXLimitExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"status","type":"bool"}],"name":"addTaxExemption","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimingFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearForeignToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFeeBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"","type":"bool"}],"name":"getTotalFeeSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"multiSendTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_TeamFeeBuy","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"},{"internalType":"uint256","name":"_liquidityFeeSell","type":"uint256"},{"internalType":"uint256","name":"_reflectionFeeSell","type":"uint256"},{"internalType":"uint256","name":"_marketingFeeSell","type":"uint256"},{"internalType":"uint256","name":"_TeamFeeSell","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setPresaleAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amountS","type":"uint256"},{"internalType":"uint256","name":"_amountL","type":"uint256"},{"internalType":"bool","name":"_alternate","type":"bool"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingReceiver","type":"address"},{"internalType":"address","name":"_autoLPReceiver","type":"address"},{"internalType":"address","name":"_TeamReceiver","type":"address"}],"name":"setTaxReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"proportion","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"tokensToProportion","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTransactionSize","type":"uint256"}],"name":"updateMaxTransaction","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletHolding","type":"uint256"}],"name":"updateMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526040518060400160405280600481526020017f5045504900000000000000000000000000000000000000000000000000000000815250600290816200004a919062000e56565b506040518060400160405280600481526020017f50455049000000000000000000000000000000000000000000000000000000008152506003908162000091919062000e56565b506009600a620000a29190620010c3565b6305f5e100620000b3919062001113565b60045560646001600454620000c9919062001113565b620000d591906200118a565b60055560646001600454620000eb919062001113565b620000f791906200118a565b6006556004546008556003600d556003600e555f600f555f6010556004601155600f60125560016013556002601455601354600f54600d546011546200013e9190620011c1565b6200014a9190620011c1565b620001569190620011c1565b601555601454601054600e54601254620001719190620011c1565b6200017d9190620011c1565b620001899190620011c1565b60165560646017556064601b556064601c555f601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff021916908315150217905550600a601e60166101000a81548160ff021916908360ff160217905550600160205f6101000a81548160ff0219169083151502179055506001602060016101000a81548160ff0219169083151502179055506103e8600160045462000235919062001113565b6200024191906200118a565b6021556103e8600260045462000258919062001113565b6200026491906200118a565b60225560215460235534801562000279575f80fd5b505f6200028b62000beb60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d601d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620003e6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200040c919062001260565b60015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620004b6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620004dc919062001260565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b815260040162000539929190620012a1565b6020604051808303815f875af115801562000556573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200057c919062001260565b601e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506001600c5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600c5f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600b5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506001600a5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503360185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060045460075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60045460405162000bdd9190620012dd565b60405180910390a3620012f8565b5f33905090565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000c6e57607f821691505b60208210810362000c845762000c8362000c29565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000ce87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000cab565b62000cf4868362000cab565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000d3e62000d3862000d328462000d0c565b62000d15565b62000d0c565b9050919050565b5f819050919050565b62000d598362000d1e565b62000d7162000d688262000d45565b84845462000cb7565b825550505050565b5f90565b62000d8762000d79565b62000d9481848462000d4e565b505050565b5b8181101562000dbb5762000daf5f8262000d7d565b60018101905062000d9a565b5050565b601f82111562000e0a5762000dd48162000c8a565b62000ddf8462000c9c565b8101602085101562000def578190505b62000e0762000dfe8562000c9c565b83018262000d99565b50505b505050565b5f82821c905092915050565b5f62000e2c5f198460080262000e0f565b1980831691505092915050565b5f62000e46838362000e1b565b9150826002028217905092915050565b62000e618262000bf2565b67ffffffffffffffff81111562000e7d5762000e7c62000bfc565b5b62000e89825462000c56565b62000e9682828562000dbf565b5f60209050601f83116001811462000ecc575f841562000eb7578287015190505b62000ec3858262000e39565b86555062000f32565b601f19841662000edc8662000c8a565b5f5b8281101562000f055784890151825560018201915060208501945060208101905062000ede565b8683101562000f25578489015162000f21601f89168262000e1b565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000fc45780860481111562000f9c5762000f9b62000f3a565b5b600185161562000fac5780820291505b808102905062000fbc8562000f67565b945062000f7c565b94509492505050565b5f8262000fde5760019050620010b0565b8162000fed575f9050620010b0565b8160018114620010065760028114620010115762001047565b6001915050620010b0565b60ff84111562001026576200102562000f3a565b5b8360020a91508482111562001040576200103f62000f3a565b5b50620010b0565b5060208310610133831016604e8410600b8410161715620010815782820a9050838111156200107b576200107a62000f3a565b5b620010b0565b62001090848484600162000f73565b92509050818404811115620010aa57620010a962000f3a565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620010cf8262000d0c565b9150620010dc83620010b7565b92506200110b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000fcd565b905092915050565b5f6200111f8262000d0c565b91506200112c8362000d0c565b92508282026200113c8162000d0c565b9150828204841483151762001156576200115562000f3a565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620011968262000d0c565b9150620011a38362000d0c565b925082620011b657620011b56200115d565b5b828204905092915050565b5f620011cd8262000d0c565b9150620011da8362000d0c565b9250828201905080821115620011f557620011f462000f3a565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200122a82620011ff565b9050919050565b6200123c816200121e565b811462001247575f80fd5b50565b5f815190506200125a8162001231565b92915050565b5f60208284031215620012785762001277620011fb565b5b5f62001287848285016200124a565b91505092915050565b6200129b816200121e565b82525050565b5f604082019050620012b65f83018562001290565b620012c5602083018462001290565b9392505050565b620012d78162000d0c565b82525050565b5f602082019050620012f25f830184620012cc565b92915050565b6153ce80620013065f395ff3fe608060405260043610610280575f3560e01c80637d1db4a51161014e578063add5df66116100c0578063dd62ed3e11610079578063dd62ed3e146109a3578063e4b8659e146109df578063f0a9e36514610a07578063f2fde38b14610a43578063f887ea4014610a6b578063ffb54a9914610a9557610287565b8063add5df66146108b1578063b0f7ec38146108d9578063bdc512c614610903578063c4c3641f1461092b578063d11a593f14610953578063d78e139d1461097b57610287565b80638f9a55c0116101125780638f9a55c01461079357806395d89b41146107bd578063a1dbe407146107e7578063a737ec3e1461080f578063a8aa1b311461084b578063a9059cbb1461087557610287565b80637d1db4a5146106c3578063832790fe146106ed578063893d20e8146107295780638a8c523c146107535780638da5cb5b1461076957610287565b80632b112e49116101f2578063571ac8b0116101ab578063571ac8b0146105cb578063617fe0ed1461060757806370a0823114610631578063715018a61461066d578063751039fc146106835780637c4e1b551461069957610287565b80632b112e491461049b5780632d44c931146104c55780632d83811914610501578063313ce5671461053d5780633cd17c961461056757806345ce53651461058f57610287565b80631161ae39116102445780631161ae391461037f57806317800287146103bb57806318160ddd146103e55780631c499ab01461040f57806323b872dd146104375780632610eaca1461047357610287565b80630445b6671461028b5780630517d13d146102b557806306fdde03146102dd578063095ea7b3146103075780630cfc15f91461034357610287565b3661028757005b5f80fd5b348015610296575f80fd5b5061029f610abf565b6040516102ac9190613e00565b60405180910390f35b3480156102c0575f80fd5b506102db60048036038101906102d69190613e54565b610ac5565b005b3480156102e8575f80fd5b506102f1610bfa565b6040516102fe9190613f09565b60405180910390f35b348015610312575f80fd5b5061032d60048036038101906103289190613f83565b610c8a565b60405161033a9190613fdb565b60405180910390f35b34801561034e575f80fd5b5061036960048036038101906103649190613ff4565b610d77565b6040516103769190613e00565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a0919061401f565b610d8c565b6040516103b29190613fdb565b60405180910390f35b3480156103c6575f80fd5b506103cf610da0565b6040516103dc9190613e00565b60405180910390f35b3480156103f0575f80fd5b506103f9610da6565b6040516104069190613e00565b60405180910390f35b34801561041a575f80fd5b5061043560048036038101906104309190613e54565b610daf565b005b348015610442575f80fd5b5061045d6004803603810190610458919061405d565b610ead565b60405161046a9190613fdb565b60405180910390f35b34801561047e575f80fd5b50610499600480360381019061049491906142ad565b6110a0565b005b3480156104a6575f80fd5b506104af611250565b6040516104bc9190613e00565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e6919061434d565b61128f565b6040516104f89190613e00565b60405180910390f35b34801561050c575f80fd5b5061052760048036038101906105229190613e54565b61129a565b6040516105349190613e00565b60405180910390f35b348015610548575f80fd5b506105516112cb565b60405161055e9190614393565b60405180910390f35b348015610572575f80fd5b5061058d600480360381019061058891906143ac565b6112d3565b005b34801561059a575f80fd5b506105b560048036038101906105b09190613e54565b611413565b6040516105c29190613e00565b60405180910390f35b3480156105d6575f80fd5b506105f160048036038101906105ec9190613ff4565b611444565b6040516105fe9190613fdb565b60405180910390f35b348015610612575f80fd5b5061061b611476565b6040516106289190613fdb565b60405180910390f35b34801561063c575f80fd5b5061065760048036038101906106529190613ff4565b611489565b6040516106649190613e00565b60405180910390f35b348015610678575f80fd5b506106816114d7565b005b34801561068e575f80fd5b50610697611625565b005b3480156106a4575f80fd5b506106ad6116cd565b6040516106ba9190614393565b60405180910390f35b3480156106ce575f80fd5b506106d76116e0565b6040516106e49190613e00565b60405180910390f35b3480156106f8575f80fd5b50610713600480360381019061070e919061434d565b6116e6565b6040516107209190613e00565b60405180910390f35b348015610734575f80fd5b5061073d6116f1565b60405161074a91906143f9565b60405180910390f35b34801561075e575f80fd5b506107676116ff565b005b348015610774575f80fd5b5061077d6117c9565b60405161078a91906143f9565b60405180910390f35b34801561079e575f80fd5b506107a76117f0565b6040516107b49190613e00565b60405180910390f35b3480156107c8575f80fd5b506107d16117f6565b6040516107de9190613f09565b60405180910390f35b3480156107f2575f80fd5b5061080d6004803603810190610808919061446b565b611886565b005b34801561081a575f80fd5b5061083560048036038101906108309190613ff4565b6119b9565b6040516108429190613e00565b60405180910390f35b348015610856575f80fd5b5061085f6119ce565b60405161086c91906143f9565b60405180910390f35b348015610880575f80fd5b5061089b60048036038101906108969190613f83565b6119f3565b6040516108a89190613fdb565b60405180910390f35b3480156108bc575f80fd5b506108d760048036038101906108d291906144c8565b611a07565b005b3480156108e4575f80fd5b506108ed611c15565b6040516108fa9190613fdb565b60405180910390f35b34801561090e575f80fd5b506109296004803603810190610924919061458c565b611c27565b005b348015610936575f80fd5b50610951600480360381019061094c919061446b565b611ead565b005b34801561095e575f80fd5b50610979600480360381019061097491906143ac565b611fe0565b005b348015610986575f80fd5b506109a1600480360381019061099c9190613e54565b6120cc565b005b3480156109ae575f80fd5b506109c960048036038101906109c491906145f0565b612187565b6040516109d69190613e00565b60405180910390f35b3480156109ea575f80fd5b50610a056004803603810190610a00919061462e565b612209565b005b348015610a12575f80fd5b50610a2d6004803603810190610a289190613f83565b612400565b604051610a3a9190613fdb565b60405180910390f35b348015610a4e575f80fd5b50610a696004803603810190610a649190613ff4565b612641565b005b348015610a76575f80fd5b50610a7f6127fe565b604051610a8c91906146d9565b60405180910390f35b348015610aa0575f80fd5b50610aa9612823565b604051610ab69190613fdb565b60405180910390f35b60235481565b610acd612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509061473c565b60405180910390fd5b6001811015610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906147a4565b60405180910390fd5b6103e881600454610bae91906147ef565b610bb8919061485d565b6005819055507fff98d32d8af489fb5c29c966064b014ddd95effa4c3479dccb082290ffa050a6600554604051610bef9190613e00565b60405180910390a150565b606060028054610c09906148ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610c35906148ba565b8015610c805780601f10610c5757610100808354040283529160200191610c80565b820191905f5260205f20905b815481529060010190602001808311610c6357829003601f168201915b5050505050905090565b5f8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d659190613e00565b60405180910390a36001905092915050565b6007602052805f5260405f205f915090505481565b5f82610d978361283d565b11905092915050565b60085481565b5f600454905090565b610db7612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a9061473c565b60405180910390fd5b6001811015610e50575f80fd5b6103e881600454610e6191906147ef565b610e6b919061485d565b6006819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600654604051610ea29190613e00565b60405180910390a150565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461108c5761100f826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ad9092919063ffffffff16565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61109784848461290f565b90509392505050565b6110a8612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b9061473c565b60405180910390fd5b8051825114611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116f90614934565b60405180910390fd5b5f5b82518161ffff16101561124b57818161ffff168151811061119e5761119d614952565b5b60200260200101516111af33611489565b10156111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e7906149c9565b60405180910390fd5b61123733848361ffff168151811061120b5761120a614952565b5b6020026020010151848461ffff168151811061122a57611229614952565b5b60200260200101516130b7565b508080611243906149f4565b91505061117a565b505050565b5f61128a61125d5f611489565b61127c61126b61dead611489565b60045461328e90919063ffffffff16565b61328e90919063ffffffff16565b905090565b5f6016549050919050565b5f6112c46008546112b6600454856132d790919063ffffffff16565b61334e90919063ffffffff16565b9050919050565b5f6009905090565b6112db612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e9061473c565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f61143d60045461142f600854856132d790919063ffffffff16565b61334e90919063ffffffff16565b9050919050565b5f61146f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610c8a565b9050919050565b601e60159054906101000a900460ff1681565b5f6114d060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461129a565b9050919050565b6114df612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115629061473c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61162d612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b09061473c565b60405180910390fd5b600454600681905550600454600581905550565b601e60169054906101000a900460ff1681565b60055481565b5f6015549050919050565b5f6116fa6117c9565b905090565b611707612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a9061473c565b60405180910390fd5b601e60149054906101000a900460ff16156117ac575f80fd5b6001601e60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b606060038054611805906148ba565b80601f0160208091040260200160405190810160405280929190818152602001828054611831906148ba565b801561187c5780601f106118535761010080835404028352916020019161187c565b820191905f5260205f20905b81548152906001019060200180831161185f57829003601f168201915b5050505050905090565b61188e612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119119061473c565b60405180910390fd5b5f5b838390508110156119b35781600b5f86868581811061193e5761193d614952565b5b90506020020160208101906119539190613ff4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806119ac90614a1d565b905061191c565b50505050565b601f602052805f5260405f205f915090505481565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6119ff33848461290f565b905092915050565b611a0f612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a929061473c565b60405180910390fd5b88600d81905550876013819055508660118190555085600f81905550611af6600f54611ae8601154611ada601354600d5461339790919063ffffffff16565b61339790919063ffffffff16565b61339790919063ffffffff16565b60158190555083600e81905550826014819055508160128190555080601081905550611b57601054611b49601254611b3b601454600e5461339790919063ffffffff16565b61339790919063ffffffff16565b61339790919063ffffffff16565b601681905550846017819055506001601754611b73919061485d565b6015541115611bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bae90614aae565b60405180910390fd5b6001601754611bc6919061485d565b6016541115611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0190614b16565b60405180910390fd5b505050505050505050565b60205f9054906101000a900460ff1681565b611c2f612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb29061473c565b60405180910390fd5b6032600454611cca919061485d565b8310611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0290614b7e565b60405180910390fd5b620186a0600454611d1c919061485d565b8311611d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5490614c0c565b60405180910390fd5b6032600454611d6c919061485d565b8210611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da490614b7e565b60405180910390fd5b620186a0600454611dbe919061485d565b8211611dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df690614c0c565b60405180910390fd5b80602060016101000a81548160ff0219169083151502179055508360205f6101000a81548160ff02191690831515021790555082602181905550816022819055506021546023819055507f1b21a6f0981d82826d83c7cb6ec42c702b3f4759368e947d004d1ac6c6a350c1602060019054906101000a900460ff1660205f9054906101000a900460ff16602154602254604051611e9f9493929190614c2a565b60405180910390a150505050565b611eb5612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f389061473c565b60405180910390fd5b5f5b83839050811015611fda5781600c5f868685818110611f6557611f64614952565b5b9050602002016020810190611f7a9190613ff4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080611fd390614a1d565b9050611f43565b50505050565b611fe8612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9061473c565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f479050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461211991906147ef565b612123919061485d565b90811502906040515f60405180830381858888f1935050505015801561214b573d5f803e3d5ffd5b507f024874b050ef5d5d90040914ceb89066ec34b5b1dc5ce9cf68ff59bd598a124f8260405161217b9190613e00565b60405180910390a15050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b612211612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461229d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122949061473c565b60405180910390fd5b8260195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd7fdb40ec018d4a1874293e1c569bec2adf78e8ed880973e28610c18ea3ca4bf60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516123f393929190614c6d565b60405180910390a1505050565b5f612409612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c9061473c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fa90614cec565b60405180910390fd5b5f8203612585578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161254391906143f9565b602060405180830381865afa15801561255e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125829190614d1e565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f83836040516125b6929190614d49565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016125f9929190614d49565b6020604051808303815f875af1158015612615573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126399190614d84565b905092915050565b612649612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cc9061473c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273a90614e1f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60149054906101000a900460ff1681565b5f33905090565b5f6128a6612849611250565b612898612889600261287b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611489565b6132d790919063ffffffff16565b856132d790919063ffffffff16565b61334e90919063ffffffff16565b9050919050565b5f8383111582906128f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb9190613f09565b60405180910390fd5b505f83856129029190614e3d565b9050809150509392505050565b5f60245f9054906101000a900460ff16156129365761292f8484846130b7565b90506130b0565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129c1575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1a575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612a6d5750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c6a5760065482612a7f85611489565b612a899190614e70565b1115612aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac190614eed565b60405180910390fd5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612b325750601e60159054906101000a900460ff165b8015612b855750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c695742601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0090614f55565b60405180910390fd5b601e60169054906101000a900460ff1660ff1642612c279190614e70565b601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612cfe57600554821115612cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf490614fbd565b60405180910390fd5b5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d89575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ddc5750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e3157601e60149054906101000a900460ff16612e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2790615025565b60405180910390fd5b5b612e396133f4565b15612e4757612e46613490565b5b5f612e5183611413565b9050612eda816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ad9092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f612f2586613a31565b8015612f365750612f3585613a31565b5b612f405781612fa9565b612fa8601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614612f9d575f612fa0565b60015b878785613a84565b5b9050612ffb8160075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461339790919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6130948461129a565b6040516130a19190613e00565b60405180910390a36001925050505b9392505050565b5f806130c283611413565b905061314b816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ad9092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506131dc8160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461339790919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161327a9190613e00565b60405180910390a360019150509392505050565b5f6132cf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128ad565b905092915050565b5f8083036132e7575f9050613348565b5f82846132f491906147ef565b9050828482613303919061485d565b14613343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333a906150b3565b60405180910390fd5b809150505b92915050565b5f61338f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d87565b905092915050565b5f8082846133a59190614e70565b9050838110156133ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e19061511b565b60405180910390fd5b8091505092915050565b5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561345e575060245f9054906101000a900460ff16155b8015613475575060205f9054906101000a900460ff165b801561348b575060235461348830611489565b10155b905090565b600160245f6101000a81548160ff0219169083151502179055505f6134b9601b54601c54610d8c565b6134c557600e546134c7565b5f5b90505f6134e160145460165461328e90919063ffffffff16565b90505f61351e600261351084613502876023546132d790919063ffffffff16565b61334e90919063ffffffff16565b61334e90919063ffffffff16565b90505f6135368260235461328e90919063ffffffff16565b90505f600267ffffffffffffffff811115613554576135536140b1565b5b6040519080825280602002602001820160405280156135825781602001602082028036833780820191505090505b50905030815f8151811061359957613598614952565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061360957613608614952565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b81526004016136a9959493929190615229565b5f604051808303815f87803b1580156136c0575f80fd5b505af11580156136d2573d5f803e3d5ffd5b505050505f6136ea824761328e90919063ffffffff16565b90505f61371361370460028a61334e90919063ffffffff16565b8861328e90919063ffffffff16565b90505f613750600261374284613734600e54886132d790919063ffffffff16565b61334e90919063ffffffff16565b61334e90919063ffffffff16565b90505f61377a8361376c601254876132d790919063ffffffff16565b61334e90919063ffffffff16565b90505f6137a484613796601054886132d790919063ffffffff16565b61334e90919063ffffffff16565b90505f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516137f0906152ae565b5f60405180830381858888f193505050503d805f811461382b576040519150601f19603f3d011682016040523d82523d5f602084013e613830565b606091505b50509050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161387d906152ae565b5f60405180830381858888f193505050503d805f81146138b8576040519150601f19603f3d011682016040523d82523d5f602084013e6138bd565b606091505b5050809150505f8a11156139cf57601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d5f8060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613951969594939291906152c2565b60606040518083038185885af115801561396d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906139929190615321565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516139c6929190615371565b60405180910390a15b602060019054906101000a900460ff1615613a0057602154602354146139f7576021546139fb565b6022545b613a04565b6023545b6023819055505050505050505050505050505f60245f6101000a81548160ff021916908315150217905550565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b5f806001151586151514613b1557613b10601754613b02613af3601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461128f565b866132d790919063ffffffff16565b61334e90919063ffffffff16565b613b94565b613b93601754613b85613b76601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146116e6565b866132d790919063ffffffff16565b61334e90919063ffffffff16565b5b90505f6001151587151514613bd157613bcc601654613bbe601454856132d790919063ffffffff16565b61334e90919063ffffffff16565b613bfb565b613bfa601554613bec601354856132d790919063ffffffff16565b61334e90919063ffffffff16565b5b9050613c128160085461328e90919063ffffffff16565b6008819055505f613c2c828461328e90919063ffffffff16565b9050613c7e8160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461339790919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613d178461129a565b604051613d249190613e00565b60405180910390a37fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600854604051613d5f929190615371565b60405180910390a1613d7a838661328e90919063ffffffff16565b9350505050949350505050565b5f8083118290613dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dc49190613f09565b60405180910390fd5b505f8385613ddb919061485d565b9050809150509392505050565b5f819050919050565b613dfa81613de8565b82525050565b5f602082019050613e135f830184613df1565b92915050565b5f604051905090565b5f80fd5b5f80fd5b613e3381613de8565b8114613e3d575f80fd5b50565b5f81359050613e4e81613e2a565b92915050565b5f60208284031215613e6957613e68613e22565b5b5f613e7684828501613e40565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613eb6578082015181840152602081019050613e9b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613edb82613e7f565b613ee58185613e89565b9350613ef5818560208601613e99565b613efe81613ec1565b840191505092915050565b5f6020820190508181035f830152613f218184613ed1565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613f5282613f29565b9050919050565b613f6281613f48565b8114613f6c575f80fd5b50565b5f81359050613f7d81613f59565b92915050565b5f8060408385031215613f9957613f98613e22565b5b5f613fa685828601613f6f565b9250506020613fb785828601613e40565b9150509250929050565b5f8115159050919050565b613fd581613fc1565b82525050565b5f602082019050613fee5f830184613fcc565b92915050565b5f6020828403121561400957614008613e22565b5b5f61401684828501613f6f565b91505092915050565b5f806040838503121561403557614034613e22565b5b5f61404285828601613e40565b925050602061405385828601613e40565b9150509250929050565b5f805f6060848603121561407457614073613e22565b5b5f61408186828701613f6f565b935050602061409286828701613f6f565b92505060406140a386828701613e40565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6140e782613ec1565b810181811067ffffffffffffffff82111715614106576141056140b1565b5b80604052505050565b5f614118613e19565b905061412482826140de565b919050565b5f67ffffffffffffffff821115614143576141426140b1565b5b602082029050602081019050919050565b5f80fd5b5f61416a61416584614129565b61410f565b9050808382526020820190506020840283018581111561418d5761418c614154565b5b835b818110156141b657806141a28882613f6f565b84526020840193505060208101905061418f565b5050509392505050565b5f82601f8301126141d4576141d36140ad565b5b81356141e4848260208601614158565b91505092915050565b5f67ffffffffffffffff821115614207576142066140b1565b5b602082029050602081019050919050565b5f61422a614225846141ed565b61410f565b9050808382526020820190506020840283018581111561424d5761424c614154565b5b835b8181101561427657806142628882613e40565b84526020840193505060208101905061424f565b5050509392505050565b5f82601f830112614294576142936140ad565b5b81356142a4848260208601614218565b91505092915050565b5f80604083850312156142c3576142c2613e22565b5b5f83013567ffffffffffffffff8111156142e0576142df613e26565b5b6142ec858286016141c0565b925050602083013567ffffffffffffffff81111561430d5761430c613e26565b5b61431985828601614280565b9150509250929050565b61432c81613fc1565b8114614336575f80fd5b50565b5f8135905061434781614323565b92915050565b5f6020828403121561436257614361613e22565b5b5f61436f84828501614339565b91505092915050565b5f60ff82169050919050565b61438d81614378565b82525050565b5f6020820190506143a65f830184614384565b92915050565b5f80604083850312156143c2576143c1613e22565b5b5f6143cf85828601613f6f565b92505060206143e085828601614339565b9150509250929050565b6143f381613f48565b82525050565b5f60208201905061440c5f8301846143ea565b92915050565b5f80fd5b5f8083601f84011261442b5761442a6140ad565b5b8235905067ffffffffffffffff81111561444857614447614412565b5b60208301915083602082028301111561446457614463614154565b5b9250929050565b5f805f6040848603121561448257614481613e22565b5b5f84013567ffffffffffffffff81111561449f5761449e613e26565b5b6144ab86828701614416565b935093505060206144be86828701614339565b9150509250925092565b5f805f805f805f805f6101208a8c0312156144e6576144e5613e22565b5b5f6144f38c828d01613e40565b99505060206145048c828d01613e40565b98505060406145158c828d01613e40565b97505060606145268c828d01613e40565b96505060806145378c828d01613e40565b95505060a06145488c828d01613e40565b94505060c06145598c828d01613e40565b93505060e061456a8c828d01613e40565b92505061010061457c8c828d01613e40565b9150509295985092959850929598565b5f805f80608085870312156145a4576145a3613e22565b5b5f6145b187828801614339565b94505060206145c287828801613e40565b93505060406145d387828801613e40565b92505060606145e487828801614339565b91505092959194509250565b5f806040838503121561460657614605613e22565b5b5f61461385828601613f6f565b925050602061462485828601613f6f565b9150509250929050565b5f805f6060848603121561464557614644613e22565b5b5f61465286828701613f6f565b935050602061466386828701613f6f565b925050604061467486828701613f6f565b9150509250925092565b5f819050919050565b5f6146a161469c61469784613f29565b61467e565b613f29565b9050919050565b5f6146b282614687565b9050919050565b5f6146c3826146a8565b9050919050565b6146d3816146b9565b82525050565b5f6020820190506146ec5f8301846146ca565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614726602083613e89565b9150614731826146f2565b602082019050919050565b5f6020820190508181035f8301526147538161471a565b9050919050565b7f43616e6e6f7420736574206d61782054582062656c6f77202e312500000000005f82015250565b5f61478e601b83613e89565b91506147998261475a565b602082019050919050565b5f6020820190508181035f8301526147bb81614782565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6147f982613de8565b915061480483613de8565b925082820261481281613de8565b91508282048414831517614829576148286147c2565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61486782613de8565b915061487283613de8565b92508261488257614881614830565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806148d157607f821691505b6020821081036148e4576148e361488d565b5b50919050565b7f4c656e6774687320646f206e6f74206d617463682e00000000000000000000005f82015250565b5f61491e601583613e89565b9150614929826148ea565b602082019050919050565b5f6020820190508181035f83015261494b81614912565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000005f82015250565b5f6149b3601283613e89565b91506149be8261497f565b602082019050919050565b5f6020820190508181035f8301526149e0816149a7565b9050919050565b5f61ffff82169050919050565b5f6149fe826149e7565b915061ffff8203614a1257614a116147c2565b5b600182019050919050565b5f614a2782613de8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614a5957614a586147c2565b5b600182019050919050565b7f43616e6e6f74207365742062757920666565732061626f7665203230250000005f82015250565b5f614a98601d83613e89565b9150614aa382614a64565b602082019050919050565b5f6020820190508181035f830152614ac581614a8c565b9050919050565b7f43616e6e6f74207365742073656c6c20666565732061626f76652032302500005f82015250565b5f614b00601e83613e89565b9150614b0b82614acc565b602082019050919050565b5f6020820190508181035f830152614b2d81614af4565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742061626f7665203225005f82015250565b5f614b68601f83613e89565b9150614b7382614b34565b602082019050919050565b5f6020820190508181035f830152614b9581614b5c565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742062656c6f7720302e305f8201527f3031250000000000000000000000000000000000000000000000000000000000602082015250565b5f614bf6602383613e89565b9150614c0182614b9c565b604082019050919050565b5f6020820190508181035f830152614c2381614bea565b9050919050565b5f608082019050614c3d5f830187613fcc565b614c4a6020830186613fcc565b614c576040830185613df1565b614c646060830184613df1565b95945050505050565b5f606082019050614c805f8301866143ea565b614c8d60208301856143ea565b614c9a60408301846143ea565b949350505050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e735f82015250565b5f614cd6602083613e89565b9150614ce182614ca2565b602082019050919050565b5f6020820190508181035f830152614d0381614cca565b9050919050565b5f81519050614d1881613e2a565b92915050565b5f60208284031215614d3357614d32613e22565b5b5f614d4084828501614d0a565b91505092915050565b5f604082019050614d5c5f8301856143ea565b614d696020830184613df1565b9392505050565b5f81519050614d7e81614323565b92915050565b5f60208284031215614d9957614d98613e22565b5b5f614da684828501614d70565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614e09602683613e89565b9150614e1482614daf565b604082019050919050565b5f6020820190508181035f830152614e3681614dfd565b9050919050565b5f614e4782613de8565b9150614e5283613de8565b9250828203905081811115614e6a57614e696147c2565b5b92915050565b5f614e7a82613de8565b9150614e8583613de8565b9250828201905080821115614e9d57614e9c6147c2565b5b92915050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f614ed7601383613e89565b9150614ee282614ea3565b602082019050919050565b5f6020820190508181035f830152614f0481614ecb565b9050919050565b7f506c65617365207761697420666f72206265747765656e2062757973000000005f82015250565b5f614f3f601c83613e89565b9150614f4a82614f0b565b602082019050919050565b5f6020820190508181035f830152614f6c81614f33565b9050919050565b7f5472616e73616374696f6e20416d6f756e7420457863656564656400000000005f82015250565b5f614fa7601b83613e89565b9150614fb282614f73565b602082019050919050565b5f6020820190508181035f830152614fd481614f9b565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f61500f601483613e89565b915061501a82614fdb565b602082019050919050565b5f6020820190508181035f83015261503c81615003565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61509d602183613e89565b91506150a882615043565b604082019050919050565b5f6020820190508181035f8301526150ca81615091565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615105601b83613e89565b9150615110826150d1565b602082019050919050565b5f6020820190508181035f830152615132816150f9565b9050919050565b5f819050919050565b5f61515c61515761515284615139565b61467e565b613de8565b9050919050565b61516c81615142565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6151a481613f48565b82525050565b5f6151b5838361519b565b60208301905092915050565b5f602082019050919050565b5f6151d782615172565b6151e1818561517c565b93506151ec8361518c565b805f5b8381101561521c57815161520388826151aa565b975061520e836151c1565b9250506001810190506151ef565b5085935050505092915050565b5f60a08201905061523c5f830188613df1565b6152496020830187615163565b818103604083015261525b81866151cd565b905061526a60608301856143ea565b6152776080830184613df1565b9695505050505050565b5f81905092915050565b50565b5f6152995f83615281565b91506152a48261528b565b5f82019050919050565b5f6152b88261528e565b9150819050919050565b5f60c0820190506152d55f8301896143ea565b6152e26020830188613df1565b6152ef6040830187615163565b6152fc6060830186615163565b61530960808301856143ea565b61531660a0830184613df1565b979650505050505050565b5f805f6060848603121561533857615337613e22565b5b5f61534586828701614d0a565b935050602061535686828701614d0a565b925050604061536786828701614d0a565b9150509250925092565b5f6040820190506153845f830185613df1565b6153916020830184613df1565b939250505056fea2646970667358221220680c134de01024c78b8d6ce62da404fae17d1478624540edd4636ab70393e87764736f6c63430008150033

Deployed Bytecode

0x608060405260043610610280575f3560e01c80637d1db4a51161014e578063add5df66116100c0578063dd62ed3e11610079578063dd62ed3e146109a3578063e4b8659e146109df578063f0a9e36514610a07578063f2fde38b14610a43578063f887ea4014610a6b578063ffb54a9914610a9557610287565b8063add5df66146108b1578063b0f7ec38146108d9578063bdc512c614610903578063c4c3641f1461092b578063d11a593f14610953578063d78e139d1461097b57610287565b80638f9a55c0116101125780638f9a55c01461079357806395d89b41146107bd578063a1dbe407146107e7578063a737ec3e1461080f578063a8aa1b311461084b578063a9059cbb1461087557610287565b80637d1db4a5146106c3578063832790fe146106ed578063893d20e8146107295780638a8c523c146107535780638da5cb5b1461076957610287565b80632b112e49116101f2578063571ac8b0116101ab578063571ac8b0146105cb578063617fe0ed1461060757806370a0823114610631578063715018a61461066d578063751039fc146106835780637c4e1b551461069957610287565b80632b112e491461049b5780632d44c931146104c55780632d83811914610501578063313ce5671461053d5780633cd17c961461056757806345ce53651461058f57610287565b80631161ae39116102445780631161ae391461037f57806317800287146103bb57806318160ddd146103e55780631c499ab01461040f57806323b872dd146104375780632610eaca1461047357610287565b80630445b6671461028b5780630517d13d146102b557806306fdde03146102dd578063095ea7b3146103075780630cfc15f91461034357610287565b3661028757005b5f80fd5b348015610296575f80fd5b5061029f610abf565b6040516102ac9190613e00565b60405180910390f35b3480156102c0575f80fd5b506102db60048036038101906102d69190613e54565b610ac5565b005b3480156102e8575f80fd5b506102f1610bfa565b6040516102fe9190613f09565b60405180910390f35b348015610312575f80fd5b5061032d60048036038101906103289190613f83565b610c8a565b60405161033a9190613fdb565b60405180910390f35b34801561034e575f80fd5b5061036960048036038101906103649190613ff4565b610d77565b6040516103769190613e00565b60405180910390f35b34801561038a575f80fd5b506103a560048036038101906103a0919061401f565b610d8c565b6040516103b29190613fdb565b60405180910390f35b3480156103c6575f80fd5b506103cf610da0565b6040516103dc9190613e00565b60405180910390f35b3480156103f0575f80fd5b506103f9610da6565b6040516104069190613e00565b60405180910390f35b34801561041a575f80fd5b5061043560048036038101906104309190613e54565b610daf565b005b348015610442575f80fd5b5061045d6004803603810190610458919061405d565b610ead565b60405161046a9190613fdb565b60405180910390f35b34801561047e575f80fd5b50610499600480360381019061049491906142ad565b6110a0565b005b3480156104a6575f80fd5b506104af611250565b6040516104bc9190613e00565b60405180910390f35b3480156104d0575f80fd5b506104eb60048036038101906104e6919061434d565b61128f565b6040516104f89190613e00565b60405180910390f35b34801561050c575f80fd5b5061052760048036038101906105229190613e54565b61129a565b6040516105349190613e00565b60405180910390f35b348015610548575f80fd5b506105516112cb565b60405161055e9190614393565b60405180910390f35b348015610572575f80fd5b5061058d600480360381019061058891906143ac565b6112d3565b005b34801561059a575f80fd5b506105b560048036038101906105b09190613e54565b611413565b6040516105c29190613e00565b60405180910390f35b3480156105d6575f80fd5b506105f160048036038101906105ec9190613ff4565b611444565b6040516105fe9190613fdb565b60405180910390f35b348015610612575f80fd5b5061061b611476565b6040516106289190613fdb565b60405180910390f35b34801561063c575f80fd5b5061065760048036038101906106529190613ff4565b611489565b6040516106649190613e00565b60405180910390f35b348015610678575f80fd5b506106816114d7565b005b34801561068e575f80fd5b50610697611625565b005b3480156106a4575f80fd5b506106ad6116cd565b6040516106ba9190614393565b60405180910390f35b3480156106ce575f80fd5b506106d76116e0565b6040516106e49190613e00565b60405180910390f35b3480156106f8575f80fd5b50610713600480360381019061070e919061434d565b6116e6565b6040516107209190613e00565b60405180910390f35b348015610734575f80fd5b5061073d6116f1565b60405161074a91906143f9565b60405180910390f35b34801561075e575f80fd5b506107676116ff565b005b348015610774575f80fd5b5061077d6117c9565b60405161078a91906143f9565b60405180910390f35b34801561079e575f80fd5b506107a76117f0565b6040516107b49190613e00565b60405180910390f35b3480156107c8575f80fd5b506107d16117f6565b6040516107de9190613f09565b60405180910390f35b3480156107f2575f80fd5b5061080d6004803603810190610808919061446b565b611886565b005b34801561081a575f80fd5b5061083560048036038101906108309190613ff4565b6119b9565b6040516108429190613e00565b60405180910390f35b348015610856575f80fd5b5061085f6119ce565b60405161086c91906143f9565b60405180910390f35b348015610880575f80fd5b5061089b60048036038101906108969190613f83565b6119f3565b6040516108a89190613fdb565b60405180910390f35b3480156108bc575f80fd5b506108d760048036038101906108d291906144c8565b611a07565b005b3480156108e4575f80fd5b506108ed611c15565b6040516108fa9190613fdb565b60405180910390f35b34801561090e575f80fd5b506109296004803603810190610924919061458c565b611c27565b005b348015610936575f80fd5b50610951600480360381019061094c919061446b565b611ead565b005b34801561095e575f80fd5b50610979600480360381019061097491906143ac565b611fe0565b005b348015610986575f80fd5b506109a1600480360381019061099c9190613e54565b6120cc565b005b3480156109ae575f80fd5b506109c960048036038101906109c491906145f0565b612187565b6040516109d69190613e00565b60405180910390f35b3480156109ea575f80fd5b50610a056004803603810190610a00919061462e565b612209565b005b348015610a12575f80fd5b50610a2d6004803603810190610a289190613f83565b612400565b604051610a3a9190613fdb565b60405180910390f35b348015610a4e575f80fd5b50610a696004803603810190610a649190613ff4565b612641565b005b348015610a76575f80fd5b50610a7f6127fe565b604051610a8c91906146d9565b60405180910390f35b348015610aa0575f80fd5b50610aa9612823565b604051610ab69190613fdb565b60405180910390f35b60235481565b610acd612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b509061473c565b60405180910390fd5b6001811015610b9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b94906147a4565b60405180910390fd5b6103e881600454610bae91906147ef565b610bb8919061485d565b6005819055507fff98d32d8af489fb5c29c966064b014ddd95effa4c3479dccb082290ffa050a6600554604051610bef9190613e00565b60405180910390a150565b606060028054610c09906148ba565b80601f0160208091040260200160405190810160405280929190818152602001828054610c35906148ba565b8015610c805780601f10610c5757610100808354040283529160200191610c80565b820191905f5260205f20905b815481529060010190602001808311610c6357829003601f168201915b5050505050905090565b5f8160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610d659190613e00565b60405180910390a36001905092915050565b6007602052805f5260405f205f915090505481565b5f82610d978361283d565b11905092915050565b60085481565b5f600454905090565b610db7612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3a9061473c565b60405180910390fd5b6001811015610e50575f80fd5b6103e881600454610e6191906147ef565b610e6b919061485d565b6006819055507f1273be876d6df5e39545188e5f5d2d930e30e383f2fb2dc9dfaae2643901be51600654604051610ea29190613e00565b60405180910390a150565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541461108c5761100f826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060095f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ad9092919063ffffffff16565b60095f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b61109784848461290f565b90509392505050565b6110a8612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611134576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112b9061473c565b60405180910390fd5b8051825114611178576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116f90614934565b60405180910390fd5b5f5b82518161ffff16101561124b57818161ffff168151811061119e5761119d614952565b5b60200260200101516111af33611489565b10156111f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111e7906149c9565b60405180910390fd5b61123733848361ffff168151811061120b5761120a614952565b5b6020026020010151848461ffff168151811061122a57611229614952565b5b60200260200101516130b7565b508080611243906149f4565b91505061117a565b505050565b5f61128a61125d5f611489565b61127c61126b61dead611489565b60045461328e90919063ffffffff16565b61328e90919063ffffffff16565b905090565b5f6016549050919050565b5f6112c46008546112b6600454856132d790919063ffffffff16565b61334e90919063ffffffff16565b9050919050565b5f6009905090565b6112db612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611367576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135e9061473c565b60405180910390fd5b80600b5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f61143d60045461142f600854856132d790919063ffffffff16565b61334e90919063ffffffff16565b9050919050565b5f61146f827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610c8a565b9050919050565b601e60159054906101000a900460ff1681565b5f6114d060075f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461129a565b9050919050565b6114df612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115629061473c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61162d612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b09061473c565b60405180910390fd5b600454600681905550600454600581905550565b601e60169054906101000a900460ff1681565b60055481565b5f6015549050919050565b5f6116fa6117c9565b905090565b611707612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a9061473c565b60405180910390fd5b601e60149054906101000a900460ff16156117ac575f80fd5b6001601e60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60065481565b606060038054611805906148ba565b80601f0160208091040260200160405190810160405280929190818152602001828054611831906148ba565b801561187c5780601f106118535761010080835404028352916020019161187c565b820191905f5260205f20905b81548152906001019060200180831161185f57829003601f168201915b5050505050905090565b61188e612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461191a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119119061473c565b60405180910390fd5b5f5b838390508110156119b35781600b5f86868581811061193e5761193d614952565b5b90506020020160208101906119539190613ff4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550806119ac90614a1d565b905061191c565b50505050565b601f602052805f5260405f205f915090505481565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6119ff33848461290f565b905092915050565b611a0f612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a929061473c565b60405180910390fd5b88600d81905550876013819055508660118190555085600f81905550611af6600f54611ae8601154611ada601354600d5461339790919063ffffffff16565b61339790919063ffffffff16565b61339790919063ffffffff16565b60158190555083600e81905550826014819055508160128190555080601081905550611b57601054611b49601254611b3b601454600e5461339790919063ffffffff16565b61339790919063ffffffff16565b61339790919063ffffffff16565b601681905550846017819055506001601754611b73919061485d565b6015541115611bb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bae90614aae565b60405180910390fd5b6001601754611bc6919061485d565b6016541115611c0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0190614b16565b60405180910390fd5b505050505050505050565b60205f9054906101000a900460ff1681565b611c2f612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb29061473c565b60405180910390fd5b6032600454611cca919061485d565b8310611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0290614b7e565b60405180910390fd5b620186a0600454611d1c919061485d565b8311611d5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5490614c0c565b60405180910390fd5b6032600454611d6c919061485d565b8210611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da490614b7e565b60405180910390fd5b620186a0600454611dbe919061485d565b8211611dff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df690614c0c565b60405180910390fd5b80602060016101000a81548160ff0219169083151502179055508360205f6101000a81548160ff02191690831515021790555082602181905550816022819055506021546023819055507f1b21a6f0981d82826d83c7cb6ec42c702b3f4759368e947d004d1ac6c6a350c1602060019054906101000a900460ff1660205f9054906101000a900460ff16602154602254604051611e9f9493929190614c2a565b60405180910390a150505050565b611eb5612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611f41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f389061473c565b60405180910390fd5b5f5b83839050811015611fda5781600c5f868685818110611f6557611f64614952565b5b9050602002016020810190611f7a9190613ff4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080611fd390614a1d565b9050611f43565b50505050565b611fe8612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206b9061473c565b60405180910390fd5b80600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f479050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6064848461211991906147ef565b612123919061485d565b90811502906040515f60405180830381858888f1935050505015801561214b573d5f803e3d5ffd5b507f024874b050ef5d5d90040914ceb89066ec34b5b1dc5ce9cf68ff59bd598a124f8260405161217b9190613e00565b60405180910390a15050565b5f60095f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b612211612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461229d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122949061473c565b60405180910390fd5b8260195f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fd7fdb40ec018d4a1874293e1c569bec2adf78e8ed880973e28610c18ea3ca4bf60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516123f393929190614c6d565b60405180910390a1505050565b5f612409612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c9061473c565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612503576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124fa90614cec565b60405180910390fd5b5f8203612585578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161254391906143f9565b602060405180830381865afa15801561255e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125829190614d1e565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f83836040516125b6929190614d49565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016125f9929190614d49565b6020604051808303815f875af1158015612615573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126399190614d84565b905092915050565b612649612836565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126cc9061473c565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612743576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161273a90614e1f565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601e60149054906101000a900460ff1681565b5f33905090565b5f6128a6612849611250565b612898612889600261287b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611489565b6132d790919063ffffffff16565b856132d790919063ffffffff16565b61334e90919063ffffffff16565b9050919050565b5f8383111582906128f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128eb9190613f09565b60405180910390fd5b505f83856129029190614e3d565b9050809150509392505050565b5f60245f9054906101000a900460ff16156129365761292f8484846130b7565b90506130b0565b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156129c1575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612a1a575060195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612a6d5750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c6a5760065482612a7f85611489565b612a899190614e70565b1115612aca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ac190614eed565b60405180910390fd5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612b325750601e60159054906101000a900460ff165b8015612b855750600a5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612c695742601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410612c09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c0090614f55565b60405180910390fd5b601e60169054906101000a900460ff1660ff1642612c279190614e70565b601f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612cfe57600554821115612cfd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cf490614fbd565b60405180910390fd5b5b601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612d89575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612ddc5750600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612e3157601e60149054906101000a900460ff16612e30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e2790615025565b60405180910390fd5b5b612e396133f4565b15612e4757612e46613490565b5b5f612e5183611413565b9050612eda816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ad9092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f612f2586613a31565b8015612f365750612f3585613a31565b5b612f405781612fa9565b612fa8601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614612f9d575f612fa0565b60015b878785613a84565b5b9050612ffb8160075f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461339790919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6130948461129a565b6040516130a19190613e00565b60405180910390a36001925050505b9392505050565b5f806130c283611413565b905061314b816040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128ad9092919063ffffffff16565b60075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506131dc8160075f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461339790919063ffffffff16565b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161327a9190613e00565b60405180910390a360019150509392505050565b5f6132cf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128ad565b905092915050565b5f8083036132e7575f9050613348565b5f82846132f491906147ef565b9050828482613303919061485d565b14613343576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161333a906150b3565b60405180910390fd5b809150505b92915050565b5f61338f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613d87565b905092915050565b5f8082846133a59190614e70565b9050838110156133ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133e19061511b565b60405180910390fd5b8091505092915050565b5f601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561345e575060245f9054906101000a900460ff16155b8015613475575060205f9054906101000a900460ff165b801561348b575060235461348830611489565b10155b905090565b600160245f6101000a81548160ff0219169083151502179055505f6134b9601b54601c54610d8c565b6134c557600e546134c7565b5f5b90505f6134e160145460165461328e90919063ffffffff16565b90505f61351e600261351084613502876023546132d790919063ffffffff16565b61334e90919063ffffffff16565b61334e90919063ffffffff16565b90505f6135368260235461328e90919063ffffffff16565b90505f600267ffffffffffffffff811115613554576135536140b1565b5b6040519080825280602002602001820160405280156135825781602001602082028036833780820191505090505b50905030815f8151811061359957613598614952565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160018151811061360957613608614952565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f479050601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8530426040518663ffffffff1660e01b81526004016136a9959493929190615229565b5f604051808303815f87803b1580156136c0575f80fd5b505af11580156136d2573d5f803e3d5ffd5b505050505f6136ea824761328e90919063ffffffff16565b90505f61371361370460028a61334e90919063ffffffff16565b8861328e90919063ffffffff16565b90505f613750600261374284613734600e54886132d790919063ffffffff16565b61334e90919063ffffffff16565b61334e90919063ffffffff16565b90505f61377a8361376c601254876132d790919063ffffffff16565b61334e90919063ffffffff16565b90505f6137a484613796601054886132d790919063ffffffff16565b61334e90919063ffffffff16565b90505f60195f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516137f0906152ae565b5f60405180830381858888f193505050503d805f811461382b576040519150601f19603f3d011682016040523d82523d5f602084013e613830565b606091505b50509050601a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826175309060405161387d906152ae565b5f60405180830381858888f193505050503d805f81146138b8576040519150601f19603f3d011682016040523d82523d5f602084013e6138bd565b606091505b5050809150505f8a11156139cf57601d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d5f8060185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401613951969594939291906152c2565b60606040518083038185885af115801561396d573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906139929190615321565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516139c6929190615371565b60405180910390a15b602060019054906101000a900460ff1615613a0057602154602354146139f7576021546139fb565b6022545b613a04565b6023545b6023819055505050505050505050505050505f60245f6101000a81548160ff021916908315150217905550565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16159050919050565b5f806001151586151514613b1557613b10601754613b02613af3601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff161461128f565b866132d790919063ffffffff16565b61334e90919063ffffffff16565b613b94565b613b93601754613b85613b76601e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff16146116e6565b866132d790919063ffffffff16565b61334e90919063ffffffff16565b5b90505f6001151587151514613bd157613bcc601654613bbe601454856132d790919063ffffffff16565b61334e90919063ffffffff16565b613bfb565b613bfa601554613bec601354856132d790919063ffffffff16565b61334e90919063ffffffff16565b5b9050613c128160085461328e90919063ffffffff16565b6008819055505f613c2c828461328e90919063ffffffff16565b9050613c7e8160075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461339790919063ffffffff16565b60075f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef613d178461129a565b604051613d249190613e00565b60405180910390a37fc3b3cc73ac1faef58c428c22be6cb344acfd92a699c8cd758c753af27071b5ac82600854604051613d5f929190615371565b60405180910390a1613d7a838661328e90919063ffffffff16565b9350505050949350505050565b5f8083118290613dcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613dc49190613f09565b60405180910390fd5b505f8385613ddb919061485d565b9050809150509392505050565b5f819050919050565b613dfa81613de8565b82525050565b5f602082019050613e135f830184613df1565b92915050565b5f604051905090565b5f80fd5b5f80fd5b613e3381613de8565b8114613e3d575f80fd5b50565b5f81359050613e4e81613e2a565b92915050565b5f60208284031215613e6957613e68613e22565b5b5f613e7684828501613e40565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613eb6578082015181840152602081019050613e9b565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613edb82613e7f565b613ee58185613e89565b9350613ef5818560208601613e99565b613efe81613ec1565b840191505092915050565b5f6020820190508181035f830152613f218184613ed1565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613f5282613f29565b9050919050565b613f6281613f48565b8114613f6c575f80fd5b50565b5f81359050613f7d81613f59565b92915050565b5f8060408385031215613f9957613f98613e22565b5b5f613fa685828601613f6f565b9250506020613fb785828601613e40565b9150509250929050565b5f8115159050919050565b613fd581613fc1565b82525050565b5f602082019050613fee5f830184613fcc565b92915050565b5f6020828403121561400957614008613e22565b5b5f61401684828501613f6f565b91505092915050565b5f806040838503121561403557614034613e22565b5b5f61404285828601613e40565b925050602061405385828601613e40565b9150509250929050565b5f805f6060848603121561407457614073613e22565b5b5f61408186828701613f6f565b935050602061409286828701613f6f565b92505060406140a386828701613e40565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6140e782613ec1565b810181811067ffffffffffffffff82111715614106576141056140b1565b5b80604052505050565b5f614118613e19565b905061412482826140de565b919050565b5f67ffffffffffffffff821115614143576141426140b1565b5b602082029050602081019050919050565b5f80fd5b5f61416a61416584614129565b61410f565b9050808382526020820190506020840283018581111561418d5761418c614154565b5b835b818110156141b657806141a28882613f6f565b84526020840193505060208101905061418f565b5050509392505050565b5f82601f8301126141d4576141d36140ad565b5b81356141e4848260208601614158565b91505092915050565b5f67ffffffffffffffff821115614207576142066140b1565b5b602082029050602081019050919050565b5f61422a614225846141ed565b61410f565b9050808382526020820190506020840283018581111561424d5761424c614154565b5b835b8181101561427657806142628882613e40565b84526020840193505060208101905061424f565b5050509392505050565b5f82601f830112614294576142936140ad565b5b81356142a4848260208601614218565b91505092915050565b5f80604083850312156142c3576142c2613e22565b5b5f83013567ffffffffffffffff8111156142e0576142df613e26565b5b6142ec858286016141c0565b925050602083013567ffffffffffffffff81111561430d5761430c613e26565b5b61431985828601614280565b9150509250929050565b61432c81613fc1565b8114614336575f80fd5b50565b5f8135905061434781614323565b92915050565b5f6020828403121561436257614361613e22565b5b5f61436f84828501614339565b91505092915050565b5f60ff82169050919050565b61438d81614378565b82525050565b5f6020820190506143a65f830184614384565b92915050565b5f80604083850312156143c2576143c1613e22565b5b5f6143cf85828601613f6f565b92505060206143e085828601614339565b9150509250929050565b6143f381613f48565b82525050565b5f60208201905061440c5f8301846143ea565b92915050565b5f80fd5b5f8083601f84011261442b5761442a6140ad565b5b8235905067ffffffffffffffff81111561444857614447614412565b5b60208301915083602082028301111561446457614463614154565b5b9250929050565b5f805f6040848603121561448257614481613e22565b5b5f84013567ffffffffffffffff81111561449f5761449e613e26565b5b6144ab86828701614416565b935093505060206144be86828701614339565b9150509250925092565b5f805f805f805f805f6101208a8c0312156144e6576144e5613e22565b5b5f6144f38c828d01613e40565b99505060206145048c828d01613e40565b98505060406145158c828d01613e40565b97505060606145268c828d01613e40565b96505060806145378c828d01613e40565b95505060a06145488c828d01613e40565b94505060c06145598c828d01613e40565b93505060e061456a8c828d01613e40565b92505061010061457c8c828d01613e40565b9150509295985092959850929598565b5f805f80608085870312156145a4576145a3613e22565b5b5f6145b187828801614339565b94505060206145c287828801613e40565b93505060406145d387828801613e40565b92505060606145e487828801614339565b91505092959194509250565b5f806040838503121561460657614605613e22565b5b5f61461385828601613f6f565b925050602061462485828601613f6f565b9150509250929050565b5f805f6060848603121561464557614644613e22565b5b5f61465286828701613f6f565b935050602061466386828701613f6f565b925050604061467486828701613f6f565b9150509250925092565b5f819050919050565b5f6146a161469c61469784613f29565b61467e565b613f29565b9050919050565b5f6146b282614687565b9050919050565b5f6146c3826146a8565b9050919050565b6146d3816146b9565b82525050565b5f6020820190506146ec5f8301846146ca565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614726602083613e89565b9150614731826146f2565b602082019050919050565b5f6020820190508181035f8301526147538161471a565b9050919050565b7f43616e6e6f7420736574206d61782054582062656c6f77202e312500000000005f82015250565b5f61478e601b83613e89565b91506147998261475a565b602082019050919050565b5f6020820190508181035f8301526147bb81614782565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6147f982613de8565b915061480483613de8565b925082820261481281613de8565b91508282048414831517614829576148286147c2565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61486782613de8565b915061487283613de8565b92508261488257614881614830565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806148d157607f821691505b6020821081036148e4576148e361488d565b5b50919050565b7f4c656e6774687320646f206e6f74206d617463682e00000000000000000000005f82015250565b5f61491e601583613e89565b9150614929826148ea565b602082019050919050565b5f6020820190508181035f83015261494b81614912565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e6f7420656e6f75676820746f6b656e732e00000000000000000000000000005f82015250565b5f6149b3601283613e89565b91506149be8261497f565b602082019050919050565b5f6020820190508181035f8301526149e0816149a7565b9050919050565b5f61ffff82169050919050565b5f6149fe826149e7565b915061ffff8203614a1257614a116147c2565b5b600182019050919050565b5f614a2782613de8565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614a5957614a586147c2565b5b600182019050919050565b7f43616e6e6f74207365742062757920666565732061626f7665203230250000005f82015250565b5f614a98601d83613e89565b9150614aa382614a64565b602082019050919050565b5f6020820190508181035f830152614ac581614a8c565b9050919050565b7f43616e6e6f74207365742073656c6c20666565732061626f76652032302500005f82015250565b5f614b00601e83613e89565b9150614b0b82614acc565b602082019050919050565b5f6020820190508181035f830152614b2d81614af4565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742061626f7665203225005f82015250565b5f614b68601f83613e89565b9150614b7382614b34565b602082019050919050565b5f6020820190508181035f830152614b9581614b5c565b9050919050565b7f43616e6e6f7420736574207377617020616d6f756e742062656c6f7720302e305f8201527f3031250000000000000000000000000000000000000000000000000000000000602082015250565b5f614bf6602383613e89565b9150614c0182614b9c565b604082019050919050565b5f6020820190508181035f830152614c2381614bea565b9050919050565b5f608082019050614c3d5f830187613fcc565b614c4a6020830186613fcc565b614c576040830185613df1565b614c646060830184613df1565b95945050505050565b5f606082019050614c805f8301866143ea565b614c8d60208301856143ea565b614c9a60408301846143ea565b949350505050565b7f4f776e65722063616e6e6f7420636c61696d206e617469766520746f6b656e735f82015250565b5f614cd6602083613e89565b9150614ce182614ca2565b602082019050919050565b5f6020820190508181035f830152614d0381614cca565b9050919050565b5f81519050614d1881613e2a565b92915050565b5f60208284031215614d3357614d32613e22565b5b5f614d4084828501614d0a565b91505092915050565b5f604082019050614d5c5f8301856143ea565b614d696020830184613df1565b9392505050565b5f81519050614d7e81614323565b92915050565b5f60208284031215614d9957614d98613e22565b5b5f614da684828501614d70565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f614e09602683613e89565b9150614e1482614daf565b604082019050919050565b5f6020820190508181035f830152614e3681614dfd565b9050919050565b5f614e4782613de8565b9150614e5283613de8565b9250828203905081811115614e6a57614e696147c2565b5b92915050565b5f614e7a82613de8565b9150614e8583613de8565b9250828201905080821115614e9d57614e9c6147c2565b5b92915050565b7f4d61782057616c6c6574204578636565646564000000000000000000000000005f82015250565b5f614ed7601383613e89565b9150614ee282614ea3565b602082019050919050565b5f6020820190508181035f830152614f0481614ecb565b9050919050565b7f506c65617365207761697420666f72206265747765656e2062757973000000005f82015250565b5f614f3f601c83613e89565b9150614f4a82614f0b565b602082019050919050565b5f6020820190508181035f830152614f6c81614f33565b9050919050565b7f5472616e73616374696f6e20416d6f756e7420457863656564656400000000005f82015250565b5f614fa7601b83613e89565b9150614fb282614f73565b602082019050919050565b5f6020820190508181035f830152614fd481614f9b565b9050919050565b7f54726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f61500f601483613e89565b915061501a82614fdb565b602082019050919050565b5f6020820190508181035f83015261503c81615003565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61509d602183613e89565b91506150a882615043565b604082019050919050565b5f6020820190508181035f8301526150ca81615091565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f615105601b83613e89565b9150615110826150d1565b602082019050919050565b5f6020820190508181035f830152615132816150f9565b9050919050565b5f819050919050565b5f61515c61515761515284615139565b61467e565b613de8565b9050919050565b61516c81615142565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6151a481613f48565b82525050565b5f6151b5838361519b565b60208301905092915050565b5f602082019050919050565b5f6151d782615172565b6151e1818561517c565b93506151ec8361518c565b805f5b8381101561521c57815161520388826151aa565b975061520e836151c1565b9250506001810190506151ef565b5085935050505092915050565b5f60a08201905061523c5f830188613df1565b6152496020830187615163565b818103604083015261525b81866151cd565b905061526a60608301856143ea565b6152776080830184613df1565b9695505050505050565b5f81905092915050565b50565b5f6152995f83615281565b91506152a48261528b565b5f82019050919050565b5f6152b88261528e565b9150819050919050565b5f60c0820190506152d55f8301896143ea565b6152e26020830188613df1565b6152ef6040830187615163565b6152fc6060830186615163565b61530960808301856143ea565b61531660a0830184613df1565b979650505050505050565b5f805f6060848603121561533857615337613e22565b5b5f61534586828701614d0a565b935050602061535686828701614d0a565b925050604061536786828701614d0a565b9150509250925092565b5f6040820190506153845f830185613df1565b6153916020830184613df1565b939250505056fea2646970667358221220680c134de01024c78b8d6ce62da404fae17d1478624540edd4636ab70393e87764736f6c63430008150033

Deployed Bytecode Sourcemap

4177:16825:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6238:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18449:287;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7594:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8109:226;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4736:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20193:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4786:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7423:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18206:235;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8637:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13770:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19855:144;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11773:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10792:155;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7517:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19337:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10638:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8343:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5871:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7829:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3770:148;;;;;;;;;;;;;:::i;:::-;;13628:134;;;;;;;;;;;;;:::i;:::-;;5915:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4596:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11668:97;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7752:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17040:116;;;;;;;;;;;;;:::i;:::-;;3553:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4663:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7671:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18750:207;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5971:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5803:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8473:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17164:1029;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6030:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16287:745;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18965:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19188:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12915:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7959:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19512:335;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13185:431;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3926:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5772:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5831:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6238:49;;;;:::o;18449:287::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18577:1:::1;18555:18;:23;;18547:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;18672:4;18649:18;18634:12;;:33;;;;:::i;:::-;18633:43;;;;:::i;:::-;18618:12;:58;;;;18688:32;18707:12;;18688:32;;;;;;:::i;:::-;;;;;;;;18449:287:::0;:::o;7594:71::-;7633:13;7657:5;7650:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7594:71;:::o;8109:226::-;8194:4;8246:6;8211:11;:23;8223:10;8211:23;;;;;;;;;;;;;;;:32;8235:7;8211:32;;;;;;;;;;;;;;;:41;;;;8289:7;8268:37;;8277:10;8268:37;;;8298:6;8268:37;;;;;;:::i;:::-;;;;;;;;8323:4;8316:11;;8109:226;;;;:::o;4736:43::-;;;;;;;;;;;;;;;;;:::o;20193:163::-;20284:4;20336:6;20304:29;20324:8;20304:19;:29::i;:::-;:38;20297:45;;20193:163;;;;:::o;4786:46::-;;;;:::o;7423:88::-;7478:7;7496:12;;7489:19;;7423:88;:::o;18206:235::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18325:1:::1;18305:16;:21;;18297:30;;;::::0;::::1;;18388:4;18367:16;18352:12;;:31;;;;:::i;:::-;18351:41;;;;:::i;:::-;18334:14;:58;;;;18404:29;18418:14;;18404:29;;;;;;:::i;:::-;;;;;;;;18206:235:::0;:::o;8637:370::-;8737:4;8792:17;8757:11;:19;8769:6;8757:19;;;;;;;;;;;;;;;:31;8777:10;8757:31;;;;;;;;;;;;;;;;:52;8754:186;;8859:69;8895:6;8859:69;;;;;;;;;;;;;;;;;:11;:19;8871:6;8859:19;;;;;;;;;;;;;;;:31;8879:10;8859:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;8825:11;:19;8837:6;8825:19;;;;;;;;;;;;;;;:31;8845:10;8825:31;;;;;;;;;;;;;;;:103;;;;8754:186;8959:40;8973:6;8981:9;8992:6;8959:13;:40::i;:::-;8952:47;;8637:370;;;;;:::o;13770:386::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13905:7:::1;:14;13886:8;:15;:33;13878:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13961:8;13956:197;13979:8;:15;13975:1;:19;;;13956:197;;;14045:7;14053:1;14045:10;;;;;;;;;;:::i;:::-;;;;;;;;14020:21;14030:10;14020:9;:21::i;:::-;:35;;14012:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;14096:49;14111:10;14122:8;14131:1;14122:11;;;;;;;;;;:::i;:::-;;;;;;;;14134:7;14142:1;14134:10;;;;;;;;;;:::i;:::-;;;;;;;;14096:14;:49::i;:::-;;13996:3;;;;;:::i;:::-;;;;13956:197;;;;13770:386:::0;;:::o;19855:144::-;19914:7;19937:54;19975:15;4394:42;19975:9;:15::i;:::-;19937:33;19954:15;4312:42;19954:9;:15::i;:::-;19937:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;19930:61;;19855:144;:::o;11773:99::-;11825:7;11852:12;;11845:19;;11773:99;;;:::o;10792:155::-;10862:7;10889:50;10922:16;;10889:28;10904:12;;10889:10;:14;;:28;;;;:::i;:::-;:32;;:50;;;;:::i;:::-;10882:57;;10792:155;;;:::o;7517:71::-;7560:5;4530:1;7569:16;;7517:71;:::o;19337:163::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19447:6:::1;19425:11;:19;19437:6;19425:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;19486:6;19460:15;:23;19476:6;19460:23;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;19337:163:::0;;:::o;10638:146::-;10703:7;10730:46;10763:12;;10730:28;10741:16;;10730:6;:10;;:28;;;;:::i;:::-;:32;;:46;;;;:::i;:::-;10723:53;;10638:146;;;:::o;8343:122::-;8398:4;8422:35;8430:7;8439:17;8422:7;:35::i;:::-;8415:42;;8343:122;;;:::o;5871:37::-;;;;;;;;;;;;;:::o;7829:124::-;7895:7;7913:37;7933:7;:16;7941:7;7933:16;;;;;;;;;;;;;;;;7913:19;:37::i;:::-;7906:44;;7829:124;;;:::o;3770:148::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3877:1:::1;3840:40;;3861:6;::::0;::::1;;;;;;;;3840:40;;;;;;;;;;;;3908:1;3891:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3770:148::o:0;13628:134::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13705:12:::1;;13688:14;:29;;;;13740:12;;13725;:27;;;;13628:134::o:0;5915:39::-;;;;;;;;;;;;;:::o;4596:54::-;;;;:::o;11668:97::-;11719:7;11746:11;;11739:18;;11668:97;;;:::o;7752:71::-;7795:7;7813;:5;:7::i;:::-;7806:14;;7752:71;:::o;17040:116::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17105:11:::1;;;;;;;;;;;17104:12;17095:22;;;::::0;::::1;;17138:4;17124:11;;:18;;;;;;;;;;;;;;;;;;17040:116::o:0;3553:79::-;3591:7;3618:6;;;;;;;;;;;3611:13;;3553:79;:::o;4663:56::-;;;;:::o;7671:75::-;7712:13;7736:7;7729:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7671:75;:::o;18750:207::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18859:9:::1;18854:96;18874:9;;:16;;18870:1;:20;18854:96;;;18932:6;18904:11;:25;18916:9;;18926:1;18916:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;18904:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;18892:3;;;;:::i;:::-;;;18854:96;;;;18750:207:::0;;;:::o;5971:46::-;;;;;;;;;;;;;;;;;:::o;5803:19::-;;;;;;;;;;;;;:::o;8473:156::-;8553:4;8577:44;8591:10;8603:9;8614:6;8577:13;:44::i;:::-;8570:51;;8473:156;;;;:::o;17164:1029::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17471:16:::1;17453:15;:34;;;;17513:17;17494:16;:36;;;;17555:16;17537:15;:34;;;;17591:11;17578:10;:24;;;;17623:74;17686:10;;17623:58;17665:15;;17623:37;17643:16;;17623:15;;:19;;:37;;;;:::i;:::-;:41;;:58;;;;:::i;:::-;:62;;:74;;;;:::i;:::-;17609:11;:88;;;;17725:17;17706:16;:36;;;;17769:18;17749:17;:38;;;;17813:17;17794:16;:36;;;;17851:12;17837:11;:26;;;;17885:78;17951:11;;17885:61;17929:16;;17885:39;17906:17;;17885:16;;:20;;:39;;;;:::i;:::-;:43;;:61;;;;:::i;:::-;:65;;:78;;;;:::i;:::-;17870:12;:93;;;;17996:15;17979:14;:32;;;;18058:1;18043:14;;:16;;;;:::i;:::-;18028:11;;:31;;18020:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;18138:1;18123:14;;:16;;;;:::i;:::-;18108:12;;:31;;18100:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;17164:1029:::0;;;;;;;;;:::o;6030:31::-;;;;;;;;;;;;;:::o;16287:745::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16452:2:::1;16439:12;;:15;;;;:::i;:::-;16427:8;:28;16419:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16531:6;16518:12;;:19;;;;:::i;:::-;16506:8;:32;16498:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;16618:2;16605:12;;:15;;;;:::i;:::-;16593:8;:28;16585:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;16697:6;16684:12;;:19;;;;:::i;:::-;16672:8;:32;16664:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;16768:10;16751:14;;:27;;;;;;;;;;;;;;;;;;16800:8;16785:12;;:23;;;;;;;;;;;;;;;;;;16836:8;16815:18;:29;;;;16872:8;16851:18;:29;;;;16903:18;;16887:13;:34;;;;16939:85;16955:14;;;;;;;;;;;16971:12;;;;;;;;;;;16985:18;;17005;;16939:85;;;;;;;;;:::i;:::-;;;;;;;;16287:745:::0;;;;:::o;18965:215::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19077:9:::1;19072:100;19092:9;;:16;;19088:1;:20;19072:100;;;19154:6;19122:15;:29;19138:9;;19148:1;19138:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;19122:29;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;19110:3;;;;:::i;:::-;;;19072:100;;;;18965:215:::0;;;:::o;19188:135::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19309:6:::1;19282:16;:24;19299:6;19282:24;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;19188:135:::0;;:::o;12915:261::-;13004:17;13024:21;13004:41;;13064:12;;;;;;;;;;;13056:30;;:66;13118:3;13099:16;13087:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;13056:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13140:28;13151:16;13140:28;;;;;;:::i;:::-;;;;;;;;12993:183;12915:261;:::o;7959:133::-;8043:7;8061:11;:19;8073:6;8061:19;;;;;;;;;;;;;;;:28;8081:7;8061:28;;;;;;;;;;;;;;;;8054:35;;7959:133;;;;:::o;19512:335::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;19671:18:::1;19651:17;;:38;;;;;;;;;;;;;;;;;;19711:13;19696:12;;:28;;;;;;;;;;;;;;;;;;19748:15;19731:14;;:32;;;;;;;;;;;;;;;;;;19777:62;19791:17;;;;;;;;;;;19810:12;;;;;;;;;;;19824:14;;;;;;;;;;;19777:62;;;;;;;;:::i;:::-;;;;;;;;19512:335:::0;;;:::o;13185:431::-;13292:4;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13338:4:::1;13314:29;;:12;:29;;::::0;13306:74:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13402:1;13392:6;:11:::0;13389:96:::1;;13435:12;13428:30;;;13467:4;13428:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13419:54;;13389:96;13500:32;13511:12;13525:6;13500:32;;;;;;;:::i;:::-;;;;;;;;13557:12;13550:29;;;13580:10;13592:6;13550:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13543:56;;13185:431:::0;;;;:::o;3926:244::-;3690:12;:10;:12::i;:::-;3680:22;;:6;;;;;;;;;;:22;;;3672:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4035:1:::1;4015:22;;:8;:22;;::::0;4007:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;4125:8;4096:38;;4117:6;::::0;::::1;;;;;;;;4096:38;;;;;;;;;;;;4154:8;4145:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;3926:244:::0;:::o;5772:24::-;;;;;;;;;;;;;:::o;5831:31::-;;;;;;;;;;;;;:::o;2183:107::-;2228:15;2271:10;2256:26;;2183:107;:::o;20007:178::-;20088:7;20111:64;20152:22;:20;:22::i;:::-;20111:36;20124:22;20144:1;20124:15;20134:4;;;;;;;;;;;20124:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;20111:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;20104:71;;20007:178;;;:::o;1362:192::-;1448:7;1481:1;1476;:6;;1484:12;1468:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1508:9;1524:1;1520;:5;;;;:::i;:::-;1508:17;;1545:1;1538:8;;;1362:192;;;;;:::o;9015:1615::-;9107:4;9127:6;;;;;;;;;;;9124:63;;;9143:41;9158:6;9166:9;9177:6;9143:14;:41::i;:::-;9136:48;;;;9124:63;9216:4;;;;;;;;;;;9203:17;;:9;:17;;;;:38;;;;;4312:42;9224:17;;:9;:17;;;;9203:38;:72;;;;;9258:17;;;;;;;;;;;9245:30;;:9;:30;;;;9203:72;:103;;;;;9280:15;:26;9296:9;9280:26;;;;;;;;;;;;;;;;;;;;;;;;;9279:27;9203:103;9199:527;;;9364:14;;9354:6;9331:20;9341:9;9331;:20::i;:::-;:29;;;;:::i;:::-;:47;;9323:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9429:4;;;;;;;;;;;9419:14;;:6;:14;;;:49;;;;;9450:18;;;;;;;;;;;9419:49;:94;;;;;9486:16;:27;9503:9;9486:27;;;;;;;;;;;;;;;;;;;;;;;;;9485:28;9419:94;9415:290;;;9565:15;9538:13;:24;9552:9;9538:24;;;;;;;;;;;;;;;;:42;9530:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;9672:21;;;;;;;;;;;9654:39;;:15;:39;;;;:::i;:::-;9627:13;:24;9641:9;9627:24;;;;;;;;;;;;;;;:66;;;;9415:290;9199:527;9750:15;:23;9766:6;9750:23;;;;;;;;;;;;;;;;;;;;;;;;;9746:118;;9808:12;;9798:6;:22;;9790:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;9746:118;9898:4;;;;;;;;;;;9885:17;;:9;:17;;;;:38;;;;;4312:42;9906:17;;:9;:17;;;;9885:38;:69;;;;;9928:15;:26;9944:9;9928:26;;;;;;;;;;;;;;;;;;;;;;;;;9927:27;9885:69;9881:155;;;9979:11;;;;;;;;;;;9971:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9881:155;10051:16;:14;:16::i;:::-;10048:35;;;10070:10;:8;:10::i;:::-;10048:35;10095:24;10122:26;10141:6;10122:18;:26::i;:::-;10095:53;;10179:61;10199:16;10179:61;;;;;;;;;;;;;;;;;:7;:15;10187:6;10179:15;;;;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;10161:7;:15;10169:6;10161:15;;;;;;;;;;;;;;;:79;;;;10253:26;10282:21;10296:6;10282:13;:21::i;:::-;:49;;;;;10307:24;10321:9;10307:13;:24::i;:::-;10282:49;:158;;10424:16;10282:158;;;10334:87;10365:4;;;;;;;;;;;10355:14;;:6;:14;;;:28;;10378:5;10355:28;;;10371:4;10355:28;10385:6;10393:9;10404:16;10334:20;:87::i;:::-;10282:158;10253:187;;10472:42;10495:18;10472:7;:18;10480:9;10472:18;;;;;;;;;;;;;;;;:22;;:42;;;;:::i;:::-;10451:7;:18;10459:9;10451:18;;;;;;;;;;;;;;;:63;;;;10549:9;10532:68;;10541:6;10532:68;;;10560:39;10580:18;10560:19;:39::i;:::-;10532:68;;;;;;:::i;:::-;;;;;;;;10618:4;10611:11;;;;9015:1615;;;;;;:::o;10955:406::-;11048:4;11065:24;11092:26;11111:6;11092:18;:26::i;:::-;11065:53;;11147:61;11167:16;11147:61;;;;;;;;;;;;;;;;;:7;:15;11155:6;11147:15;;;;;;;;;;;;;;;;:19;;:61;;;;;:::i;:::-;11129:7;:15;11137:6;11129:15;;;;;;;;;;;;;;;:79;;;;11240:40;11263:16;11240:7;:18;11248:9;11240:18;;;;;;;;;;;;;;;;:22;;:40;;;;:::i;:::-;11219:7;:18;11227:9;11219:18;;;;;;;;;;;;;;;:61;;;;11313:9;11296:35;;11305:6;11296:35;;;11324:6;11296:35;;;;;;:::i;:::-;;;;;;;;11349:4;11342:11;;;10955:406;;;;;:::o;1220:136::-;1278:7;1305:43;1309:1;1312;1305:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1298:50;;1220:136;;;;:::o;1560:250::-;1618:7;1647:1;1642;:6;1638:47;;1672:1;1665:8;;;;1638:47;1697:9;1713:1;1709;:5;;;;:::i;:::-;1697:17;;1742:1;1737;1733;:5;;;;:::i;:::-;:10;1725:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1801:1;1794:8;;;1560:250;;;;;:::o;1816:132::-;1874:7;1901:39;1905:1;1908;1901:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1894:46;;1816:132;;;;:::o;1033:181::-;1091:7;1111:9;1127:1;1123;:5;;;;:::i;:::-;1111:17;;1152:1;1147;:6;;1139:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1205:1;1198:8;;;1033:181;;;;:::o;14168:198::-;14217:4;14255;;;;;;;;;;;14241:18;;:10;:18;;;;:38;;;;;14273:6;;;;;;;;;;;14272:7;14241:38;:63;;;;;14292:12;;;;;;;;;;;14241:63;:117;;;;;14345:13;;14317:24;14335:4;14317:9;:24::i;:::-;:41;;14241:117;14234:124;;14168:198;:::o;14374:1905::-;6343:4;6334:6;;:13;;;;;;;;;;;;;;;;;;14423:27:::1;14453:60;14469:15;;14486:26;;14453:15;:60::i;:::-;:83;;14520:16;;14453:83;;;14516:1;14453:83;14423:113;;14547:17;14567:35;14584:17;;14567:12;;:16;;:35;;;;:::i;:::-;14547:55;;14613:23;14639:60;14697:1;14639:53;14682:9;14639:38;14657:19;14639:13;;:17;;:38;;;;:::i;:::-;:42;;:53;;;;:::i;:::-;:57;;:60;;;;:::i;:::-;14613:86;;14710:20;14733:34;14751:15;14733:13;;:17;;:34;;;;:::i;:::-;14710:57;;14780:21;14818:1;14804:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14780:40;;14849:4;14831;14836:1;14831:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;14875:4;;;;;;;;;;;14865;14870:1;14865:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;14892:21;14916;14892:45;;14950:6;;;;;;;;;;;:57;;;15022:12;15049:1;15065:4;15092;15112:15;14950:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15151:17;15171:40;15197:13;15171:21;:25;;:40;;;;:::i;:::-;15151:60;;15222:19;15244:41;15258:26;15282:1;15258:19;:23;;:26;;;;:::i;:::-;15244:9;:13;;:41;;;;:::i;:::-;15222:63;;15296:26;15325:55;15378:1;15325:48;15361:11;15325:31;15339:16;;15325:9;:13;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;:52;;:55;;;;:::i;:::-;15296:84;;15391:26;15420:48;15456:11;15420:31;15434:16;;15420:9;:13;;:31;;;;:::i;:::-;:35;;:48;;;;:::i;:::-;15391:77;;15479:21;15503:43;15534:11;15503:26;15517:11;;15503:9;:13;;:26;;;;:::i;:::-;:30;;:43;;;;:::i;:::-;15479:67;;15560:15;15588:17;;;;;;;;;;;15580:31;;15619:18;15644:5;15580:74;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15559:95;;;15689:12;;;;;;;;;;;15681:26;;15715:13;15735:5;15681:64;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15665:80;;;;;15796:1;15778:15;:19;15775:357;;;15815:6;;;;;;;;;;;:22;;;15845:18;15891:4;15915:15;15949:1;15969::::0;15989:14:::1;;;;;;;;;;;16022:15;15815:237;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;16072:48;16084:18;16104:15;16072:48;;;;;;;:::i;:::-;;;;;;;;15775:357;16161:14;;;;;;;;;;;16160:15;:111;;16211:18;;16194:13;;:35;:77;;16253:18;;16194:77;;;16232:18;;16194:77;16160:111;;;16178:13;;16160:111;16144:13;:127;;;;14412:1867;;;;;;;;;;;;6361:5:::0;6352:6;;:14;;;;;;;;;;;;;;;;;;14374:1905::o;11369:116::-;11431:4;11456:11;:19;11468:6;11456:19;;;;;;;;;;;;;;;;;;;;;;;;;11455:20;11448:27;;11369:116;;;:::o;11880:1026::-;12001:7;12021:27;12061:4;12051:14;;:6;:14;;;:177;;12153:75;12213:14;;12153:55;12174:33;12202:4;;;;;;;;;;;12190:16;;:8;:16;;;12174:15;:33::i;:::-;12153:16;:20;;:55;;;;:::i;:::-;:59;;:75;;;;:::i;:::-;12051:177;;;12067:74;12126:14;;12067:54;12088:32;12115:4;;;;;;;;;;;12103:16;;:8;:16;;;12088:14;:32::i;:::-;12067:16;:20;;:54;;;;:::i;:::-;:58;;:74;;;;:::i;:::-;12051:177;12021:207;;12251:27;12291:4;12281:14;;:6;:14;;;:146;;12367:60;12414:12;;12367:42;12391:17;;12367:19;:23;;:42;;;;:::i;:::-;:46;;:60;;;;:::i;:::-;12281:146;;;12297:58;12343:11;;12297:41;12321:16;;12297:19;:23;;:41;;;;:::i;:::-;:45;;:58;;;;:::i;:::-;12281:146;12251:176;;12459:41;12480:19;12459:16;;:20;;:41;;;;:::i;:::-;12440:16;:60;;;;12523:29;12555:44;12579:19;12555;:23;;:44;;;;:::i;:::-;12523:76;;12635:49;12662:21;12635:7;:22;12651:4;12635:22;;;;;;;;;;;;;;;;:26;;:49;;;;:::i;:::-;12610:7;:22;12626:4;12610:22;;;;;;;;;;;;;;;:74;;;;12727:4;12702:75;;12711:6;12702:75;;;12734:42;12754:21;12734:19;:42::i;:::-;12702:75;;;;;;:::i;:::-;;;;;;;;12793:46;12801:19;12822:16;;12793:46;;;;;;;:::i;:::-;;;;;;;;12857:41;12878:19;12857:16;:20;;:41;;;;:::i;:::-;12850:48;;;;;11880:1026;;;;;;:::o;1954:189::-;2040:7;2072:1;2068;:5;2075:12;2060:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2099:9;2115:1;2111;:5;;;;:::i;:::-;2099:17;;2134:1;2127:8;;;1954:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:75::-;475:6;508:2;502:9;492:19;;442:75;:::o;523:117::-;632:1;629;622:12;646:117;755:1;752;745:12;769:122;842:24;860:5;842:24;:::i;:::-;835:5;832:35;822:63;;881:1;878;871:12;822:63;769:122;:::o;897:139::-;943:5;981:6;968:20;959:29;;997:33;1024:5;997:33;:::i;:::-;897:139;;;;:::o;1042:329::-;1101:6;1150:2;1138:9;1129:7;1125:23;1121:32;1118:119;;;1156:79;;:::i;:::-;1118:119;1276:1;1301:53;1346:7;1337:6;1326:9;1322:22;1301:53;:::i;:::-;1291:63;;1247:117;1042:329;;;;:::o;1377:99::-;1429:6;1463:5;1457:12;1447:22;;1377:99;;;:::o;1482:169::-;1566:11;1600:6;1595:3;1588:19;1640:4;1635:3;1631:14;1616:29;;1482:169;;;;:::o;1657:246::-;1738:1;1748:113;1762:6;1759:1;1756:13;1748:113;;;1847:1;1842:3;1838:11;1832:18;1828:1;1823:3;1819:11;1812:39;1784:2;1781:1;1777:10;1772:15;;1748:113;;;1895:1;1886:6;1881:3;1877:16;1870:27;1719:184;1657:246;;;:::o;1909:102::-;1950:6;2001:2;1997:7;1992:2;1985:5;1981:14;1977:28;1967:38;;1909:102;;;:::o;2017:377::-;2105:3;2133:39;2166:5;2133:39;:::i;:::-;2188:71;2252:6;2247:3;2188:71;:::i;:::-;2181:78;;2268:65;2326:6;2321:3;2314:4;2307:5;2303:16;2268:65;:::i;:::-;2358:29;2380:6;2358:29;:::i;:::-;2353:3;2349:39;2342:46;;2109:285;2017:377;;;;:::o;2400:313::-;2513:4;2551:2;2540:9;2536:18;2528:26;;2600:9;2594:4;2590:20;2586:1;2575:9;2571:17;2564:47;2628:78;2701:4;2692:6;2628:78;:::i;:::-;2620:86;;2400:313;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:329::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:474::-;4536:6;4544;4593:2;4581:9;4572:7;4568:23;4564:32;4561:119;;;4599:79;;:::i;:::-;4561:119;4719:1;4744:53;4789:7;4780:6;4769:9;4765:22;4744:53;:::i;:::-;4734:63;;4690:117;4846:2;4872:53;4917:7;4908:6;4897:9;4893:22;4872:53;:::i;:::-;4862:63;;4817:118;4468:474;;;;;:::o;4948:619::-;5025:6;5033;5041;5090:2;5078:9;5069:7;5065:23;5061:32;5058:119;;;5096:79;;:::i;:::-;5058:119;5216:1;5241:53;5286:7;5277:6;5266:9;5262:22;5241:53;:::i;:::-;5231:63;;5187:117;5343:2;5369:53;5414:7;5405:6;5394:9;5390:22;5369:53;:::i;:::-;5359:63;;5314:118;5471:2;5497:53;5542:7;5533:6;5522:9;5518:22;5497:53;:::i;:::-;5487:63;;5442:118;4948:619;;;;;:::o;5573:117::-;5682:1;5679;5672:12;5696:180;5744:77;5741:1;5734:88;5841:4;5838:1;5831:15;5865:4;5862:1;5855:15;5882:281;5965:27;5987:4;5965:27;:::i;:::-;5957:6;5953:40;6095:6;6083:10;6080:22;6059:18;6047:10;6044:34;6041:62;6038:88;;;6106:18;;:::i;:::-;6038:88;6146:10;6142:2;6135:22;5925:238;5882:281;;:::o;6169:129::-;6203:6;6230:20;;:::i;:::-;6220:30;;6259:33;6287:4;6279:6;6259:33;:::i;:::-;6169:129;;;:::o;6304:311::-;6381:4;6471:18;6463:6;6460:30;6457:56;;;6493:18;;:::i;:::-;6457:56;6543:4;6535:6;6531:17;6523:25;;6603:4;6597;6593:15;6585:23;;6304:311;;;:::o;6621:117::-;6730:1;6727;6720:12;6761:710;6857:5;6882:81;6898:64;6955:6;6898:64;:::i;:::-;6882:81;:::i;:::-;6873:90;;6983:5;7012:6;7005:5;6998:21;7046:4;7039:5;7035:16;7028:23;;7099:4;7091:6;7087:17;7079:6;7075:30;7128:3;7120:6;7117:15;7114:122;;;7147:79;;:::i;:::-;7114:122;7262:6;7245:220;7279:6;7274:3;7271:15;7245:220;;;7354:3;7383:37;7416:3;7404:10;7383:37;:::i;:::-;7378:3;7371:50;7450:4;7445:3;7441:14;7434:21;;7321:144;7305:4;7300:3;7296:14;7289:21;;7245:220;;;7249:21;6863:608;;6761:710;;;;;:::o;7494:370::-;7565:5;7614:3;7607:4;7599:6;7595:17;7591:27;7581:122;;7622:79;;:::i;:::-;7581:122;7739:6;7726:20;7764:94;7854:3;7846:6;7839:4;7831:6;7827:17;7764:94;:::i;:::-;7755:103;;7571:293;7494:370;;;;:::o;7870:311::-;7947:4;8037:18;8029:6;8026:30;8023:56;;;8059:18;;:::i;:::-;8023:56;8109:4;8101:6;8097:17;8089:25;;8169:4;8163;8159:15;8151:23;;7870:311;;;:::o;8204:710::-;8300:5;8325:81;8341:64;8398:6;8341:64;:::i;:::-;8325:81;:::i;:::-;8316:90;;8426:5;8455:6;8448:5;8441:21;8489:4;8482:5;8478:16;8471:23;;8542:4;8534:6;8530:17;8522:6;8518:30;8571:3;8563:6;8560:15;8557:122;;;8590:79;;:::i;:::-;8557:122;8705:6;8688:220;8722:6;8717:3;8714:15;8688:220;;;8797:3;8826:37;8859:3;8847:10;8826:37;:::i;:::-;8821:3;8814:50;8893:4;8888:3;8884:14;8877:21;;8764:144;8748:4;8743:3;8739:14;8732:21;;8688:220;;;8692:21;8306:608;;8204:710;;;;;:::o;8937:370::-;9008:5;9057:3;9050:4;9042:6;9038:17;9034:27;9024:122;;9065:79;;:::i;:::-;9024:122;9182:6;9169:20;9207:94;9297:3;9289:6;9282:4;9274:6;9270:17;9207:94;:::i;:::-;9198:103;;9014:293;8937:370;;;;:::o;9313:894::-;9431:6;9439;9488:2;9476:9;9467:7;9463:23;9459:32;9456:119;;;9494:79;;:::i;:::-;9456:119;9642:1;9631:9;9627:17;9614:31;9672:18;9664:6;9661:30;9658:117;;;9694:79;;:::i;:::-;9658:117;9799:78;9869:7;9860:6;9849:9;9845:22;9799:78;:::i;:::-;9789:88;;9585:302;9954:2;9943:9;9939:18;9926:32;9985:18;9977:6;9974:30;9971:117;;;10007:79;;:::i;:::-;9971:117;10112:78;10182:7;10173:6;10162:9;10158:22;10112:78;:::i;:::-;10102:88;;9897:303;9313:894;;;;;:::o;10213:116::-;10283:21;10298:5;10283:21;:::i;:::-;10276:5;10273:32;10263:60;;10319:1;10316;10309:12;10263:60;10213:116;:::o;10335:133::-;10378:5;10416:6;10403:20;10394:29;;10432:30;10456:5;10432:30;:::i;:::-;10335:133;;;;:::o;10474:323::-;10530:6;10579:2;10567:9;10558:7;10554:23;10550:32;10547:119;;;10585:79;;:::i;:::-;10547:119;10705:1;10730:50;10772:7;10763:6;10752:9;10748:22;10730:50;:::i;:::-;10720:60;;10676:114;10474:323;;;;:::o;10803:86::-;10838:7;10878:4;10871:5;10867:16;10856:27;;10803:86;;;:::o;10895:112::-;10978:22;10994:5;10978:22;:::i;:::-;10973:3;10966:35;10895:112;;:::o;11013:214::-;11102:4;11140:2;11129:9;11125:18;11117:26;;11153:67;11217:1;11206:9;11202:17;11193:6;11153:67;:::i;:::-;11013:214;;;;:::o;11233:468::-;11298:6;11306;11355:2;11343:9;11334:7;11330:23;11326:32;11323:119;;;11361:79;;:::i;:::-;11323:119;11481:1;11506:53;11551:7;11542:6;11531:9;11527:22;11506:53;:::i;:::-;11496:63;;11452:117;11608:2;11634:50;11676:7;11667:6;11656:9;11652:22;11634:50;:::i;:::-;11624:60;;11579:115;11233:468;;;;;:::o;11707:118::-;11794:24;11812:5;11794:24;:::i;:::-;11789:3;11782:37;11707:118;;:::o;11831:222::-;11924:4;11962:2;11951:9;11947:18;11939:26;;11975:71;12043:1;12032:9;12028:17;12019:6;11975:71;:::i;:::-;11831:222;;;;:::o;12059:117::-;12168:1;12165;12158:12;12199:568;12272:8;12282:6;12332:3;12325:4;12317:6;12313:17;12309:27;12299:122;;12340:79;;:::i;:::-;12299:122;12453:6;12440:20;12430:30;;12483:18;12475:6;12472:30;12469:117;;;12505:79;;:::i;:::-;12469:117;12619:4;12611:6;12607:17;12595:29;;12673:3;12665:4;12657:6;12653:17;12643:8;12639:32;12636:41;12633:128;;;12680:79;;:::i;:::-;12633:128;12199:568;;;;;:::o;12773:698::-;12865:6;12873;12881;12930:2;12918:9;12909:7;12905:23;12901:32;12898:119;;;12936:79;;:::i;:::-;12898:119;13084:1;13073:9;13069:17;13056:31;13114:18;13106:6;13103:30;13100:117;;;13136:79;;:::i;:::-;13100:117;13249:80;13321:7;13312:6;13301:9;13297:22;13249:80;:::i;:::-;13231:98;;;;13027:312;13378:2;13404:50;13446:7;13437:6;13426:9;13422:22;13404:50;:::i;:::-;13394:60;;13349:115;12773:698;;;;;:::o;13477:1495::-;13608:6;13616;13624;13632;13640;13648;13656;13664;13672;13721:3;13709:9;13700:7;13696:23;13692:33;13689:120;;;13728:79;;:::i;:::-;13689:120;13848:1;13873:53;13918:7;13909:6;13898:9;13894:22;13873:53;:::i;:::-;13863:63;;13819:117;13975:2;14001:53;14046:7;14037:6;14026:9;14022:22;14001:53;:::i;:::-;13991:63;;13946:118;14103:2;14129:53;14174:7;14165:6;14154:9;14150:22;14129:53;:::i;:::-;14119:63;;14074:118;14231:2;14257:53;14302:7;14293:6;14282:9;14278:22;14257:53;:::i;:::-;14247:63;;14202:118;14359:3;14386:53;14431:7;14422:6;14411:9;14407:22;14386:53;:::i;:::-;14376:63;;14330:119;14488:3;14515:53;14560:7;14551:6;14540:9;14536:22;14515:53;:::i;:::-;14505:63;;14459:119;14617:3;14644:53;14689:7;14680:6;14669:9;14665:22;14644:53;:::i;:::-;14634:63;;14588:119;14746:3;14773:53;14818:7;14809:6;14798:9;14794:22;14773:53;:::i;:::-;14763:63;;14717:119;14875:3;14902:53;14947:7;14938:6;14927:9;14923:22;14902:53;:::i;:::-;14892:63;;14846:119;13477:1495;;;;;;;;;;;:::o;14978:753::-;15058:6;15066;15074;15082;15131:3;15119:9;15110:7;15106:23;15102:33;15099:120;;;15138:79;;:::i;:::-;15099:120;15258:1;15283:50;15325:7;15316:6;15305:9;15301:22;15283:50;:::i;:::-;15273:60;;15229:114;15382:2;15408:53;15453:7;15444:6;15433:9;15429:22;15408:53;:::i;:::-;15398:63;;15353:118;15510:2;15536:53;15581:7;15572:6;15561:9;15557:22;15536:53;:::i;:::-;15526:63;;15481:118;15638:2;15664:50;15706:7;15697:6;15686:9;15682:22;15664:50;:::i;:::-;15654:60;;15609:115;14978:753;;;;;;;:::o;15737:474::-;15805:6;15813;15862:2;15850:9;15841:7;15837:23;15833:32;15830:119;;;15868:79;;:::i;:::-;15830:119;15988:1;16013:53;16058:7;16049:6;16038:9;16034:22;16013:53;:::i;:::-;16003:63;;15959:117;16115:2;16141:53;16186:7;16177:6;16166:9;16162:22;16141:53;:::i;:::-;16131:63;;16086:118;15737:474;;;;;:::o;16217:619::-;16294:6;16302;16310;16359:2;16347:9;16338:7;16334:23;16330:32;16327:119;;;16365:79;;:::i;:::-;16327:119;16485:1;16510:53;16555:7;16546:6;16535:9;16531:22;16510:53;:::i;:::-;16500:63;;16456:117;16612:2;16638:53;16683:7;16674:6;16663:9;16659:22;16638:53;:::i;:::-;16628:63;;16583:118;16740:2;16766:53;16811:7;16802:6;16791:9;16787:22;16766:53;:::i;:::-;16756:63;;16711:118;16217:619;;;;;:::o;16842:60::-;16870:3;16891:5;16884:12;;16842:60;;;:::o;16908:142::-;16958:9;16991:53;17009:34;17018:24;17036:5;17018:24;:::i;:::-;17009:34;:::i;:::-;16991:53;:::i;:::-;16978:66;;16908:142;;;:::o;17056:126::-;17106:9;17139:37;17170:5;17139:37;:::i;:::-;17126:50;;17056:126;;;:::o;17188:144::-;17256:9;17289:37;17320:5;17289:37;:::i;:::-;17276:50;;17188:144;;;:::o;17338:167::-;17443:55;17492:5;17443:55;:::i;:::-;17438:3;17431:68;17338:167;;:::o;17511:258::-;17622:4;17660:2;17649:9;17645:18;17637:26;;17673:89;17759:1;17748:9;17744:17;17735:6;17673:89;:::i;:::-;17511:258;;;;:::o;17775:182::-;17915:34;17911:1;17903:6;17899:14;17892:58;17775:182;:::o;17963:366::-;18105:3;18126:67;18190:2;18185:3;18126:67;:::i;:::-;18119:74;;18202:93;18291:3;18202:93;:::i;:::-;18320:2;18315:3;18311:12;18304:19;;17963:366;;;:::o;18335:419::-;18501:4;18539:2;18528:9;18524:18;18516:26;;18588:9;18582:4;18578:20;18574:1;18563:9;18559:17;18552:47;18616:131;18742:4;18616:131;:::i;:::-;18608:139;;18335:419;;;:::o;18760:177::-;18900:29;18896:1;18888:6;18884:14;18877:53;18760:177;:::o;18943:366::-;19085:3;19106:67;19170:2;19165:3;19106:67;:::i;:::-;19099:74;;19182:93;19271:3;19182:93;:::i;:::-;19300:2;19295:3;19291:12;19284:19;;18943:366;;;:::o;19315:419::-;19481:4;19519:2;19508:9;19504:18;19496:26;;19568:9;19562:4;19558:20;19554:1;19543:9;19539:17;19532:47;19596:131;19722:4;19596:131;:::i;:::-;19588:139;;19315:419;;;:::o;19740:180::-;19788:77;19785:1;19778:88;19885:4;19882:1;19875:15;19909:4;19906:1;19899:15;19926:410;19966:7;19989:20;20007:1;19989:20;:::i;:::-;19984:25;;20023:20;20041:1;20023:20;:::i;:::-;20018:25;;20078:1;20075;20071:9;20100:30;20118:11;20100:30;:::i;:::-;20089:41;;20279:1;20270:7;20266:15;20263:1;20260:22;20240:1;20233:9;20213:83;20190:139;;20309:18;;:::i;:::-;20190:139;19974:362;19926:410;;;;:::o;20342:180::-;20390:77;20387:1;20380:88;20487:4;20484:1;20477:15;20511:4;20508:1;20501:15;20528:185;20568:1;20585:20;20603:1;20585:20;:::i;:::-;20580:25;;20619:20;20637:1;20619:20;:::i;:::-;20614:25;;20658:1;20648:35;;20663:18;;:::i;:::-;20648:35;20705:1;20702;20698:9;20693:14;;20528:185;;;;:::o;20719:180::-;20767:77;20764:1;20757:88;20864:4;20861:1;20854:15;20888:4;20885:1;20878:15;20905:320;20949:6;20986:1;20980:4;20976:12;20966:22;;21033:1;21027:4;21023:12;21054:18;21044:81;;21110:4;21102:6;21098:17;21088:27;;21044:81;21172:2;21164:6;21161:14;21141:18;21138:38;21135:84;;21191:18;;:::i;:::-;21135:84;20956:269;20905:320;;;:::o;21231:171::-;21371:23;21367:1;21359:6;21355:14;21348:47;21231:171;:::o;21408:366::-;21550:3;21571:67;21635:2;21630:3;21571:67;:::i;:::-;21564:74;;21647:93;21736:3;21647:93;:::i;:::-;21765:2;21760:3;21756:12;21749:19;;21408:366;;;:::o;21780:419::-;21946:4;21984:2;21973:9;21969:18;21961:26;;22033:9;22027:4;22023:20;22019:1;22008:9;22004:17;21997:47;22061:131;22187:4;22061:131;:::i;:::-;22053:139;;21780:419;;;:::o;22205:180::-;22253:77;22250:1;22243:88;22350:4;22347:1;22340:15;22374:4;22371:1;22364:15;22391:168;22531:20;22527:1;22519:6;22515:14;22508:44;22391:168;:::o;22565:366::-;22707:3;22728:67;22792:2;22787:3;22728:67;:::i;:::-;22721:74;;22804:93;22893:3;22804:93;:::i;:::-;22922:2;22917:3;22913:12;22906:19;;22565:366;;;:::o;22937:419::-;23103:4;23141:2;23130:9;23126:18;23118:26;;23190:9;23184:4;23180:20;23176:1;23165:9;23161:17;23154:47;23218:131;23344:4;23218:131;:::i;:::-;23210:139;;22937:419;;;:::o;23362:89::-;23398:7;23438:6;23431:5;23427:18;23416:29;;23362:89;;;:::o;23457:171::-;23495:3;23518:23;23535:5;23518:23;:::i;:::-;23509:32;;23563:6;23556:5;23553:17;23550:43;;23573:18;;:::i;:::-;23550:43;23620:1;23613:5;23609:13;23602:20;;23457:171;;;:::o;23634:233::-;23673:3;23696:24;23714:5;23696:24;:::i;:::-;23687:33;;23742:66;23735:5;23732:77;23729:103;;23812:18;;:::i;:::-;23729:103;23859:1;23852:5;23848:13;23841:20;;23634:233;;;:::o;23873:179::-;24013:31;24009:1;24001:6;23997:14;23990:55;23873:179;:::o;24058:366::-;24200:3;24221:67;24285:2;24280:3;24221:67;:::i;:::-;24214:74;;24297:93;24386:3;24297:93;:::i;:::-;24415:2;24410:3;24406:12;24399:19;;24058:366;;;:::o;24430:419::-;24596:4;24634:2;24623:9;24619:18;24611:26;;24683:9;24677:4;24673:20;24669:1;24658:9;24654:17;24647:47;24711:131;24837:4;24711:131;:::i;:::-;24703:139;;24430:419;;;:::o;24855:180::-;24995:32;24991:1;24983:6;24979:14;24972:56;24855:180;:::o;25041:366::-;25183:3;25204:67;25268:2;25263:3;25204:67;:::i;:::-;25197:74;;25280:93;25369:3;25280:93;:::i;:::-;25398:2;25393:3;25389:12;25382:19;;25041:366;;;:::o;25413:419::-;25579:4;25617:2;25606:9;25602:18;25594:26;;25666:9;25660:4;25656:20;25652:1;25641:9;25637:17;25630:47;25694:131;25820:4;25694:131;:::i;:::-;25686:139;;25413:419;;;:::o;25838:181::-;25978:33;25974:1;25966:6;25962:14;25955:57;25838:181;:::o;26025:366::-;26167:3;26188:67;26252:2;26247:3;26188:67;:::i;:::-;26181:74;;26264:93;26353:3;26264:93;:::i;:::-;26382:2;26377:3;26373:12;26366:19;;26025:366;;;:::o;26397:419::-;26563:4;26601:2;26590:9;26586:18;26578:26;;26650:9;26644:4;26640:20;26636:1;26625:9;26621:17;26614:47;26678:131;26804:4;26678:131;:::i;:::-;26670:139;;26397:419;;;:::o;26822:222::-;26962:34;26958:1;26950:6;26946:14;26939:58;27031:5;27026:2;27018:6;27014:15;27007:30;26822:222;:::o;27050:366::-;27192:3;27213:67;27277:2;27272:3;27213:67;:::i;:::-;27206:74;;27289:93;27378:3;27289:93;:::i;:::-;27407:2;27402:3;27398:12;27391:19;;27050:366;;;:::o;27422:419::-;27588:4;27626:2;27615:9;27611:18;27603:26;;27675:9;27669:4;27665:20;27661:1;27650:9;27646:17;27639:47;27703:131;27829:4;27703:131;:::i;:::-;27695:139;;27422:419;;;:::o;27847:529::-;28012:4;28050:3;28039:9;28035:19;28027:27;;28064:65;28126:1;28115:9;28111:17;28102:6;28064:65;:::i;:::-;28139:66;28201:2;28190:9;28186:18;28177:6;28139:66;:::i;:::-;28215:72;28283:2;28272:9;28268:18;28259:6;28215:72;:::i;:::-;28297;28365:2;28354:9;28350:18;28341:6;28297:72;:::i;:::-;27847:529;;;;;;;:::o;28382:442::-;28531:4;28569:2;28558:9;28554:18;28546:26;;28582:71;28650:1;28639:9;28635:17;28626:6;28582:71;:::i;:::-;28663:72;28731:2;28720:9;28716:18;28707:6;28663:72;:::i;:::-;28745;28813:2;28802:9;28798:18;28789:6;28745:72;:::i;:::-;28382:442;;;;;;:::o;28830:182::-;28970:34;28966:1;28958:6;28954:14;28947:58;28830:182;:::o;29018:366::-;29160:3;29181:67;29245:2;29240:3;29181:67;:::i;:::-;29174:74;;29257:93;29346:3;29257:93;:::i;:::-;29375:2;29370:3;29366:12;29359:19;;29018:366;;;:::o;29390:419::-;29556:4;29594:2;29583:9;29579:18;29571:26;;29643:9;29637:4;29633:20;29629:1;29618:9;29614:17;29607:47;29671:131;29797:4;29671:131;:::i;:::-;29663:139;;29390:419;;;:::o;29815:143::-;29872:5;29903:6;29897:13;29888:22;;29919:33;29946:5;29919:33;:::i;:::-;29815:143;;;;:::o;29964:351::-;30034:6;30083:2;30071:9;30062:7;30058:23;30054:32;30051:119;;;30089:79;;:::i;:::-;30051:119;30209:1;30234:64;30290:7;30281:6;30270:9;30266:22;30234:64;:::i;:::-;30224:74;;30180:128;29964:351;;;;:::o;30321:332::-;30442:4;30480:2;30469:9;30465:18;30457:26;;30493:71;30561:1;30550:9;30546:17;30537:6;30493:71;:::i;:::-;30574:72;30642:2;30631:9;30627:18;30618:6;30574:72;:::i;:::-;30321:332;;;;;:::o;30659:137::-;30713:5;30744:6;30738:13;30729:22;;30760:30;30784:5;30760:30;:::i;:::-;30659:137;;;;:::o;30802:345::-;30869:6;30918:2;30906:9;30897:7;30893:23;30889:32;30886:119;;;30924:79;;:::i;:::-;30886:119;31044:1;31069:61;31122:7;31113:6;31102:9;31098:22;31069:61;:::i;:::-;31059:71;;31015:125;30802:345;;;;:::o;31153:225::-;31293:34;31289:1;31281:6;31277:14;31270:58;31362:8;31357:2;31349:6;31345:15;31338:33;31153:225;:::o;31384:366::-;31526:3;31547:67;31611:2;31606:3;31547:67;:::i;:::-;31540:74;;31623:93;31712:3;31623:93;:::i;:::-;31741:2;31736:3;31732:12;31725:19;;31384:366;;;:::o;31756:419::-;31922:4;31960:2;31949:9;31945:18;31937:26;;32009:9;32003:4;31999:20;31995:1;31984:9;31980:17;31973:47;32037:131;32163:4;32037:131;:::i;:::-;32029:139;;31756:419;;;:::o;32181:194::-;32221:4;32241:20;32259:1;32241:20;:::i;:::-;32236:25;;32275:20;32293:1;32275:20;:::i;:::-;32270:25;;32319:1;32316;32312:9;32304:17;;32343:1;32337:4;32334:11;32331:37;;;32348:18;;:::i;:::-;32331:37;32181:194;;;;:::o;32381:191::-;32421:3;32440:20;32458:1;32440:20;:::i;:::-;32435:25;;32474:20;32492:1;32474:20;:::i;:::-;32469:25;;32517:1;32514;32510:9;32503:16;;32538:3;32535:1;32532:10;32529:36;;;32545:18;;:::i;:::-;32529:36;32381:191;;;;:::o;32578:169::-;32718:21;32714:1;32706:6;32702:14;32695:45;32578:169;:::o;32753:366::-;32895:3;32916:67;32980:2;32975:3;32916:67;:::i;:::-;32909:74;;32992:93;33081:3;32992:93;:::i;:::-;33110:2;33105:3;33101:12;33094:19;;32753:366;;;:::o;33125:419::-;33291:4;33329:2;33318:9;33314:18;33306:26;;33378:9;33372:4;33368:20;33364:1;33353:9;33349:17;33342:47;33406:131;33532:4;33406:131;:::i;:::-;33398:139;;33125:419;;;:::o;33550:178::-;33690:30;33686:1;33678:6;33674:14;33667:54;33550:178;:::o;33734:366::-;33876:3;33897:67;33961:2;33956:3;33897:67;:::i;:::-;33890:74;;33973:93;34062:3;33973:93;:::i;:::-;34091:2;34086:3;34082:12;34075:19;;33734:366;;;:::o;34106:419::-;34272:4;34310:2;34299:9;34295:18;34287:26;;34359:9;34353:4;34349:20;34345:1;34334:9;34330:17;34323:47;34387:131;34513:4;34387:131;:::i;:::-;34379:139;;34106:419;;;:::o;34531:177::-;34671:29;34667:1;34659:6;34655:14;34648:53;34531:177;:::o;34714:366::-;34856:3;34877:67;34941:2;34936:3;34877:67;:::i;:::-;34870:74;;34953:93;35042:3;34953:93;:::i;:::-;35071:2;35066:3;35062:12;35055:19;;34714:366;;;:::o;35086:419::-;35252:4;35290:2;35279:9;35275:18;35267:26;;35339:9;35333:4;35329:20;35325:1;35314:9;35310:17;35303:47;35367:131;35493:4;35367:131;:::i;:::-;35359:139;;35086:419;;;:::o;35511:170::-;35651:22;35647:1;35639:6;35635:14;35628:46;35511:170;:::o;35687:366::-;35829:3;35850:67;35914:2;35909:3;35850:67;:::i;:::-;35843:74;;35926:93;36015:3;35926:93;:::i;:::-;36044:2;36039:3;36035:12;36028:19;;35687:366;;;:::o;36059:419::-;36225:4;36263:2;36252:9;36248:18;36240:26;;36312:9;36306:4;36302:20;36298:1;36287:9;36283:17;36276:47;36340:131;36466:4;36340:131;:::i;:::-;36332:139;;36059:419;;;:::o;36484:220::-;36624:34;36620:1;36612:6;36608:14;36601:58;36693:3;36688:2;36680:6;36676:15;36669:28;36484:220;:::o;36710:366::-;36852:3;36873:67;36937:2;36932:3;36873:67;:::i;:::-;36866:74;;36949:93;37038:3;36949:93;:::i;:::-;37067:2;37062:3;37058:12;37051:19;;36710:366;;;:::o;37082:419::-;37248:4;37286:2;37275:9;37271:18;37263:26;;37335:9;37329:4;37325:20;37321:1;37310:9;37306:17;37299:47;37363:131;37489:4;37363:131;:::i;:::-;37355:139;;37082:419;;;:::o;37507:177::-;37647:29;37643:1;37635:6;37631:14;37624:53;37507:177;:::o;37690:366::-;37832:3;37853:67;37917:2;37912:3;37853:67;:::i;:::-;37846:74;;37929:93;38018:3;37929:93;:::i;:::-;38047:2;38042:3;38038:12;38031:19;;37690:366;;;:::o;38062:419::-;38228:4;38266:2;38255:9;38251:18;38243:26;;38315:9;38309:4;38305:20;38301:1;38290:9;38286:17;38279:47;38343:131;38469:4;38343:131;:::i;:::-;38335:139;;38062:419;;;:::o;38487:85::-;38532:7;38561:5;38550:16;;38487:85;;;:::o;38578:158::-;38636:9;38669:61;38687:42;38696:32;38722:5;38696:32;:::i;:::-;38687:42;:::i;:::-;38669:61;:::i;:::-;38656:74;;38578:158;;;:::o;38742:147::-;38837:45;38876:5;38837:45;:::i;:::-;38832:3;38825:58;38742:147;;:::o;38895:114::-;38962:6;38996:5;38990:12;38980:22;;38895:114;;;:::o;39015:184::-;39114:11;39148:6;39143:3;39136:19;39188:4;39183:3;39179:14;39164:29;;39015:184;;;;:::o;39205:132::-;39272:4;39295:3;39287:11;;39325:4;39320:3;39316:14;39308:22;;39205:132;;;:::o;39343:108::-;39420:24;39438:5;39420:24;:::i;:::-;39415:3;39408:37;39343:108;;:::o;39457:179::-;39526:10;39547:46;39589:3;39581:6;39547:46;:::i;:::-;39625:4;39620:3;39616:14;39602:28;;39457:179;;;;:::o;39642:113::-;39712:4;39744;39739:3;39735:14;39727:22;;39642:113;;;:::o;39791:732::-;39910:3;39939:54;39987:5;39939:54;:::i;:::-;40009:86;40088:6;40083:3;40009:86;:::i;:::-;40002:93;;40119:56;40169:5;40119:56;:::i;:::-;40198:7;40229:1;40214:284;40239:6;40236:1;40233:13;40214:284;;;40315:6;40309:13;40342:63;40401:3;40386:13;40342:63;:::i;:::-;40335:70;;40428:60;40481:6;40428:60;:::i;:::-;40418:70;;40274:224;40261:1;40258;40254:9;40249:14;;40214:284;;;40218:14;40514:3;40507:10;;39915:608;;;39791:732;;;;:::o;40529:831::-;40792:4;40830:3;40819:9;40815:19;40807:27;;40844:71;40912:1;40901:9;40897:17;40888:6;40844:71;:::i;:::-;40925:80;41001:2;40990:9;40986:18;40977:6;40925:80;:::i;:::-;41052:9;41046:4;41042:20;41037:2;41026:9;41022:18;41015:48;41080:108;41183:4;41174:6;41080:108;:::i;:::-;41072:116;;41198:72;41266:2;41255:9;41251:18;41242:6;41198:72;:::i;:::-;41280:73;41348:3;41337:9;41333:19;41324:6;41280:73;:::i;:::-;40529:831;;;;;;;;:::o;41366:147::-;41467:11;41504:3;41489:18;;41366:147;;;;:::o;41519:114::-;;:::o;41639:398::-;41798:3;41819:83;41900:1;41895:3;41819:83;:::i;:::-;41812:90;;41911:93;42000:3;41911:93;:::i;:::-;42029:1;42024:3;42020:11;42013:18;;41639:398;;;:::o;42043:379::-;42227:3;42249:147;42392:3;42249:147;:::i;:::-;42242:154;;42413:3;42406:10;;42043:379;;;:::o;42428:807::-;42677:4;42715:3;42704:9;42700:19;42692:27;;42729:71;42797:1;42786:9;42782:17;42773:6;42729:71;:::i;:::-;42810:72;42878:2;42867:9;42863:18;42854:6;42810:72;:::i;:::-;42892:80;42968:2;42957:9;42953:18;42944:6;42892:80;:::i;:::-;42982;43058:2;43047:9;43043:18;43034:6;42982:80;:::i;:::-;43072:73;43140:3;43129:9;43125:19;43116:6;43072:73;:::i;:::-;43155;43223:3;43212:9;43208:19;43199:6;43155:73;:::i;:::-;42428:807;;;;;;;;;:::o;43241:663::-;43329:6;43337;43345;43394:2;43382:9;43373:7;43369:23;43365:32;43362:119;;;43400:79;;:::i;:::-;43362:119;43520:1;43545:64;43601:7;43592:6;43581:9;43577:22;43545:64;:::i;:::-;43535:74;;43491:128;43658:2;43684:64;43740:7;43731:6;43720:9;43716:22;43684:64;:::i;:::-;43674:74;;43629:129;43797:2;43823:64;43879:7;43870:6;43859:9;43855:22;43823:64;:::i;:::-;43813:74;;43768:129;43241:663;;;;;:::o;43910:332::-;44031:4;44069:2;44058:9;44054:18;44046:26;;44082:71;44150:1;44139:9;44135:17;44126:6;44082:71;:::i;:::-;44163:72;44231:2;44220:9;44216:18;44207:6;44163:72;:::i;:::-;43910:332;;;;;:::o

Swarm Source

ipfs://680c134de01024c78b8d6ce62da404fae17d1478624540edd4636ab70393e877
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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