Token APPLE

 

Overview [ERC-20]

Price
$0.00 @ 0.000000 Eth
Fully Diluted Market Cap
Max Total Supply:
1,000,000,000 APPLE

Holders:
97
Contract:
0x8684eff16b22b19acc5680c095345ca173d3cd660x8684EFF16B22B19ACc5680c095345CA173d3cd66

Decimals:
18

Social Profiles:
Not Available, Update ?

 
Balance
254,352.898436731098619422 APPLE

Value
$0.00
0xf85fc2732dfd5446ffbfc63f33a4d4381a5e8123
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
APPLE

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at basescan.org on 2024-04-08
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

        (bool success, ) = recipient.call{value: amount}("");
        return success; // always proceeds
    }
}

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

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

abstract contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

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

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

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

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

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

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

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

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

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

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

        _transfer(sender, recipient, amount);

        return true;
    }

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

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

        return true;
    }

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

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

contract APPLE is ERC20, Ownable {
    using Address for address payable;

    mapping (address => bool) private _isExcludedFromFees;

    uint256 public  feeOnBuy;
    uint256 public  feeOnSell;

    uint256 public  feeOnTransfer;

    address public  feeReceiver;

    address public  uniswapV2Pair;

    event ExcludeFromFees(address indexed account, bool isExcluded);

    constructor () ERC20("APPLE", "APPLE") 
    {   
        feeOnBuy  = 0;
        feeOnSell = 0;

        feeOnTransfer = 0;

        feeReceiver = 0xD1DBa145Ac6604D242eE327DBFf965bcAD75B0Fe;

        _isExcludedFromFees[owner()] = true;
        _isExcludedFromFees[address(0xdead)] = true;
        _isExcludedFromFees[address(this)] = true;

        maxTransactionLimitEnabled = true;

        _isExcludedFromMaxTxLimit[owner()] = true;
        _isExcludedFromMaxTxLimit[address(this)] = true;
        _isExcludedFromMaxTxLimit[address(0xdead)] = true;
        _isExcludedFromMaxTxLimit[feeReceiver] = true;

        _mintOnce(owner(), 1e9 * (10 ** decimals()));

        maxTransactionAmountBuy     = totalSupply() * 10 / 1000;
        maxTransactionAmountSell    = totalSupply() * 10 / 1000;
    }

    receive() external payable {}

    function claimStuckTokens(address token) external onlyOwner {
        require(token != address(this), "CSLT: Owner cannot claim contract's balance of its own tokens");
        if (token == address(0x0)) {
            payable(msg.sender).sendValue(address(this).balance);
            return;
        }
        
        IERC20(token).transfer(msg.sender, IERC20(token).balanceOf(address(this)));
    }

    function excludeFromFees(address account, bool excluded) external onlyOwner{
        _isExcludedFromFees[account] = excluded;

        emit ExcludeFromFees(account, excluded);
    }

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

    event UpdateFees(uint256 feeOnBuy, uint256 feeOnSell);

    function updateFees(uint256 _feeOnSell, uint256 _feeOnBuy, uint256 _feeOnTransfer) external onlyOwner {
        feeOnBuy = _feeOnBuy;
        feeOnSell = _feeOnSell;
        feeOnTransfer = _feeOnTransfer;

        require(feeOnBuy <= 100, "CSLT: Total Fees cannot exceed the maximum");
        require(feeOnSell <= 100, "CSLT: Total Fees cannot exceed the maximum");
        require(feeOnTransfer <= 100, "CSLT: Total Fees cannot exceed the maximum");

        emit UpdateFees(feeOnSell, feeOnBuy);
    }

    event FeeReceiverChanged(address feeReceiver);

    function changeFeeReceiver(address _feeReceiver) external onlyOwner{
        require(_feeReceiver != address(0), "CSLT: Fee receiver cannot be the zero address");
        feeReceiver = _feeReceiver;

        emit FeeReceiverChanged(feeReceiver);
    }
    
    event TradingEnabled(bool tradingEnabled);

    bool public tradingEnabled;

    function enableTrading(address _uniswapAddress) external onlyOwner{
        require(!tradingEnabled, "CSLT: Trading already enabled.");
        tradingEnabled = true;
        uniswapV2Pair = _uniswapAddress;

        emit TradingEnabled(tradingEnabled);
    }

    function changeUniswapPair(address _uniswapAddress) external onlyOwner{
        uniswapV2Pair = _uniswapAddress;
    }

    function _transfer(address from,address to,uint256 amount) internal  override {
        require(from != address(0), "CSLT: transfer from the zero address");
        require(to != address(0), "CSLT: transfer to the zero address");
        require(tradingEnabled || _isExcludedFromFees[from] || _isExcludedFromFees[to], "CSLT: Trading not yet enabled!");
       
        if (amount == 0) {
            super._transfer(from, to, 0);
            return;
        }

        if (maxTransactionLimitEnabled) 
        {
            if ((from == uniswapV2Pair || to == uniswapV2Pair) &&
                !_isExcludedFromMaxTxLimit[from] && 
                !_isExcludedFromMaxTxLimit[to]
            ) {
                if (from == uniswapV2Pair) {
                    require(
                        amount <= maxTransactionAmountBuy,  
                        "AntiWhale: Transfer amount exceeds the maxTransactionAmount"
                    );
                } else {
                    require(
                        amount <= maxTransactionAmountSell, 
                        "AntiWhale: Transfer amount exceeds the maxTransactionAmount"
                    );
                }
            }
        }

        uint256 _totalFees;
        if (_isExcludedFromFees[from] || _isExcludedFromFees[to]) {
            _totalFees = 0;
        } else if (from == uniswapV2Pair) {
            _totalFees = feeOnBuy;
        } else if (to == uniswapV2Pair) {
            _totalFees =  feeOnSell;
        } else {
            _totalFees = feeOnTransfer;
        }

        if (_totalFees > 0) {
            uint256 fees = (amount * _totalFees) / 100;
            amount = amount - fees;
            super._transfer(from, address(feeReceiver), fees);
        }

        super._transfer(from, to, amount);
    }

    mapping(address => bool) private _isExcludedFromMaxTxLimit;
    bool    public  maxTransactionLimitEnabled;
    uint256 public  maxTransactionAmountBuy;
    uint256 public  maxTransactionAmountSell;

    event ExcludedFromMaxTransactionLimit(address indexed account, bool isExcluded);
    event MaxTransactionLimitStateChanged(bool maxTransactionLimit);
    event MaxTransactionLimitAmountChanged(uint256 maxTransactionAmountBuy, uint256 maxTransactionAmountSell);

    function setEnableMaxTransactionLimit(bool enable) external onlyOwner {
        require(enable != maxTransactionLimitEnabled, "Max transaction limit is already set to that state");
        maxTransactionLimitEnabled = enable;

        emit MaxTransactionLimitStateChanged(maxTransactionLimitEnabled);
    }

    function setMaxTransactionAmounts(uint256 _maxTransactionAmountBuy, uint256 _maxTransactionAmountSell) external onlyOwner {
        require(
            _maxTransactionAmountBuy  >= (totalSupply() / (10 ** decimals())) / 1_000 && 
            _maxTransactionAmountSell >= (totalSupply() / (10 ** decimals())) / 1_000, 
            "Max Transaction limis cannot be lower than 0.1% of total supply"
        ); 
        maxTransactionAmountBuy  = _maxTransactionAmountBuy  * (10 ** decimals());
        maxTransactionAmountSell = _maxTransactionAmountSell * (10 ** decimals());

        emit MaxTransactionLimitAmountChanged(maxTransactionAmountBuy, maxTransactionAmountSell);
    }

    function excludeFromMaxTransactionLimit(address account, bool exclude) external onlyOwner {
        require( _isExcludedFromMaxTxLimit[account] != exclude, "Account is already set to that state");
        require(account != address(this), "Can't set this address.");

        _isExcludedFromMaxTxLimit[account] = exclude;

        emit ExcludedFromMaxTransactionLimit(account, exclude);
    }

    function isExcludedFromMaxTransaction(address account) public view returns(bool) {
        return _isExcludedFromMaxTxLimit[account];
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludeFromFees","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"isExcluded","type":"bool"}],"name":"ExcludedFromMaxTransactionLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"feeReceiver","type":"address"}],"name":"FeeReceiverChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"maxTransactionAmountSell","type":"uint256"}],"name":"MaxTransactionLimitAmountChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"maxTransactionLimit","type":"bool"}],"name":"MaxTransactionLimitStateChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"tradingEnabled","type":"bool"}],"name":"TradingEnabled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"feeOnBuy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"feeOnSell","type":"uint256"}],"name":"UpdateFees","type":"event"},{"inputs":[{"internalType":"address","name":"owner","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":[{"internalType":"address","name":"_feeReceiver","type":"address"}],"name":"changeFeeReceiver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapAddress","type":"address"}],"name":"changeUniswapPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"claimStuckTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapAddress","type":"address"}],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"excludeFromMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeOnBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeOnTransfer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromMaxTransaction","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTransactionLimitEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enable","type":"bool"}],"name":"setEnableMaxTransactionLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTransactionAmountBuy","type":"uint256"},{"internalType":"uint256","name":"_maxTransactionAmountSell","type":"uint256"}],"name":"setMaxTransactionAmounts","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_feeOnSell","type":"uint256"},{"internalType":"uint256","name":"_feeOnBuy","type":"uint256"},{"internalType":"uint256","name":"_feeOnTransfer","type":"uint256"}],"name":"updateFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040518060400160405280600581526020017f4150504c450000000000000000000000000000000000000000000000000000008152506040518060400160405280600581526020017f4150504c4500000000000000000000000000000000000000000000000000000081525081600390816200008f919062000953565b508060049081620000a1919062000953565b5050506000620000b66200054460201b60201c565b905080600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060006007819055506000600881905550600060098190555073d1dba145ac6604d242ee327dbff965bcad75b0fe600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160066000620001d86200054c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016006600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600d60006101000a81548160ff0219169083151502179055506001600c60006200030c6200054c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004d86200049d6200054c60201b60201c565b620004ad6200057660201b60201c565b600a620004bb919062000bca565b633b9aca00620004cc919062000c1b565b6200057f60201b60201c565b6103e8600a620004ed620006cf60201b60201c565b620004f9919062000c1b565b62000505919062000c95565b600e819055506103e8600a62000520620006cf60201b60201c565b6200052c919062000c1b565b62000538919062000c95565b600f8190555062000db9565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005f1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005e89062000d2e565b60405180910390fd5b806002600082825462000605919062000d50565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546200065c919062000d50565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006c3919062000d9c565b60405180910390a35050565b6000600254905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200075b57607f821691505b60208210810362000771576200077062000713565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620007db7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200079c565b620007e786836200079c565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620008346200082e6200082884620007ff565b62000809565b620007ff565b9050919050565b6000819050919050565b620008508362000813565b620008686200085f826200083b565b848454620007a9565b825550505050565b600090565b6200087f62000870565b6200088c81848462000845565b505050565b5b81811015620008b457620008a860008262000875565b60018101905062000892565b5050565b601f8211156200090357620008cd8162000777565b620008d8846200078c565b81016020851015620008e8578190505b62000900620008f7856200078c565b83018262000891565b50505b505050565b600082821c905092915050565b6000620009286000198460080262000908565b1980831691505092915050565b600062000943838362000915565b9150826002028217905092915050565b6200095e82620006d9565b67ffffffffffffffff8111156200097a5762000979620006e4565b5b62000986825462000742565b62000993828285620008b8565b600060209050601f831160018114620009cb5760008415620009b6578287015190505b620009c2858262000935565b86555062000a32565b601f198416620009db8662000777565b60005b8281101562000a0557848901518255600182019150602085019450602081019050620009de565b8683101562000a25578489015162000a21601f89168262000915565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000ac85780860481111562000aa05762000a9f62000a3a565b5b600185161562000ab05780820291505b808102905062000ac08562000a69565b945062000a80565b94509492505050565b60008262000ae3576001905062000bb6565b8162000af3576000905062000bb6565b816001811462000b0c576002811462000b175762000b4d565b600191505062000bb6565b60ff84111562000b2c5762000b2b62000a3a565b5b8360020a91508482111562000b465762000b4562000a3a565b5b5062000bb6565b5060208310610133831016604e8410600b841016171562000b875782820a90508381111562000b815762000b8062000a3a565b5b62000bb6565b62000b96848484600162000a76565b9250905081840481111562000bb05762000baf62000a3a565b5b81810290505b9392505050565b600060ff82169050919050565b600062000bd782620007ff565b915062000be48362000bbd565b925062000c137fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000ad1565b905092915050565b600062000c2882620007ff565b915062000c3583620007ff565b925082820262000c4581620007ff565b9150828204841483151762000c5f5762000c5e62000a3a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000ca282620007ff565b915062000caf83620007ff565b92508262000cc25762000cc162000c66565b5b828204905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000d16601f8362000ccd565b915062000d238262000cde565b602082019050919050565b6000602082019050818103600083015262000d498162000d07565b9050919050565b600062000d5d82620007ff565b915062000d6a83620007ff565b925082820190508082111562000d855762000d8462000a3a565b5b92915050565b62000d9681620007ff565b82525050565b600060208201905062000db3600083018462000d8b565b92915050565b61401a8062000dc96000396000f3fe6080604052600436106101fd5760003560e01c806365048d081161010d578063a457c2d7116100a0578063bb8c3ee01161006f578063bb8c3ee014610756578063c024666814610781578063dd62ed3e146107aa578063f2fde38b146107e7578063f9d0831a1461081057610204565b8063a457c2d714610688578063a9059cbb146106c5578063b3f0067414610702578063b6f7f6811461072d57610204565b80637c08b964116100dc5780637c08b964146105e0578063880bcbc1146106095780638da5cb5b1461063257806395d89b411461065d57610204565b806365048d081461053857806370a0823114610563578063715018a6146105a057806378fe1b13146105b757610204565b806323b872dd1161019057806349bd5a5e1161015f57806349bd5a5e146104515780634ada218b1461047c5780634fbee193146104a757806356a6cabf146104e457806359136fa51461050d57610204565b806323b872dd146103815780632ba86bf2146103be578063313ce567146103e9578063395093511461041457610204565b80630fa1eeab116101cc5780630fa1eeab146102c557806318160ddd146102f057806318d9ceae1461031b578063224290851461035857610204565b80630105d0fd1461020957806306fdde031461023457806307980cb91461025f578063095ea7b31461028857610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e610839565b60405161022b9190612bc4565b60405180910390f35b34801561024057600080fd5b5061024961083f565b6040516102569190612c6f565b60405180910390f35b34801561026b57600080fd5b5061028660048036038101906102819190612cf4565b6108d1565b005b34801561029457600080fd5b506102af60048036038101906102aa9190612d4d565b610a5d565b6040516102bc9190612da8565b60405180910390f35b3480156102d157600080fd5b506102da610a7b565b6040516102e79190612bc4565b60405180910390f35b3480156102fc57600080fd5b50610305610a81565b6040516103129190612bc4565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190612cf4565b610a8b565b60405161034f9190612da8565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a9190612dc3565b610ae1565b005b34801561038d57600080fd5b506103a860048036038101906103a39190612e16565b610ca1565b6040516103b59190612da8565b60405180910390f35b3480156103ca57600080fd5b506103d3610dc0565b6040516103e09190612da8565b60405180910390f35b3480156103f557600080fd5b506103fe610dd3565b60405161040b9190612e85565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190612d4d565b610ddc565b6040516104489190612da8565b60405180910390f35b34801561045d57600080fd5b50610466610e88565b6040516104739190612eaf565b60405180910390f35b34801561048857600080fd5b50610491610eae565b60405161049e9190612da8565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190612cf4565b610ec1565b6040516104db9190612da8565b60405180910390f35b3480156104f057600080fd5b5061050b60048036038101906105069190612ef6565b610f17565b005b34801561051957600080fd5b50610522611066565b60405161052f9190612bc4565b60405180910390f35b34801561054457600080fd5b5061054d61106c565b60405161055a9190612bc4565b60405180910390f35b34801561056f57600080fd5b5061058a60048036038101906105859190612cf4565b611072565b6040516105979190612bc4565b60405180910390f35b3480156105ac57600080fd5b506105b56110ba565b005b3480156105c357600080fd5b506105de60048036038101906105d99190612cf4565b611212565b005b3480156105ec57600080fd5b5061060760048036038101906106029190612cf4565b6112ed565b005b34801561061557600080fd5b50610630600480360381019061062b9190612f23565b611490565b005b34801561063e57600080fd5b506106476116d0565b6040516106549190612eaf565b60405180910390f35b34801561066957600080fd5b506106726116fa565b60405161067f9190612c6f565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190612d4d565b61178c565b6040516106bc9190612da8565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e79190612d4d565b611877565b6040516106f99190612da8565b60405180910390f35b34801561070e57600080fd5b50610717611895565b6040516107249190612eaf565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f9190612f63565b6118bb565b005b34801561076257600080fd5b5061076b611a90565b6040516107789190612bc4565b60405180910390f35b34801561078d57600080fd5b506107a860048036038101906107a39190612f23565b611a96565b005b3480156107b657600080fd5b506107d160048036038101906107cc9190612fa3565b611bd6565b6040516107de9190612bc4565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190612cf4565b611c5d565b005b34801561081c57600080fd5b5061083760048036038101906108329190612cf4565b611e23565b005b600e5481565b60606003805461084e90613012565b80601f016020809104026020016040519081016040528092919081815260200182805461087a90613012565b80156108c75780601f1061089c576101008083540402835291602001916108c7565b820191906000526020600020905b8154815290600101906020018083116108aa57829003601f168201915b5050505050905090565b6108d9612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095f9061308f565b60405180910390fd5b600b60149054906101000a900460ff16156109b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109af906130fb565b60405180910390fd5b6001600b60146101000a81548160ff02191690831515021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a600b60149054906101000a900460ff16604051610a529190612da8565b60405180910390a150565b6000610a71610a6a612087565b848461208f565b6001905092915050565b60095481565b6000600254905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ae9612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f9061308f565b60405180910390fd5b81600781905550826008819055508060098190555060646007541115610bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bca9061318d565b60405180910390fd5b60646008541115610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c109061318d565b60405180910390fd5b60646009541115610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c569061318d565b60405180910390fd5b7f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04600854600754604051610c949291906131ad565b60405180910390a1505050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ced612087565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da95782811015610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90613248565b60405180910390fd5b610da885610da0612087565b85840361208f565b5b610db4858585612258565b60019150509392505050565b600d60009054906101000a900460ff1681565b60006012905090565b6000610e7e610de9612087565b848460016000610df7612087565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e799190613297565b61208f565b6001905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60149054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f1f612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa59061308f565b60405180910390fd5b600d60009054906101000a900460ff16151581151503611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffa9061333d565b60405180910390fd5b80600d60006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf600d60009054906101000a900460ff1660405161105b9190612da8565b60405180910390a150565b600f5481565b60085481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110c2612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611151576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111489061308f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61121a612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a09061308f565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112f5612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b9061308f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea906133cf565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516114859190612eaf565b60405180910390a150565b611498612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e9061308f565b60405180910390fd5b801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b090613461565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e906134cd565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c10826040516116c49190612da8565b60405180910390a25050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461170990613012565b80601f016020809104026020016040519081016040528092919081815260200182805461173590613012565b80156117825780601f1061175757610100808354040283529160200191611782565b820191906000526020600020905b81548152906001019060200180831161176557829003601f168201915b5050505050905090565b6000806001600061179b612087565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f9061355f565b60405180910390fd5b61186c611863612087565b8585840361208f565b600191505092915050565b600061188b611884612087565b8484612258565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118c3612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611952576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119499061308f565b60405180910390fd5b6103e861195d610dd3565b600a61196991906136b2565b611971610a81565b61197b919061372c565b611985919061372c565b82101580156119c657506103e861199a610dd3565b600a6119a691906136b2565b6119ae610a81565b6119b8919061372c565b6119c2919061372c565b8110155b611a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fc906137cf565b60405180910390fd5b611a0d610dd3565b600a611a1991906136b2565b82611a2491906137ef565b600e81905550611a32610dd3565b600a611a3e91906136b2565b81611a4991906137ef565b600f819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131600e54600f54604051611a849291906131ad565b60405180910390a15050565b60075481565b611a9e612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b249061308f565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611bca9190612da8565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c65612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ceb9061308f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5a906138a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e2b612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb19061308f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90613935565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f8b57611f85473373ffffffffffffffffffffffffffffffffffffffff1661288790919063ffffffff16565b50612084565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611fe19190612eaf565b602060405180830381865afa158015611ffe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612022919061396a565b6040518363ffffffff1660e01b815260040161203f929190613997565b6020604051808303816000875af115801561205e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208291906139d5565b505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590613a74565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361216d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216490613b06565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161224b9190612bc4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122be90613b98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232d90613c2a565b60405180910390fd5b600b60149054906101000a900460ff168061239a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123ee5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61242d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242490613c96565b60405180910390fd5b600081036124465761244183836000612942565b612882565b600d60009054906101000a900460ff161561269c57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806125045750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b801561255a5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125b05750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561269b57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361265457600e5481111561264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613d28565b60405180910390fd5b61269a565b600f54811115612699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269090613d28565b60405180910390fd5b5b5b5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061273f5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561274d5760009050612813565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127ac576007549050612812565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361280b576008549050612811565b60095490505b5b5b60008111156128755760006064828461282c91906137ef565b612836919061372c565b905080836128449190613d48565b925061287385600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612942565b505b612880848484612942565b505b505050565b6000814710156128cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c390613dc8565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516128f290613e19565b60006040518083038185875af1925050503d806000811461292f576040519150601f19603f3d011682016040523d82523d6000602084013e612934565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a890613ea0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1790613f32565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9d90613fc4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b399190613297565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b9d9190612bc4565b60405180910390a350505050565b6000819050919050565b612bbe81612bab565b82525050565b6000602082019050612bd96000830184612bb5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c19578082015181840152602081019050612bfe565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c4182612bdf565b612c4b8185612bea565b9350612c5b818560208601612bfb565b612c6481612c25565b840191505092915050565b60006020820190508181036000830152612c898184612c36565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cc182612c96565b9050919050565b612cd181612cb6565b8114612cdc57600080fd5b50565b600081359050612cee81612cc8565b92915050565b600060208284031215612d0a57612d09612c91565b5b6000612d1884828501612cdf565b91505092915050565b612d2a81612bab565b8114612d3557600080fd5b50565b600081359050612d4781612d21565b92915050565b60008060408385031215612d6457612d63612c91565b5b6000612d7285828601612cdf565b9250506020612d8385828601612d38565b9150509250929050565b60008115159050919050565b612da281612d8d565b82525050565b6000602082019050612dbd6000830184612d99565b92915050565b600080600060608486031215612ddc57612ddb612c91565b5b6000612dea86828701612d38565b9350506020612dfb86828701612d38565b9250506040612e0c86828701612d38565b9150509250925092565b600080600060608486031215612e2f57612e2e612c91565b5b6000612e3d86828701612cdf565b9350506020612e4e86828701612cdf565b9250506040612e5f86828701612d38565b9150509250925092565b600060ff82169050919050565b612e7f81612e69565b82525050565b6000602082019050612e9a6000830184612e76565b92915050565b612ea981612cb6565b82525050565b6000602082019050612ec46000830184612ea0565b92915050565b612ed381612d8d565b8114612ede57600080fd5b50565b600081359050612ef081612eca565b92915050565b600060208284031215612f0c57612f0b612c91565b5b6000612f1a84828501612ee1565b91505092915050565b60008060408385031215612f3a57612f39612c91565b5b6000612f4885828601612cdf565b9250506020612f5985828601612ee1565b9150509250929050565b60008060408385031215612f7a57612f79612c91565b5b6000612f8885828601612d38565b9250506020612f9985828601612d38565b9150509250929050565b60008060408385031215612fba57612fb9612c91565b5b6000612fc885828601612cdf565b9250506020612fd985828601612cdf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061302a57607f821691505b60208210810361303d5761303c612fe3565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613079602083612bea565b915061308482613043565b602082019050919050565b600060208201905081810360008301526130a88161306c565b9050919050565b7f43534c543a2054726164696e6720616c726561647920656e61626c65642e0000600082015250565b60006130e5601e83612bea565b91506130f0826130af565b602082019050919050565b60006020820190508181036000830152613114816130d8565b9050919050565b7f43534c543a20546f74616c20466565732063616e6e6f7420657863656564207460008201527f6865206d6178696d756d00000000000000000000000000000000000000000000602082015250565b6000613177602a83612bea565b91506131828261311b565b604082019050919050565b600060208201905081810360008301526131a68161316a565b9050919050565b60006040820190506131c26000830185612bb5565b6131cf6020830184612bb5565b9392505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613232602883612bea565b915061323d826131d6565b604082019050919050565b6000602082019050818103600083015261326181613225565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132a282612bab565b91506132ad83612bab565b92508282019050808211156132c5576132c4613268565b5b92915050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b6000613327603283612bea565b9150613332826132cb565b604082019050919050565b600060208201905081810360008301526133568161331a565b9050919050565b7f43534c543a204665652072656365697665722063616e6e6f742062652074686560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b60006133b9602d83612bea565b91506133c48261335d565b604082019050919050565b600060208201905081810360008301526133e8816133ac565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b600061344b602483612bea565b9150613456826133ef565b604082019050919050565b6000602082019050818103600083015261347a8161343e565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b60006134b7601783612bea565b91506134c282613481565b602082019050919050565b600060208201905081810360008301526134e6816134aa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613549602583612bea565b9150613554826134ed565b604082019050919050565b600060208201905081810360008301526135788161353c565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156135d6578086048111156135b2576135b1613268565b5b60018516156135c15780820291505b80810290506135cf8561357f565b9450613596565b94509492505050565b6000826135ef57600190506136ab565b816135fd57600090506136ab565b8160018114613613576002811461361d5761364c565b60019150506136ab565b60ff84111561362f5761362e613268565b5b8360020a91508482111561364657613645613268565b5b506136ab565b5060208310610133831016604e8410600b84101617156136815782820a90508381111561367c5761367b613268565b5b6136ab565b61368e848484600161358c565b925090508184048111156136a5576136a4613268565b5b81810290505b9392505050565b60006136bd82612bab565b91506136c883612e69565b92506136f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135df565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061373782612bab565b915061374283612bab565b925082613752576137516136fd565b5b828204905092915050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b60006137b9603f83612bea565b91506137c48261375d565b604082019050919050565b600060208201905081810360008301526137e8816137ac565b9050919050565b60006137fa82612bab565b915061380583612bab565b925082820261381381612bab565b9150828204841483151761382a57613829613268565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061388d602683612bea565b915061389882613831565b604082019050919050565b600060208201905081810360008301526138bc81613880565b9050919050565b7f43534c543a204f776e65722063616e6e6f7420636c61696d20636f6e7472616360008201527f7427732062616c616e6365206f6620697473206f776e20746f6b656e73000000602082015250565b600061391f603d83612bea565b915061392a826138c3565b604082019050919050565b6000602082019050818103600083015261394e81613912565b9050919050565b60008151905061396481612d21565b92915050565b6000602082840312156139805761397f612c91565b5b600061398e84828501613955565b91505092915050565b60006040820190506139ac6000830185612ea0565b6139b96020830184612bb5565b9392505050565b6000815190506139cf81612eca565b92915050565b6000602082840312156139eb576139ea612c91565b5b60006139f9848285016139c0565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a5e602483612bea565b9150613a6982613a02565b604082019050919050565b60006020820190508181036000830152613a8d81613a51565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613af0602283612bea565b9150613afb82613a94565b604082019050919050565b60006020820190508181036000830152613b1f81613ae3565b9050919050565b7f43534c543a207472616e736665722066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b82602483612bea565b9150613b8d82613b26565b604082019050919050565b60006020820190508181036000830152613bb181613b75565b9050919050565b7f43534c543a207472616e7366657220746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c14602283612bea565b9150613c1f82613bb8565b604082019050919050565b60006020820190508181036000830152613c4381613c07565b9050919050565b7f43534c543a2054726164696e67206e6f742079657420656e61626c6564210000600082015250565b6000613c80601e83612bea565b9150613c8b82613c4a565b602082019050919050565b60006020820190508181036000830152613caf81613c73565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b6000613d12603b83612bea565b9150613d1d82613cb6565b604082019050919050565b60006020820190508181036000830152613d4181613d05565b9050919050565b6000613d5382612bab565b9150613d5e83612bab565b9250828203905081811115613d7657613d75613268565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613db2601d83612bea565b9150613dbd82613d7c565b602082019050919050565b60006020820190508181036000830152613de181613da5565b9050919050565b600081905092915050565b50565b6000613e03600083613de8565b9150613e0e82613df3565b600082019050919050565b6000613e2482613df6565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e8a602583612bea565b9150613e9582613e2e565b604082019050919050565b60006020820190508181036000830152613eb981613e7d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f1c602383612bea565b9150613f2782613ec0565b604082019050919050565b60006020820190508181036000830152613f4b81613f0f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613fae602683612bea565b9150613fb982613f52565b604082019050919050565b60006020820190508181036000830152613fdd81613fa1565b905091905056fea26469706673582212202721e14f2744aef373ab10536cb350a53c2e4b3ffab71e171203ed9306edf41a64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101fd5760003560e01c806365048d081161010d578063a457c2d7116100a0578063bb8c3ee01161006f578063bb8c3ee014610756578063c024666814610781578063dd62ed3e146107aa578063f2fde38b146107e7578063f9d0831a1461081057610204565b8063a457c2d714610688578063a9059cbb146106c5578063b3f0067414610702578063b6f7f6811461072d57610204565b80637c08b964116100dc5780637c08b964146105e0578063880bcbc1146106095780638da5cb5b1461063257806395d89b411461065d57610204565b806365048d081461053857806370a0823114610563578063715018a6146105a057806378fe1b13146105b757610204565b806323b872dd1161019057806349bd5a5e1161015f57806349bd5a5e146104515780634ada218b1461047c5780634fbee193146104a757806356a6cabf146104e457806359136fa51461050d57610204565b806323b872dd146103815780632ba86bf2146103be578063313ce567146103e9578063395093511461041457610204565b80630fa1eeab116101cc5780630fa1eeab146102c557806318160ddd146102f057806318d9ceae1461031b578063224290851461035857610204565b80630105d0fd1461020957806306fdde031461023457806307980cb91461025f578063095ea7b31461028857610204565b3661020457005b600080fd5b34801561021557600080fd5b5061021e610839565b60405161022b9190612bc4565b60405180910390f35b34801561024057600080fd5b5061024961083f565b6040516102569190612c6f565b60405180910390f35b34801561026b57600080fd5b5061028660048036038101906102819190612cf4565b6108d1565b005b34801561029457600080fd5b506102af60048036038101906102aa9190612d4d565b610a5d565b6040516102bc9190612da8565b60405180910390f35b3480156102d157600080fd5b506102da610a7b565b6040516102e79190612bc4565b60405180910390f35b3480156102fc57600080fd5b50610305610a81565b6040516103129190612bc4565b60405180910390f35b34801561032757600080fd5b50610342600480360381019061033d9190612cf4565b610a8b565b60405161034f9190612da8565b60405180910390f35b34801561036457600080fd5b5061037f600480360381019061037a9190612dc3565b610ae1565b005b34801561038d57600080fd5b506103a860048036038101906103a39190612e16565b610ca1565b6040516103b59190612da8565b60405180910390f35b3480156103ca57600080fd5b506103d3610dc0565b6040516103e09190612da8565b60405180910390f35b3480156103f557600080fd5b506103fe610dd3565b60405161040b9190612e85565b60405180910390f35b34801561042057600080fd5b5061043b60048036038101906104369190612d4d565b610ddc565b6040516104489190612da8565b60405180910390f35b34801561045d57600080fd5b50610466610e88565b6040516104739190612eaf565b60405180910390f35b34801561048857600080fd5b50610491610eae565b60405161049e9190612da8565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190612cf4565b610ec1565b6040516104db9190612da8565b60405180910390f35b3480156104f057600080fd5b5061050b60048036038101906105069190612ef6565b610f17565b005b34801561051957600080fd5b50610522611066565b60405161052f9190612bc4565b60405180910390f35b34801561054457600080fd5b5061054d61106c565b60405161055a9190612bc4565b60405180910390f35b34801561056f57600080fd5b5061058a60048036038101906105859190612cf4565b611072565b6040516105979190612bc4565b60405180910390f35b3480156105ac57600080fd5b506105b56110ba565b005b3480156105c357600080fd5b506105de60048036038101906105d99190612cf4565b611212565b005b3480156105ec57600080fd5b5061060760048036038101906106029190612cf4565b6112ed565b005b34801561061557600080fd5b50610630600480360381019061062b9190612f23565b611490565b005b34801561063e57600080fd5b506106476116d0565b6040516106549190612eaf565b60405180910390f35b34801561066957600080fd5b506106726116fa565b60405161067f9190612c6f565b60405180910390f35b34801561069457600080fd5b506106af60048036038101906106aa9190612d4d565b61178c565b6040516106bc9190612da8565b60405180910390f35b3480156106d157600080fd5b506106ec60048036038101906106e79190612d4d565b611877565b6040516106f99190612da8565b60405180910390f35b34801561070e57600080fd5b50610717611895565b6040516107249190612eaf565b60405180910390f35b34801561073957600080fd5b50610754600480360381019061074f9190612f63565b6118bb565b005b34801561076257600080fd5b5061076b611a90565b6040516107789190612bc4565b60405180910390f35b34801561078d57600080fd5b506107a860048036038101906107a39190612f23565b611a96565b005b3480156107b657600080fd5b506107d160048036038101906107cc9190612fa3565b611bd6565b6040516107de9190612bc4565b60405180910390f35b3480156107f357600080fd5b5061080e60048036038101906108099190612cf4565b611c5d565b005b34801561081c57600080fd5b5061083760048036038101906108329190612cf4565b611e23565b005b600e5481565b60606003805461084e90613012565b80601f016020809104026020016040519081016040528092919081815260200182805461087a90613012565b80156108c75780601f1061089c576101008083540402835291602001916108c7565b820191906000526020600020905b8154815290600101906020018083116108aa57829003601f168201915b5050505050905090565b6108d9612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610968576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095f9061308f565b60405180910390fd5b600b60149054906101000a900460ff16156109b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109af906130fb565b60405180910390fd5b6001600b60146101000a81548160ff02191690831515021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fbeda7dca7bc1b3e80b871f4818129ec73b771581f803d553aeb3484098e5f65a600b60149054906101000a900460ff16604051610a529190612da8565b60405180910390a150565b6000610a71610a6a612087565b848461208f565b6001905092915050565b60095481565b6000600254905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610ae9612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6f9061308f565b60405180910390fd5b81600781905550826008819055508060098190555060646007541115610bd3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bca9061318d565b60405180910390fd5b60646008541115610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c109061318d565b60405180910390fd5b60646009541115610c5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c569061318d565b60405180910390fd5b7f53482196ef67ac615caab1c3eca2c270acbfdcd75e57c5f24c1b98b10c8e6e04600854600754604051610c949291906131ad565b60405180910390a1505050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610ced612087565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610da95782811015610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b90613248565b60405180910390fd5b610da885610da0612087565b85840361208f565b5b610db4858585612258565b60019150509392505050565b600d60009054906101000a900460ff1681565b60006012905090565b6000610e7e610de9612087565b848460016000610df7612087565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610e799190613297565b61208f565b6001905092915050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600b60149054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610f1f612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610fae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fa59061308f565b60405180910390fd5b600d60009054906101000a900460ff16151581151503611003576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ffa9061333d565b60405180910390fd5b80600d60006101000a81548160ff0219169083151502179055507fe81be35e61864c26afd7a4655e99f321378d0aaae1e5af8ee67b658a7460f3cf600d60009054906101000a900460ff1660405161105b9190612da8565b60405180910390a150565b600f5481565b60085481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6110c2612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611151576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111489061308f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61121a612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a09061308f565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6112f5612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611384576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137b9061308f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ea906133cf565b60405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f647672599d3468abcfa241a13c9e3d34383caadb5cc80fb67c3cdfcd5f786059600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040516114859190612eaf565b60405180910390a150565b611498612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161151e9061308f565b60405180910390fd5b801515600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515036115b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b090613461565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611627576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161e906134cd565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f8727c4afe988887760e8db0bbad9f9fcceee6428545956832f67c8fdbd589c10826040516116c49190612da8565b60405180910390a25050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461170990613012565b80601f016020809104026020016040519081016040528092919081815260200182805461173590613012565b80156117825780601f1061175757610100808354040283529160200191611782565b820191906000526020600020905b81548152906001019060200180831161176557829003601f168201915b5050505050905090565b6000806001600061179b612087565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611858576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184f9061355f565b60405180910390fd5b61186c611863612087565b8585840361208f565b600191505092915050565b600061188b611884612087565b8484612258565b6001905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6118c3612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611952576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119499061308f565b60405180910390fd5b6103e861195d610dd3565b600a61196991906136b2565b611971610a81565b61197b919061372c565b611985919061372c565b82101580156119c657506103e861199a610dd3565b600a6119a691906136b2565b6119ae610a81565b6119b8919061372c565b6119c2919061372c565b8110155b611a05576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fc906137cf565b60405180910390fd5b611a0d610dd3565b600a611a1991906136b2565b82611a2491906137ef565b600e81905550611a32610dd3565b600a611a3e91906136b2565b81611a4991906137ef565b600f819055507f8c8cbc911b80df94332ececb8eb0945274d76fa965600a0f01f42af3f8afb131600e54600f54604051611a849291906131ad565b60405180910390a15050565b60075481565b611a9e612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b249061308f565b60405180910390fd5b80600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df782604051611bca9190612da8565b60405180910390a25050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611c65612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ceb9061308f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5a906138a3565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b611e2b612087565b73ffffffffffffffffffffffffffffffffffffffff16600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611eba576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb19061308f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1f90613935565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611f8b57611f85473373ffffffffffffffffffffffffffffffffffffffff1661288790919063ffffffff16565b50612084565b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb338373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611fe19190612eaf565b602060405180830381865afa158015611ffe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612022919061396a565b6040518363ffffffff1660e01b815260040161203f929190613997565b6020604051808303816000875af115801561205e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061208291906139d5565b505b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f590613a74565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361216d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216490613b06565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161224b9190612bc4565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122be90613b98565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612336576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232d90613c2a565b60405180910390fd5b600b60149054906101000a900460ff168061239a5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123ee5750600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61242d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242490613c96565b60405180910390fd5b600081036124465761244183836000612942565b612882565b600d60009054906101000a900460ff161561269c57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806125045750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b801561255a5750600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156125b05750600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561269b57600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361265457600e5481111561264f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264690613d28565b60405180910390fd5b61269a565b600f54811115612699576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269090613d28565b60405180910390fd5b5b5b5b6000600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061273f5750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561274d5760009050612813565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036127ac576007549050612812565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361280b576008549050612811565b60095490505b5b5b60008111156128755760006064828461282c91906137ef565b612836919061372c565b905080836128449190613d48565b925061287385600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683612942565b505b612880848484612942565b505b505050565b6000814710156128cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128c390613dc8565b60405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff16836040516128f290613e19565b60006040518083038185875af1925050503d806000811461292f576040519150601f19603f3d011682016040523d82523d6000602084013e612934565b606091505b505090508091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129a890613ea0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a1790613f32565b60405180910390fd5b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612aa6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a9d90613fc4565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b399190613297565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b9d9190612bc4565b60405180910390a350505050565b6000819050919050565b612bbe81612bab565b82525050565b6000602082019050612bd96000830184612bb5565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612c19578082015181840152602081019050612bfe565b60008484015250505050565b6000601f19601f8301169050919050565b6000612c4182612bdf565b612c4b8185612bea565b9350612c5b818560208601612bfb565b612c6481612c25565b840191505092915050565b60006020820190508181036000830152612c898184612c36565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612cc182612c96565b9050919050565b612cd181612cb6565b8114612cdc57600080fd5b50565b600081359050612cee81612cc8565b92915050565b600060208284031215612d0a57612d09612c91565b5b6000612d1884828501612cdf565b91505092915050565b612d2a81612bab565b8114612d3557600080fd5b50565b600081359050612d4781612d21565b92915050565b60008060408385031215612d6457612d63612c91565b5b6000612d7285828601612cdf565b9250506020612d8385828601612d38565b9150509250929050565b60008115159050919050565b612da281612d8d565b82525050565b6000602082019050612dbd6000830184612d99565b92915050565b600080600060608486031215612ddc57612ddb612c91565b5b6000612dea86828701612d38565b9350506020612dfb86828701612d38565b9250506040612e0c86828701612d38565b9150509250925092565b600080600060608486031215612e2f57612e2e612c91565b5b6000612e3d86828701612cdf565b9350506020612e4e86828701612cdf565b9250506040612e5f86828701612d38565b9150509250925092565b600060ff82169050919050565b612e7f81612e69565b82525050565b6000602082019050612e9a6000830184612e76565b92915050565b612ea981612cb6565b82525050565b6000602082019050612ec46000830184612ea0565b92915050565b612ed381612d8d565b8114612ede57600080fd5b50565b600081359050612ef081612eca565b92915050565b600060208284031215612f0c57612f0b612c91565b5b6000612f1a84828501612ee1565b91505092915050565b60008060408385031215612f3a57612f39612c91565b5b6000612f4885828601612cdf565b9250506020612f5985828601612ee1565b9150509250929050565b60008060408385031215612f7a57612f79612c91565b5b6000612f8885828601612d38565b9250506020612f9985828601612d38565b9150509250929050565b60008060408385031215612fba57612fb9612c91565b5b6000612fc885828601612cdf565b9250506020612fd985828601612cdf565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061302a57607f821691505b60208210810361303d5761303c612fe3565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613079602083612bea565b915061308482613043565b602082019050919050565b600060208201905081810360008301526130a88161306c565b9050919050565b7f43534c543a2054726164696e6720616c726561647920656e61626c65642e0000600082015250565b60006130e5601e83612bea565b91506130f0826130af565b602082019050919050565b60006020820190508181036000830152613114816130d8565b9050919050565b7f43534c543a20546f74616c20466565732063616e6e6f7420657863656564207460008201527f6865206d6178696d756d00000000000000000000000000000000000000000000602082015250565b6000613177602a83612bea565b91506131828261311b565b604082019050919050565b600060208201905081810360008301526131a68161316a565b9050919050565b60006040820190506131c26000830185612bb5565b6131cf6020830184612bb5565b9392505050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613232602883612bea565b915061323d826131d6565b604082019050919050565b6000602082019050818103600083015261326181613225565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006132a282612bab565b91506132ad83612bab565b92508282019050808211156132c5576132c4613268565b5b92915050565b7f4d6178207472616e73616374696f6e206c696d697420697320616c726561647960008201527f2073657420746f20746861742073746174650000000000000000000000000000602082015250565b6000613327603283612bea565b9150613332826132cb565b604082019050919050565b600060208201905081810360008301526133568161331a565b9050919050565b7f43534c543a204665652072656365697665722063616e6e6f742062652074686560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b60006133b9602d83612bea565b91506133c48261335d565b604082019050919050565b600060208201905081810360008301526133e8816133ac565b9050919050565b7f4163636f756e7420697320616c72656164792073657420746f2074686174207360008201527f7461746500000000000000000000000000000000000000000000000000000000602082015250565b600061344b602483612bea565b9150613456826133ef565b604082019050919050565b6000602082019050818103600083015261347a8161343e565b9050919050565b7f43616e277420736574207468697320616464726573732e000000000000000000600082015250565b60006134b7601783612bea565b91506134c282613481565b602082019050919050565b600060208201905081810360008301526134e6816134aa565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613549602583612bea565b9150613554826134ed565b604082019050919050565b600060208201905081810360008301526135788161353c565b9050919050565b60008160011c9050919050565b6000808291508390505b60018511156135d6578086048111156135b2576135b1613268565b5b60018516156135c15780820291505b80810290506135cf8561357f565b9450613596565b94509492505050565b6000826135ef57600190506136ab565b816135fd57600090506136ab565b8160018114613613576002811461361d5761364c565b60019150506136ab565b60ff84111561362f5761362e613268565b5b8360020a91508482111561364657613645613268565b5b506136ab565b5060208310610133831016604e8410600b84101617156136815782820a90508381111561367c5761367b613268565b5b6136ab565b61368e848484600161358c565b925090508184048111156136a5576136a4613268565b5b81810290505b9392505050565b60006136bd82612bab565b91506136c883612e69565b92506136f57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846135df565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061373782612bab565b915061374283612bab565b925082613752576137516136fd565b5b828204905092915050565b7f4d6178205472616e73616374696f6e206c696d69732063616e6e6f742062652060008201527f6c6f776572207468616e20302e3125206f6620746f74616c20737570706c7900602082015250565b60006137b9603f83612bea565b91506137c48261375d565b604082019050919050565b600060208201905081810360008301526137e8816137ac565b9050919050565b60006137fa82612bab565b915061380583612bab565b925082820261381381612bab565b9150828204841483151761382a57613829613268565b5b5092915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b600061388d602683612bea565b915061389882613831565b604082019050919050565b600060208201905081810360008301526138bc81613880565b9050919050565b7f43534c543a204f776e65722063616e6e6f7420636c61696d20636f6e7472616360008201527f7427732062616c616e6365206f6620697473206f776e20746f6b656e73000000602082015250565b600061391f603d83612bea565b915061392a826138c3565b604082019050919050565b6000602082019050818103600083015261394e81613912565b9050919050565b60008151905061396481612d21565b92915050565b6000602082840312156139805761397f612c91565b5b600061398e84828501613955565b91505092915050565b60006040820190506139ac6000830185612ea0565b6139b96020830184612bb5565b9392505050565b6000815190506139cf81612eca565b92915050565b6000602082840312156139eb576139ea612c91565b5b60006139f9848285016139c0565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a5e602483612bea565b9150613a6982613a02565b604082019050919050565b60006020820190508181036000830152613a8d81613a51565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613af0602283612bea565b9150613afb82613a94565b604082019050919050565b60006020820190508181036000830152613b1f81613ae3565b9050919050565b7f43534c543a207472616e736665722066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613b82602483612bea565b9150613b8d82613b26565b604082019050919050565b60006020820190508181036000830152613bb181613b75565b9050919050565b7f43534c543a207472616e7366657220746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613c14602283612bea565b9150613c1f82613bb8565b604082019050919050565b60006020820190508181036000830152613c4381613c07565b9050919050565b7f43534c543a2054726164696e67206e6f742079657420656e61626c6564210000600082015250565b6000613c80601e83612bea565b9150613c8b82613c4a565b602082019050919050565b60006020820190508181036000830152613caf81613c73565b9050919050565b7f416e74695768616c653a205472616e7366657220616d6f756e7420657863656560008201527f647320746865206d61785472616e73616374696f6e416d6f756e740000000000602082015250565b6000613d12603b83612bea565b9150613d1d82613cb6565b604082019050919050565b60006020820190508181036000830152613d4181613d05565b9050919050565b6000613d5382612bab565b9150613d5e83612bab565b9250828203905081811115613d7657613d75613268565b5b92915050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b6000613db2601d83612bea565b9150613dbd82613d7c565b602082019050919050565b60006020820190508181036000830152613de181613da5565b9050919050565b600081905092915050565b50565b6000613e03600083613de8565b9150613e0e82613df3565b600082019050919050565b6000613e2482613df6565b9150819050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613e8a602583612bea565b9150613e9582613e2e565b604082019050919050565b60006020820190508181036000830152613eb981613e7d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613f1c602383612bea565b9150613f2782613ec0565b604082019050919050565b60006020820190508181036000830152613f4b81613f0f565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613fae602683612bea565b9150613fb982613f52565b604082019050919050565b60006020820190508181036000830152613fdd81613fa1565b905091905056fea26469706673582212202721e14f2744aef373ab10536cb350a53c2e4b3ffab71e171203ed9306edf41a64736f6c63430008130033

Deployed ByteCode Sourcemap

7135:7295:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12498:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3046:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10128:265;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3960:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7344:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3367:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14286:141;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9198:515;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4137:573;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12449:42;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3266:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4718:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7418:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10093:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9003:125;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12863:311;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12544:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7310:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3483:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2235:148;;;;;;;;;;;;;:::i;:::-;;10401:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9775:256;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13879:399;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2021:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3154:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4941:413;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3618:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7382:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13182:689;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7279:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8810:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3801:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2391:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8395:407;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12498:39;;;;:::o;3046:100::-;3100:13;3133:5;3126:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3046:100;:::o;10128:265::-;2158:12;:10;:12::i;:::-;2148:22;;:6;;;;;;;;;;;:22;;;2140:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10214:14:::1;;;;;;;;;;;10213:15;10205:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10291:4;10274:14;;:21;;;;;;;;;;;;;;;;;;10322:15;10306:13;;:31;;;;;;;;;;;;;;;;;;10355:30;10370:14;;;;;;;;;;;10355:30;;;;;;:::i;:::-;;;;;;;;10128:265:::0;:::o;3960:169::-;4043:4;4060:39;4069:12;:10;:12::i;:::-;4083:7;4092:6;4060:8;:39::i;:::-;4117:4;4110:11;;3960:169;;;;:::o;7344:29::-;;;;:::o;3367:108::-;3428:7;3455:12;;3448:19;;3367:108;:::o;14286:141::-;14361:4;14385:25;:34;14411:7;14385:34;;;;;;;;;;;;;;;;;;;;;;;;;14378:41;;14286:141;;;:::o;9198:515::-;2158:12;:10;:12::i;:::-;2148:22;;:6;;;;;;;;;;;:22;;;2140:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9322:9:::1;9311:8;:20;;;;9354:10;9342:9;:22;;;;9391:14;9375:13;:30;;;;9438:3;9426:8;;:15;;9418:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9520:3;9507:9;;:16;;9499:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9606:3;9589:13;;:20;;9581:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9674:31;9685:9;;9696:8;;9674:31;;;;;;;:::i;:::-;;;;;;;;9198:515:::0;;;:::o;4137:573::-;4277:4;4294:24;4321:11;:19;4333:6;4321:19;;;;;;;;;;;;;;;:33;4341:12;:10;:12::i;:::-;4321:33;;;;;;;;;;;;;;;;4294:60;;4389:17;4369:16;:37;4365:265;;4451:6;4431:16;:26;;4423:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4546:57;4555:6;4563:12;:10;:12::i;:::-;4596:6;4577:16;:25;4546:8;:57::i;:::-;4365:265;4642:36;4652:6;4660:9;4671:6;4642:9;:36::i;:::-;4698:4;4691:11;;;4137:573;;;;;:::o;12449:42::-;;;;;;;;;;;;;:::o;3266:93::-;3324:5;3349:2;3342:9;;3266:93;:::o;4718:215::-;4806:4;4823:80;4832:12;:10;:12::i;:::-;4846:7;4892:10;4855:11;:25;4867:12;:10;:12::i;:::-;4855:25;;;;;;;;;;;;;;;:34;4881:7;4855:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4823:8;:80::i;:::-;4921:4;4914:11;;4718:215;;;;:::o;7418:29::-;;;;;;;;;;;;;:::o;10093:26::-;;;;;;;;;;;;;:::o;9003:125::-;9068:4;9092:19;:28;9112:7;9092:28;;;;;;;;;;;;;;;;;;;;;;;;;9085:35;;9003:125;;;:::o;12863:311::-;2158:12;:10;:12::i;:::-;2148:22;;:6;;;;;;;;;;;:22;;;2140:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12962:26:::1;;;;;;;;;;;12952:36;;:6;:36;;::::0;12944:99:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;13083:6;13054:26;;:35;;;;;;;;;;;;;;;;;;13107:59;13139:26;;;;;;;;;;;13107:59;;;;;;:::i;:::-;;;;;;;;12863:311:::0;:::o;12544:40::-;;;;:::o;7310:25::-;;;;:::o;3483:127::-;3557:7;3584:9;:18;3594:7;3584:18;;;;;;;;;;;;;;;;3577:25;;3483:127;;;:::o;2235:148::-;2158:12;:10;:12::i;:::-;2148:22;;:6;;;;;;;;;;;:22;;;2140:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2342:1:::1;2305:40;;2326:6;;;;;;;;;;;2305:40;;;;;;;;;;;;2373:1;2356:6;;:19;;;;;;;;;;;;;;;;;;2235:148::o:0;10401:120::-;2158:12;:10;:12::i;:::-;2148:22;;:6;;;;;;;;;;;:22;;;2140:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10498:15:::1;10482:13;;:31;;;;;;;;;;;;;;;;;;10401:120:::0;:::o;9775:256::-;2158:12;:10;:12::i;:::-;2148:22;;:6;;;;;;;;;;;:22;;;2140:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9885:1:::1;9861:26;;:12;:26;;::::0;9853:84:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;9962:12;9948:11;;:26;;;;;;;;;;;;;;;;;;9992:31;10011:11;;;;;;;;;;;9992:31;;;;;;:::i;:::-;;;;;;;;9775:256:::0;:::o;13879:399::-;2158:12;:10;:12::i;:::-;2148:22;;:6;;;;;;;;;;;:22;;;2140:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14027:7:::1;13989:45;;:25;:34;14015:7;13989:34;;;;;;;;;;;;;;;;;;;;;;;;;:45;;::::0;13980:95:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14113:4;14094:24;;:7;:24;;::::0;14086:60:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;14196:7;14159:25;:34;14185:7;14159:34;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;14253:7;14221:49;;;14262:7;14221:49;;;;;;:::i;:::-;;;;;;;;13879:399:::0;;:::o;2021:79::-;2059:7;2086:6;;;;;;;;;;;2079:13;;2021:79;:::o;3154:104::-;3210:13;3243:7;3236:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3154:104;:::o;4941:413::-;5034:4;5051:24;5078:11;:25;5090:12;:10;:12::i;:::-;5078:25;;;;;;;;;;;;;;;:34;5104:7;5078:34;;;;;;;;;;;;;;;;5051:61;;5151:15;5131:16;:35;;5123:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5244:67;5253:12;:10;:12::i;:::-;5267:7;5295:15;5276:16;:34;5244:8;:67::i;:::-;5342:4;5335:11;;;4941:413;;;;:::o;3618:175::-;3704:4;3721:42;3731:12;:10;:12::i;:::-;3745:9;3756:6;3721:9;:42::i;:::-;3781:4;3774:11;;3618:175;;;;:::o;7382:27::-;;;;;;;;;;;;;:::o;13182:689::-;2158:12;:10;:12::i;:::-;2148:22;;:6;;;;;;;;;;;:22;;;2140:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13405:5:::1;13390:10;:8;:10::i;:::-;13384:2;:16;;;;:::i;:::-;13367:13;:11;:13::i;:::-;:34;;;;:::i;:::-;13366:44;;;;:::i;:::-;13337:24;:73;;:164;;;;;13496:5;13481:10;:8;:10::i;:::-;13475:2;:16;;;;:::i;:::-;13458:13;:11;:13::i;:::-;:34;;;;:::i;:::-;13457:44;;;;:::i;:::-;13428:25;:73;;13337:164;13315:278;;;;;;;;;;;;:::i;:::-;;;;;;;;;13667:10;:8;:10::i;:::-;13661:2;:16;;;;:::i;:::-;13632:24;:46;;;;:::i;:::-;13605:23;:73;;;;13751:10;:8;:10::i;:::-;13745:2;:16;;;;:::i;:::-;13716:25;:46;;;;:::i;:::-;13689:24;:73;;;;13780:83;13813:23;;13838:24;;13780:83;;;;;;;:::i;:::-;;;;;;;;13182:689:::0;;:::o;7279:24::-;;;;:::o;8810:185::-;2158:12;:10;:12::i;:::-;2148:22;;:6;;;;;;;;;;;:22;;;2140:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8927:8:::1;8896:19;:28;8916:7;8896:28;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;8969:7;8953:34;;;8978:8;8953:34;;;;;;:::i;:::-;;;;;;;;8810:185:::0;;:::o;3801:151::-;3890:7;3917:11;:18;3929:5;3917:18;;;;;;;;;;;;;;;:27;3936:7;3917:27;;;;;;;;;;;;;;;;3910:34;;3801:151;;;;:::o;2391:244::-;2158:12;:10;:12::i;:::-;2148:22;;:6;;;;;;;;;;;:22;;;2140:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2500:1:::1;2480:22;;:8;:22;;::::0;2472:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2590:8;2561:38;;2582:6;;;;;;;;;;;2561:38;;;;;;;;;;;;2619:8;2610:6;;:17;;;;;;;;;;;;;;;;;;2391:244:::0;:::o;8395:407::-;2158:12;:10;:12::i;:::-;2148:22;;:6;;;;;;;;;;;:22;;;2140:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8491:4:::1;8474:22;;:5;:22;;::::0;8466:96:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;8594:3;8577:21;;:5;:21;;::::0;8573:127:::1;;8615:52;8645:21;8623:10;8615:29;;;;:52;;;;:::i;:::-;;8682:7;;8573:127;8727:5;8720:22;;;8743:10;8762:5;8755:23;;;8787:4;8755:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8720:74;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2218:1;8395:407:::0;:::o;1344:98::-;1397:7;1424:10;1417:17;;1344:98;:::o;6748:380::-;6901:1;6884:19;;:5;:19;;;6876:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6982:1;6963:21;;:7;:21;;;6955:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7066:6;7036:11;:18;7048:5;7036:18;;;;;;;;;;;;;;;:27;7055:7;7036:27;;;;;;;;;;;;;;;:36;;;;7104:7;7088:32;;7097:5;7088:32;;;7113:6;7088:32;;;;;;:::i;:::-;;;;;;;;6748:380;;;:::o;10529:1847::-;10642:1;10626:18;;:4;:18;;;10618:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10718:1;10704:16;;:2;:16;;;10696:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10778:14;;;;;;;;;;;:43;;;;10796:19;:25;10816:4;10796:25;;;;;;;;;;;;;;;;;;;;;;;;;10778:43;:70;;;;10825:19;:23;10845:2;10825:23;;;;;;;;;;;;;;;;;;;;;;;;;10778:70;10770:113;;;;;;;;;;;;:::i;:::-;;;;;;;;;10917:1;10907:6;:11;10903:93;;10935:28;10951:4;10957:2;10961:1;10935:15;:28::i;:::-;10978:7;;10903:93;11012:26;;;;;;;;;;;11008:752;;;11078:13;;;;;;;;;;;11070:21;;:4;:21;;;:44;;;;11101:13;;;;;;;;;;;11095:19;;:2;:19;;;11070:44;11069:99;;;;;11137:25;:31;11163:4;11137:31;;;;;;;;;;;;;;;;;;;;;;;;;11136:32;11069:99;:151;;;;;11191:25;:29;11217:2;11191:29;;;;;;;;;;;;;;;;;;;;;;;;;11190:30;11069:151;11065:684;;;11267:13;;;;;;;;;;;11259:21;;:4;:21;;;11255:479;;11349:23;;11339:6;:33;;11305:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;11255:479;;;11578:24;;11568:6;:34;;11534:180;;;;;;;;;;;;:::i;:::-;;;;;;;;;11255:479;11065:684;11008:752;11772:18;11805:19;:25;11825:4;11805:25;;;;;;;;;;;;;;;;;;;;;;;;;:52;;;;11834:19;:23;11854:2;11834:23;;;;;;;;;;;;;;;;;;;;;;;;;11805:52;11801:320;;;11887:1;11874:14;;11801:320;;;11918:13;;;;;;;;;;;11910:21;;:4;:21;;;11906:215;;11961:8;;11948:21;;11906:215;;;11997:13;;;;;;;;;;;11991:19;;:2;:19;;;11987:134;;12041:9;;12027:23;;11987:134;;;12096:13;;12083:26;;11987:134;11906:215;11801:320;12150:1;12137:10;:14;12133:190;;;12168:12;12207:3;12193:10;12184:6;:19;;;;:::i;:::-;12183:27;;;;:::i;:::-;12168:42;;12243:4;12234:6;:13;;;;:::i;:::-;12225:22;;12262:49;12278:4;12292:11;;;;;;;;;;;12306:4;12262:15;:49::i;:::-;12153:170;12133:190;12335:33;12351:4;12357:2;12361:6;12335:15;:33::i;:::-;10607:1769;10529:1847;;;;:::o;1019:285::-;1098:4;1147:6;1122:21;:31;;1114:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1201:12;1219:9;:14;;1241:6;1219:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1200:52;;;1270:7;1263:14;;;1019:285;;;;:::o;5362:614::-;5520:1;5502:20;;:6;:20;;;5494:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5604:1;5583:23;;:9;:23;;;5575:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5659:21;5683:9;:17;5693:6;5683:17;;;;;;;;;;;;;;;;5659:41;;5736:6;5719:13;:23;;5711:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5857:6;5841:13;:22;5821:9;:17;5831:6;5821:17;;;;;;;;;;;;;;;:42;;;;5909:6;5885:9;:20;5895:9;5885:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5950:9;5933:35;;5942:6;5933:35;;;5961:6;5933:35;;;;;;:::i;:::-;;;;;;;;5483:493;5362:614;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:329::-;2677:6;2726:2;2714:9;2705:7;2701:23;2697:32;2694:119;;;2732:79;;:::i;:::-;2694:119;2852:1;2877:53;2922:7;2913:6;2902:9;2898:22;2877:53;:::i;:::-;2867:63;;2823:117;2618:329;;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:::-;4835:6;4843;4851;4900:2;4888:9;4879:7;4875:23;4871:32;4868:119;;;4906:79;;:::i;:::-;4868:119;5026:1;5051:53;5096:7;5087:6;5076:9;5072:22;5051:53;:::i;:::-;5041:63;;4997:117;5153:2;5179:53;5224:7;5215:6;5204:9;5200:22;5179:53;:::i;:::-;5169:63;;5124:118;5281:2;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5252:118;4758:619;;;;;:::o;5383:86::-;5418:7;5458:4;5451:5;5447:16;5436:27;;5383:86;;;:::o;5475:112::-;5558:22;5574:5;5558:22;:::i;:::-;5553:3;5546:35;5475:112;;:::o;5593:214::-;5682:4;5720:2;5709:9;5705:18;5697:26;;5733:67;5797:1;5786:9;5782:17;5773:6;5733:67;:::i;:::-;5593:214;;;;:::o;5813:118::-;5900:24;5918:5;5900:24;:::i;:::-;5895:3;5888:37;5813:118;;:::o;5937:222::-;6030:4;6068:2;6057:9;6053:18;6045:26;;6081:71;6149:1;6138:9;6134:17;6125:6;6081:71;:::i;:::-;5937:222;;;;:::o;6165:116::-;6235:21;6250:5;6235:21;:::i;:::-;6228:5;6225:32;6215:60;;6271:1;6268;6261:12;6215:60;6165:116;:::o;6287:133::-;6330:5;6368:6;6355:20;6346:29;;6384:30;6408:5;6384:30;:::i;:::-;6287:133;;;;:::o;6426:323::-;6482:6;6531:2;6519:9;6510:7;6506:23;6502:32;6499:119;;;6537:79;;:::i;:::-;6499:119;6657:1;6682:50;6724:7;6715:6;6704:9;6700:22;6682:50;:::i;:::-;6672:60;;6628:114;6426:323;;;;:::o;6755:468::-;6820:6;6828;6877:2;6865:9;6856:7;6852:23;6848:32;6845:119;;;6883:79;;:::i;:::-;6845:119;7003:1;7028:53;7073:7;7064:6;7053:9;7049:22;7028:53;:::i;:::-;7018:63;;6974:117;7130:2;7156:50;7198:7;7189:6;7178:9;7174:22;7156:50;:::i;:::-;7146:60;;7101:115;6755:468;;;;;:::o;7229:474::-;7297:6;7305;7354:2;7342:9;7333:7;7329:23;7325:32;7322:119;;;7360:79;;:::i;:::-;7322:119;7480:1;7505:53;7550:7;7541:6;7530:9;7526:22;7505:53;:::i;:::-;7495:63;;7451:117;7607:2;7633:53;7678:7;7669:6;7658:9;7654:22;7633:53;:::i;:::-;7623:63;;7578:118;7229:474;;;;;:::o;7709:::-;7777:6;7785;7834:2;7822:9;7813:7;7809:23;7805:32;7802:119;;;7840:79;;:::i;:::-;7802:119;7960:1;7985:53;8030:7;8021:6;8010:9;8006:22;7985:53;:::i;:::-;7975:63;;7931:117;8087:2;8113:53;8158:7;8149:6;8138:9;8134:22;8113:53;:::i;:::-;8103:63;;8058:118;7709:474;;;;;:::o;8189:180::-;8237:77;8234:1;8227:88;8334:4;8331:1;8324:15;8358:4;8355:1;8348:15;8375:320;8419:6;8456:1;8450:4;8446:12;8436:22;;8503:1;8497:4;8493:12;8524:18;8514:81;;8580:4;8572:6;8568:17;8558:27;;8514:81;8642:2;8634:6;8631:14;8611:18;8608:38;8605:84;;8661:18;;:::i;:::-;8605:84;8426:269;8375:320;;;:::o;8701:182::-;8841:34;8837:1;8829:6;8825:14;8818:58;8701:182;:::o;8889:366::-;9031:3;9052:67;9116:2;9111:3;9052:67;:::i;:::-;9045:74;;9128:93;9217:3;9128:93;:::i;:::-;9246:2;9241:3;9237:12;9230:19;;8889:366;;;:::o;9261:419::-;9427:4;9465:2;9454:9;9450:18;9442:26;;9514:9;9508:4;9504:20;9500:1;9489:9;9485:17;9478:47;9542:131;9668:4;9542:131;:::i;:::-;9534:139;;9261:419;;;:::o;9686:180::-;9826:32;9822:1;9814:6;9810:14;9803:56;9686:180;:::o;9872:366::-;10014:3;10035:67;10099:2;10094:3;10035:67;:::i;:::-;10028:74;;10111:93;10200:3;10111:93;:::i;:::-;10229:2;10224:3;10220:12;10213:19;;9872:366;;;:::o;10244:419::-;10410:4;10448:2;10437:9;10433:18;10425:26;;10497:9;10491:4;10487:20;10483:1;10472:9;10468:17;10461:47;10525:131;10651:4;10525:131;:::i;:::-;10517:139;;10244:419;;;:::o;10669:229::-;10809:34;10805:1;10797:6;10793:14;10786:58;10878:12;10873:2;10865:6;10861:15;10854:37;10669:229;:::o;10904:366::-;11046:3;11067:67;11131:2;11126:3;11067:67;:::i;:::-;11060:74;;11143:93;11232:3;11143:93;:::i;:::-;11261:2;11256:3;11252:12;11245:19;;10904:366;;;:::o;11276:419::-;11442:4;11480:2;11469:9;11465:18;11457:26;;11529:9;11523:4;11519:20;11515:1;11504:9;11500:17;11493:47;11557:131;11683:4;11557:131;:::i;:::-;11549:139;;11276:419;;;:::o;11701:332::-;11822:4;11860:2;11849:9;11845:18;11837:26;;11873:71;11941:1;11930:9;11926:17;11917:6;11873:71;:::i;:::-;11954:72;12022:2;12011:9;12007:18;11998:6;11954:72;:::i;:::-;11701:332;;;;;:::o;12039:227::-;12179:34;12175:1;12167:6;12163:14;12156:58;12248:10;12243:2;12235:6;12231:15;12224:35;12039:227;:::o;12272:366::-;12414:3;12435:67;12499:2;12494:3;12435:67;:::i;:::-;12428:74;;12511:93;12600:3;12511:93;:::i;:::-;12629:2;12624:3;12620:12;12613:19;;12272:366;;;:::o;12644:419::-;12810:4;12848:2;12837:9;12833:18;12825:26;;12897:9;12891:4;12887:20;12883:1;12872:9;12868:17;12861:47;12925:131;13051:4;12925:131;:::i;:::-;12917:139;;12644:419;;;:::o;13069:180::-;13117:77;13114:1;13107:88;13214:4;13211:1;13204:15;13238:4;13235:1;13228:15;13255:191;13295:3;13314:20;13332:1;13314:20;:::i;:::-;13309:25;;13348:20;13366:1;13348:20;:::i;:::-;13343:25;;13391:1;13388;13384:9;13377:16;;13412:3;13409:1;13406:10;13403:36;;;13419:18;;:::i;:::-;13403:36;13255:191;;;;:::o;13452:237::-;13592:34;13588:1;13580:6;13576:14;13569:58;13661:20;13656:2;13648:6;13644:15;13637:45;13452:237;:::o;13695:366::-;13837:3;13858:67;13922:2;13917:3;13858:67;:::i;:::-;13851:74;;13934:93;14023:3;13934:93;:::i;:::-;14052:2;14047:3;14043:12;14036:19;;13695:366;;;:::o;14067:419::-;14233:4;14271:2;14260:9;14256:18;14248:26;;14320:9;14314:4;14310:20;14306:1;14295:9;14291:17;14284:47;14348:131;14474:4;14348:131;:::i;:::-;14340:139;;14067:419;;;:::o;14492:232::-;14632:34;14628:1;14620:6;14616:14;14609:58;14701:15;14696:2;14688:6;14684:15;14677:40;14492:232;:::o;14730:366::-;14872:3;14893:67;14957:2;14952:3;14893:67;:::i;:::-;14886:74;;14969:93;15058:3;14969:93;:::i;:::-;15087:2;15082:3;15078:12;15071:19;;14730:366;;;:::o;15102:419::-;15268:4;15306:2;15295:9;15291:18;15283:26;;15355:9;15349:4;15345:20;15341:1;15330:9;15326:17;15319:47;15383:131;15509:4;15383:131;:::i;:::-;15375:139;;15102:419;;;:::o;15527:223::-;15667:34;15663:1;15655:6;15651:14;15644:58;15736:6;15731:2;15723:6;15719:15;15712:31;15527:223;:::o;15756:366::-;15898:3;15919:67;15983:2;15978:3;15919:67;:::i;:::-;15912:74;;15995:93;16084:3;15995:93;:::i;:::-;16113:2;16108:3;16104:12;16097:19;;15756:366;;;:::o;16128:419::-;16294:4;16332:2;16321:9;16317:18;16309:26;;16381:9;16375:4;16371:20;16367:1;16356:9;16352:17;16345:47;16409:131;16535:4;16409:131;:::i;:::-;16401:139;;16128:419;;;:::o;16553:173::-;16693:25;16689:1;16681:6;16677:14;16670:49;16553:173;:::o;16732:366::-;16874:3;16895:67;16959:2;16954:3;16895:67;:::i;:::-;16888:74;;16971:93;17060:3;16971:93;:::i;:::-;17089:2;17084:3;17080:12;17073:19;;16732:366;;;:::o;17104:419::-;17270:4;17308:2;17297:9;17293:18;17285:26;;17357:9;17351:4;17347:20;17343:1;17332:9;17328:17;17321:47;17385:131;17511:4;17385:131;:::i;:::-;17377:139;;17104:419;;;:::o;17529:224::-;17669:34;17665:1;17657:6;17653:14;17646:58;17738:7;17733:2;17725:6;17721:15;17714:32;17529:224;:::o;17759:366::-;17901:3;17922:67;17986:2;17981:3;17922:67;:::i;:::-;17915:74;;17998:93;18087:3;17998:93;:::i;:::-;18116:2;18111:3;18107:12;18100:19;;17759:366;;;:::o;18131:419::-;18297:4;18335:2;18324:9;18320:18;18312:26;;18384:9;18378:4;18374:20;18370:1;18359:9;18355:17;18348:47;18412:131;18538:4;18412:131;:::i;:::-;18404:139;;18131:419;;;:::o;18556:102::-;18598:8;18645:5;18642:1;18638:13;18617:34;;18556:102;;;:::o;18664:848::-;18725:5;18732:4;18756:6;18747:15;;18780:5;18771:14;;18794:712;18815:1;18805:8;18802:15;18794:712;;;18910:4;18905:3;18901:14;18895:4;18892:24;18889:50;;;18919:18;;:::i;:::-;18889:50;18969:1;18959:8;18955:16;18952:451;;;19384:4;19377:5;19373:16;19364:25;;18952:451;19434:4;19428;19424:15;19416:23;;19464:32;19487:8;19464:32;:::i;:::-;19452:44;;18794:712;;;18664:848;;;;;;;:::o;19518:1073::-;19572:5;19763:8;19753:40;;19784:1;19775:10;;19786:5;;19753:40;19812:4;19802:36;;19829:1;19820:10;;19831:5;;19802:36;19898:4;19946:1;19941:27;;;;19982:1;19977:191;;;;19891:277;;19941:27;19959:1;19950:10;;19961:5;;;19977:191;20022:3;20012:8;20009:17;20006:43;;;20029:18;;:::i;:::-;20006:43;20078:8;20075:1;20071:16;20062:25;;20113:3;20106:5;20103:14;20100:40;;;20120:18;;:::i;:::-;20100:40;20153:5;;;19891:277;;20277:2;20267:8;20264:16;20258:3;20252:4;20249:13;20245:36;20227:2;20217:8;20214:16;20209:2;20203:4;20200:12;20196:35;20180:111;20177:246;;;20333:8;20327:4;20323:19;20314:28;;20368:3;20361:5;20358:14;20355:40;;;20375:18;;:::i;:::-;20355:40;20408:5;;20177:246;20448:42;20486:3;20476:8;20470:4;20467:1;20448:42;:::i;:::-;20433:57;;;;20522:4;20517:3;20513:14;20506:5;20503:25;20500:51;;;20531:18;;:::i;:::-;20500:51;20580:4;20573:5;20569:16;20560:25;;19518:1073;;;;;;:::o;20597:281::-;20655:5;20679:23;20697:4;20679:23;:::i;:::-;20671:31;;20723:25;20739:8;20723:25;:::i;:::-;20711:37;;20767:104;20804:66;20794:8;20788:4;20767:104;:::i;:::-;20758:113;;20597:281;;;;:::o;20884:180::-;20932:77;20929:1;20922:88;21029:4;21026:1;21019:15;21053:4;21050:1;21043:15;21070:185;21110:1;21127:20;21145:1;21127:20;:::i;:::-;21122:25;;21161:20;21179:1;21161:20;:::i;:::-;21156:25;;21200:1;21190:35;;21205:18;;:::i;:::-;21190:35;21247:1;21244;21240:9;21235:14;;21070:185;;;;:::o;21261:250::-;21401:34;21397:1;21389:6;21385:14;21378:58;21470:33;21465:2;21457:6;21453:15;21446:58;21261:250;:::o;21517:366::-;21659:3;21680:67;21744:2;21739:3;21680:67;:::i;:::-;21673:74;;21756:93;21845:3;21756:93;:::i;:::-;21874:2;21869:3;21865:12;21858:19;;21517:366;;;:::o;21889:419::-;22055:4;22093:2;22082:9;22078:18;22070:26;;22142:9;22136:4;22132:20;22128:1;22117:9;22113:17;22106:47;22170:131;22296:4;22170:131;:::i;:::-;22162:139;;21889:419;;;:::o;22314:410::-;22354:7;22377:20;22395:1;22377:20;:::i;:::-;22372:25;;22411:20;22429:1;22411:20;:::i;:::-;22406:25;;22466:1;22463;22459:9;22488:30;22506:11;22488:30;:::i;:::-;22477:41;;22667:1;22658:7;22654:15;22651:1;22648:22;22628:1;22621:9;22601:83;22578:139;;22697:18;;:::i;:::-;22578:139;22362:362;22314:410;;;;:::o;22730:225::-;22870:34;22866:1;22858:6;22854:14;22847:58;22939:8;22934:2;22926:6;22922:15;22915:33;22730:225;:::o;22961:366::-;23103:3;23124:67;23188:2;23183:3;23124:67;:::i;:::-;23117:74;;23200:93;23289:3;23200:93;:::i;:::-;23318:2;23313:3;23309:12;23302:19;;22961:366;;;:::o;23333:419::-;23499:4;23537:2;23526:9;23522:18;23514:26;;23586:9;23580:4;23576:20;23572:1;23561:9;23557:17;23550:47;23614:131;23740:4;23614:131;:::i;:::-;23606:139;;23333:419;;;:::o;23758:248::-;23898:34;23894:1;23886:6;23882:14;23875:58;23967:31;23962:2;23954:6;23950:15;23943:56;23758:248;:::o;24012:366::-;24154:3;24175:67;24239:2;24234:3;24175:67;:::i;:::-;24168:74;;24251:93;24340:3;24251:93;:::i;:::-;24369:2;24364:3;24360:12;24353:19;;24012:366;;;:::o;24384:419::-;24550:4;24588:2;24577:9;24573:18;24565:26;;24637:9;24631:4;24627:20;24623:1;24612:9;24608:17;24601:47;24665:131;24791:4;24665:131;:::i;:::-;24657:139;;24384:419;;;:::o;24809:143::-;24866:5;24897:6;24891:13;24882:22;;24913:33;24940:5;24913:33;:::i;:::-;24809:143;;;;:::o;24958:351::-;25028:6;25077:2;25065:9;25056:7;25052:23;25048:32;25045:119;;;25083:79;;:::i;:::-;25045:119;25203:1;25228:64;25284:7;25275:6;25264:9;25260:22;25228:64;:::i;:::-;25218:74;;25174:128;24958:351;;;;:::o;25315:332::-;25436:4;25474:2;25463:9;25459:18;25451:26;;25487:71;25555:1;25544:9;25540:17;25531:6;25487:71;:::i;:::-;25568:72;25636:2;25625:9;25621:18;25612:6;25568:72;:::i;:::-;25315:332;;;;;:::o;25653:137::-;25707:5;25738:6;25732:13;25723:22;;25754:30;25778:5;25754:30;:::i;:::-;25653:137;;;;:::o;25796:345::-;25863:6;25912:2;25900:9;25891:7;25887:23;25883:32;25880:119;;;25918:79;;:::i;:::-;25880:119;26038:1;26063:61;26116:7;26107:6;26096:9;26092:22;26063:61;:::i;:::-;26053:71;;26009:125;25796:345;;;;:::o;26147:223::-;26287:34;26283:1;26275:6;26271:14;26264:58;26356:6;26351:2;26343:6;26339:15;26332:31;26147:223;:::o;26376:366::-;26518:3;26539:67;26603:2;26598:3;26539:67;:::i;:::-;26532:74;;26615:93;26704:3;26615:93;:::i;:::-;26733:2;26728:3;26724:12;26717:19;;26376:366;;;:::o;26748:419::-;26914:4;26952:2;26941:9;26937:18;26929:26;;27001:9;26995:4;26991:20;26987:1;26976:9;26972:17;26965:47;27029:131;27155:4;27029:131;:::i;:::-;27021:139;;26748:419;;;:::o;27173:221::-;27313:34;27309:1;27301:6;27297:14;27290:58;27382:4;27377:2;27369:6;27365:15;27358:29;27173:221;:::o;27400:366::-;27542:3;27563:67;27627:2;27622:3;27563:67;:::i;:::-;27556:74;;27639:93;27728:3;27639:93;:::i;:::-;27757:2;27752:3;27748:12;27741:19;;27400:366;;;:::o;27772:419::-;27938:4;27976:2;27965:9;27961:18;27953:26;;28025:9;28019:4;28015:20;28011:1;28000:9;27996:17;27989:47;28053:131;28179:4;28053:131;:::i;:::-;28045:139;;27772:419;;;:::o;28197:223::-;28337:34;28333:1;28325:6;28321:14;28314:58;28406:6;28401:2;28393:6;28389:15;28382:31;28197:223;:::o;28426:366::-;28568:3;28589:67;28653:2;28648:3;28589:67;:::i;:::-;28582:74;;28665:93;28754:3;28665:93;:::i;:::-;28783:2;28778:3;28774:12;28767:19;;28426:366;;;:::o;28798:419::-;28964:4;29002:2;28991:9;28987:18;28979:26;;29051:9;29045:4;29041:20;29037:1;29026:9;29022:17;29015:47;29079:131;29205:4;29079:131;:::i;:::-;29071:139;;28798:419;;;:::o;29223:221::-;29363:34;29359:1;29351:6;29347:14;29340:58;29432:4;29427:2;29419:6;29415:15;29408:29;29223:221;:::o;29450:366::-;29592:3;29613:67;29677:2;29672:3;29613:67;:::i;:::-;29606:74;;29689:93;29778:3;29689:93;:::i;:::-;29807:2;29802:3;29798:12;29791:19;;29450:366;;;:::o;29822:419::-;29988:4;30026:2;30015:9;30011:18;30003:26;;30075:9;30069:4;30065:20;30061:1;30050:9;30046:17;30039:47;30103:131;30229:4;30103:131;:::i;:::-;30095:139;;29822:419;;;:::o;30247:180::-;30387:32;30383:1;30375:6;30371:14;30364:56;30247:180;:::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:246::-;31370:34;31366:1;31358:6;31354:14;31347:58;31439:29;31434:2;31426:6;31422:15;31415:54;31230:246;:::o;31482:366::-;31624:3;31645:67;31709:2;31704:3;31645:67;:::i;:::-;31638:74;;31721:93;31810:3;31721:93;:::i;:::-;31839:2;31834:3;31830:12;31823:19;;31482:366;;;:::o;31854:419::-;32020:4;32058:2;32047:9;32043:18;32035:26;;32107:9;32101:4;32097:20;32093:1;32082:9;32078:17;32071:47;32135:131;32261:4;32135:131;:::i;:::-;32127:139;;31854:419;;;:::o;32279:194::-;32319:4;32339:20;32357:1;32339:20;:::i;:::-;32334:25;;32373:20;32391:1;32373:20;:::i;:::-;32368:25;;32417:1;32414;32410:9;32402:17;;32441:1;32435:4;32432:11;32429:37;;;32446:18;;:::i;:::-;32429:37;32279:194;;;;:::o;32479:179::-;32619:31;32615:1;32607:6;32603:14;32596:55;32479:179;:::o;32664:366::-;32806:3;32827:67;32891:2;32886:3;32827:67;:::i;:::-;32820:74;;32903:93;32992:3;32903:93;:::i;:::-;33021:2;33016:3;33012:12;33005:19;;32664:366;;;:::o;33036:419::-;33202:4;33240:2;33229:9;33225:18;33217:26;;33289:9;33283:4;33279:20;33275:1;33264:9;33260:17;33253:47;33317:131;33443:4;33317:131;:::i;:::-;33309:139;;33036:419;;;:::o;33461:147::-;33562:11;33599:3;33584:18;;33461:147;;;;:::o;33614:114::-;;:::o;33734:398::-;33893:3;33914:83;33995:1;33990:3;33914:83;:::i;:::-;33907:90;;34006:93;34095:3;34006:93;:::i;:::-;34124:1;34119:3;34115:11;34108:18;;33734:398;;;:::o;34138:379::-;34322:3;34344:147;34487:3;34344:147;:::i;:::-;34337:154;;34508:3;34501:10;;34138:379;;;:::o;34523:224::-;34663:34;34659:1;34651:6;34647:14;34640:58;34732:7;34727:2;34719:6;34715:15;34708:32;34523:224;:::o;34753:366::-;34895:3;34916:67;34980:2;34975:3;34916:67;:::i;:::-;34909:74;;34992:93;35081:3;34992:93;:::i;:::-;35110:2;35105:3;35101:12;35094:19;;34753:366;;;:::o;35125:419::-;35291:4;35329:2;35318:9;35314:18;35306:26;;35378:9;35372:4;35368:20;35364:1;35353:9;35349:17;35342:47;35406:131;35532:4;35406:131;:::i;:::-;35398:139;;35125:419;;;:::o;35550:222::-;35690:34;35686:1;35678:6;35674:14;35667:58;35759:5;35754:2;35746:6;35742:15;35735:30;35550:222;:::o;35778:366::-;35920:3;35941:67;36005:2;36000:3;35941:67;:::i;:::-;35934:74;;36017:93;36106:3;36017:93;:::i;:::-;36135:2;36130:3;36126:12;36119:19;;35778:366;;;:::o;36150:419::-;36316:4;36354:2;36343:9;36339:18;36331:26;;36403:9;36397:4;36393:20;36389:1;36378:9;36374:17;36367:47;36431:131;36557:4;36431:131;:::i;:::-;36423:139;;36150:419;;;:::o;36575:225::-;36715:34;36711:1;36703:6;36699:14;36692:58;36784:8;36779:2;36771:6;36767:15;36760:33;36575:225;:::o;36806:366::-;36948:3;36969:67;37033:2;37028:3;36969:67;:::i;:::-;36962:74;;37045:93;37134:3;37045:93;:::i;:::-;37163:2;37158:3;37154:12;37147:19;;36806:366;;;:::o;37178:419::-;37344:4;37382:2;37371:9;37367:18;37359:26;;37431:9;37425:4;37421:20;37417:1;37406:9;37402:17;37395:47;37459:131;37585:4;37459:131;:::i;:::-;37451:139;;37178:419;;;:::o

Swarm Source

ipfs://2721e14f2744aef373ab10536cb350a53c2e4b3ffab71e171203ed9306edf41a
Loading