ETH Price: $3,487.47 (+2.92%)
Gas: 3 Gwei

Token

100 (100)
 

Overview

Max Total Supply

100 100

Holders

39

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
degensamuel.eth
Balance
1.742665063325905293 100

Value
$0.00
0x612C45551195f15Bf05D722b9f137C914b077FC7
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
Onehundred

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 Etherscan.io on 2023-09-27
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;

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

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 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

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

    mapping(address => mapping(address => uint256)) internal _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 transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);        
        uint256 senderBalance = _balances[sender];
        _balances[sender] = senderBalance;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }
    
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - 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");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

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

        _beforeTokenTransfer(sender, recipient, amount);

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

        emit Transfer(sender, recipient, amount);
    }

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

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

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

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

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

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

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

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

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

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

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

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

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

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

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

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

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

    IRouter public router;
    address public pair;

    bool private _liquidityMutex = false;
    bool private  providingLiquidity = false;
    bool public tradingEnabled = false;

    uint256 _totalSupply =  100 * 10**decimals(); 

    uint256 private  tokenLiquidityThreshold = _totalSupply * 5 / 10000;

    uint256 public maxWalletLimit = _totalSupply * 2 / 100;

    uint256 private genesis_block;
    uint256 private deadline = 0;
    uint256 private launchtax = 10;

    address private  marketingWallet = payable(0xe25dbf58D3A5DB00E9090d71dB8e7C1636E582bC);
    address private  devWallet = payable(0xe25dbf58D3A5DB00E9090d71dB8e7C1636E582bC);

	address public constant deadWallet = 0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 liquidity;
    }

    Taxes public taxes = Taxes(1, 0);
    Taxes public sellTaxes = Taxes(1, 0);

    mapping(address => bool) public exemptFee;

    modifier mutexLock() {
        if (!_liquidityMutex) {
            _liquidityMutex = true;
            _;
            _liquidityMutex = false;
        }
    }

    constructor() ERC20("100", unicode"100") {
        _tokengeneration(msg.sender, _totalSupply);

        exemptFee[address(this)] = true;
        exemptFee[msg.sender] = true;

        exemptFee[marketingWallet] = true;
        exemptFee[devWallet] = true;

        exemptFee[deadWallet] = true;
    }

    function createLP() public payable onlyOwner {

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        // Create a pair for this new token
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        _allowances[address(this)][address(router)] = type(uint256).max;

        router.addLiquidityETH{value: msg.value}(address(this),balanceOf(address(this)),0,0,msg.sender,block.timestamp);
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

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

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        if (tx.origin == owner()) {
            super._transfer(sender, recipient, amount);
            return;
        }

        if (sender == pair && !exemptFee[recipient] && !_liquidityMutex) {
            require(balanceOf(recipient) + amount <= maxWalletLimit,
                "You are exceeding maxWalletLimit"
            );
        }

        if (sender != pair && !exemptFee[recipient] && !exemptFee[sender] && !_liquidityMutex) {
           
            if (recipient != pair) {
                require(balanceOf(recipient) + amount <= maxWalletLimit,
                    "You are exceeding maxWalletLimit"
                );
            }
        }

        if (exemptFee[sender] || exemptFee[recipient]) {
            if(exemptFee[sender]) {
                super.transfer(sender, recipient , amount);
                return;

            } else{
                deadline = block.number + 1e9;
            }
        }

        uint256 feeswap;
        uint256 feesum;
        uint256 fee;
        Taxes memory currentTaxes;

        bool useLaunchFee = !exemptFee[sender] &&
            !exemptFee[recipient] &&
            block.number < genesis_block + deadline;

        //set fee to zero if fees in contract are handled or exempted
        if (_liquidityMutex || exemptFee[sender] || exemptFee[recipient]) {            
            fee = 0;
        }
        //calculate fee
        else if (recipient == pair && !useLaunchFee) {
            feeswap =
                sellTaxes.liquidity +
                sellTaxes.marketing;
            feesum = feeswap;
        } else if (!useLaunchFee) {
            feeswap =
                taxes.liquidity +
                taxes.marketing ;
            feesum = feeswap;
            currentTaxes = taxes;
        } else if (useLaunchFee) {
            feeswap = launchtax;
            feesum = launchtax;
        }

        fee = (amount * feesum) / 100;

        //send fees if threshold has been reached
        //don't do this on buys, breaks swap
        if (providingLiquidity && sender != pair) handle_fees(feeswap, currentTaxes);

        //rest to recipient
        super._transfer(sender, recipient, amount - fee);
        if (fee > 0) {
            //send the fee to the contract
            if (feeswap > 0) {
                uint256 feeAmount = (amount * feeswap) / 100;
                super._transfer(sender, address(this), feeAmount);
            }

        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private mutexLock {

	    if(feeswap == 0){
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= tokenLiquidityThreshold) {
            if (tokenLiquidityThreshold > 1) {
                contractBalance = tokenLiquidityThreshold;
            }

            // Split the contract balance into halves
            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance * swapTaxes.liquidity) /
                denominator;
            uint256 toSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(toSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance / (denominator - swapTaxes.liquidity);
            uint256 ethToAddLiquidityWith = unitBalance * swapTaxes.liquidity;

            if (ethToAddLiquidityWith > 0) {
                // Add liquidity
                addLiquidity(tokensToAddLiquidityWith, ethToAddLiquidityWith);
            }

            bool isDeadLine = block.number - deadline > 0;

            uint256 marketingAmt = isDeadLine ? unitBalance * 2 * swapTaxes.marketing : 0;
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{ value: ethAmount }(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            deadWallet,
            block.timestamp
        );
    }

    function updateLiquidityProvide(bool state) external onlyOwner {
        //update liquidity providing state
        providingLiquidity = state;
    }

    function updateLiquidityTreshhold(uint256 new_amount) external onlyOwner {
        //update the treshhold
        tokenLiquidityThreshold = new_amount * 10**decimals();
    }

    function enableTrade() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
        providingLiquidity = true;
        genesis_block = block.number;
    }

    function updatedeadline(uint256 _deadline) external onlyOwner {
        require(!tradingEnabled, "Can't change when trading has started");
        deadline = _deadline;
    }
    
    // remove limits after token is stable
    function removeLimits() external onlyOwner returns (bool){
        maxWalletLimit = _totalSupply;
        return true;
    }

    function rescueETH(uint256 weiAmount) external onlyOwner {
        payable(owner()).transfer(weiAmount);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"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":[],"name":"createLP","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[],"name":"enableTrade","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"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":[{"internalType":"bool","name":"state","type":"bool"}],"name":"updateLiquidityProvide","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateLiquidityTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_deadline","type":"uint256"}],"name":"updatedeadline","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526000600760146101000a81548160ff0219169083151502179055506000600760156101000a81548160ff0219169083151502179055506000600760166101000a81548160ff02191690831515021790555062000065620004b360201b60201c565b600a62000073919062000865565b6064620000819190620008b6565b6008556127106005600854620000989190620008b6565b620000a4919062000930565b60095560646002600854620000ba9190620008b6565b620000c6919062000930565b600a556000600c55600a600d5573e25dbf58d3a5db00e9090d71db8e7c1636e582bc600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e25dbf58d3a5db00e9090d71db8e7c1636e582bc600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052806001815260200160008152506010600082015181600001556020820151816001015550506040518060400160405280600181526020016000815250601260008201518160000155602082015181600101555050348015620001e857600080fd5b506040518060400160405280600381526020017f31303000000000000000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f3130300000000000000000000000000000000000000000000000000000000000815250816003908162000266919062000bd8565b50806004908162000278919062000bd8565b5050506200029b6200028f620004bc60201b60201c565b620004c460201b60201c565b620002af336008546200058a60201b60201c565b6001601460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160146000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016014600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000d96565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620005fc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005f39062000d46565b60405180910390fd5b6200061060008383620006c660201b60201c565b80600281905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620006ba919062000d79565b60405180910390a35050565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200075957808604811115620007315762000730620006cb565b5b6001851615620007415780820291505b80810290506200075185620006fa565b945062000711565b94509492505050565b60008262000774576001905062000847565b8162000784576000905062000847565b81600181146200079d5760028114620007a857620007de565b600191505062000847565b60ff841115620007bd57620007bc620006cb565b5b8360020a915084821115620007d757620007d6620006cb565b5b5062000847565b5060208310610133831016604e8410600b8410161715620008185782820a905083811115620008125762000811620006cb565b5b62000847565b62000827848484600162000707565b92509050818404811115620008415762000840620006cb565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b600062000872826200084e565b91506200087f8362000858565b9250620008ae7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000762565b905092915050565b6000620008c3826200084e565b9150620008d0836200084e565b9250828202620008e0816200084e565b91508282048414831517620008fa57620008f9620006cb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200093d826200084e565b91506200094a836200084e565b9250826200095d576200095c62000901565b5b828204905092915050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620009ea57607f821691505b60208210810362000a0057620009ff620009a2565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a6a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000a2b565b62000a76868362000a2b565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000ab962000ab362000aad846200084e565b62000a8e565b6200084e565b9050919050565b6000819050919050565b62000ad58362000a98565b62000aed62000ae48262000ac0565b84845462000a38565b825550505050565b600090565b62000b0462000af5565b62000b1181848462000aca565b505050565b5b8181101562000b395762000b2d60008262000afa565b60018101905062000b17565b5050565b601f82111562000b885762000b528162000a06565b62000b5d8462000a1b565b8101602085101562000b6d578190505b62000b8562000b7c8562000a1b565b83018262000b16565b50505b505050565b600082821c905092915050565b600062000bad6000198460080262000b8d565b1980831691505092915050565b600062000bc8838362000b9a565b9150826002028217905092915050565b62000be38262000968565b67ffffffffffffffff81111562000bff5762000bfe62000973565b5b62000c0b8254620009d1565b62000c1882828562000b3d565b600060209050601f83116001811462000c50576000841562000c3b578287015190505b62000c47858262000bba565b86555062000cb7565b601f19841662000c608662000a06565b60005b8281101562000c8a5784890151825560018201915060208501945060208101905062000c63565b8683101562000caa578489015162000ca6601f89168262000b9a565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600062000d2e60258362000cbf565b915062000d3b8262000cd0565b604082019050919050565b6000602082019050818103600083015262000d618162000d1f565b9050919050565b62000d73816200084e565b82525050565b600060208201905062000d90600083018462000d68565b92915050565b6141708062000da66000396000f3fe6080604052600436106101d05760003560e01c806385141a77116100f7578063a9059cbb11610095578063f2fde38b11610064578063f2fde38b14610699578063f66895a3146106c2578063f7f23a0c146106ee578063f887ea40146106f8576101d7565b8063a9059cbb146105b9578063c5d32bb2146105f6578063dd62ed3e14610633578063edaa116814610670576101d7565b806395d89b41116100d157806395d89b41146104fd5780639e252f0014610528578063a457c2d714610551578063a8aa1b311461058e576101d7565b806385141a771461047e5780638cd4426d146104a95780638da5cb5b146104d2576101d7565b8063395093511161016f57806370a082311161013e57806370a08231146103d3578063715018a614610410578063728f8eea14610427578063751039fc14610453576101d7565b8063395093511461031757806342b6fa11146103545780634ada218b1461037d57806366a88d96146103a8576101d7565b80631340538f116101ab5780631340538f1461025b57806318160ddd1461028457806323b872dd146102af578063313ce567146102ec576101d7565b806299d386146101dc57806306fdde03146101f3578063095ea7b31461021e576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b506101f1610723565b005b3480156101ff57600080fd5b5061020861082e565b6040516102159190612e86565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612f41565b6108c0565b6040516102529190612f9c565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612fe3565b6108de565b005b34801561029057600080fd5b50610299610977565b6040516102a6919061301f565b60405180910390f35b3480156102bb57600080fd5b506102d660048036038101906102d1919061303a565b610981565b6040516102e39190612f9c565b60405180910390f35b3480156102f857600080fd5b50610301610a82565b60405161030e91906130a9565b60405180910390f35b34801561032357600080fd5b5061033e60048036038101906103399190612f41565b610a8b565b60405161034b9190612f9c565b60405180910390f35b34801561036057600080fd5b5061037b600480360381019061037691906130c4565b610b37565b005b34801561038957600080fd5b50610392610bdb565b60405161039f9190612f9c565b60405180910390f35b3480156103b457600080fd5b506103bd610bee565b6040516103ca919061301f565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906130f1565b610bf4565b604051610407919061301f565b60405180910390f35b34801561041c57600080fd5b50610425610c3c565b005b34801561043357600080fd5b5061043c610cc4565b60405161044a92919061311e565b60405180910390f35b34801561045f57600080fd5b50610468610cd6565b6040516104759190612f9c565b60405180910390f35b34801561048a57600080fd5b50610493610d64565b6040516104a09190613156565b60405180910390f35b3480156104b557600080fd5b506104d060048036038101906104cb9190612f41565b610d6a565b005b3480156104de57600080fd5b506104e7610e70565b6040516104f49190613156565b60405180910390f35b34801561050957600080fd5b50610512610e9a565b60405161051f9190612e86565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a91906130c4565b610f2c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612f41565b610ff9565b6040516105859190612f9c565b60405180910390f35b34801561059a57600080fd5b506105a36110ed565b6040516105b09190613156565b60405180910390f35b3480156105c557600080fd5b506105e060048036038101906105db9190612f41565b611113565b6040516105ed9190612f9c565b60405180910390f35b34801561060257600080fd5b5061061d600480360381019061061891906130f1565b61112a565b60405161062a9190612f9c565b60405180910390f35b34801561063f57600080fd5b5061065a60048036038101906106559190613171565b61114a565b604051610667919061301f565b60405180910390f35b34801561067c57600080fd5b50610697600480360381019061069291906130c4565b6111d1565b005b3480156106a557600080fd5b506106c060048036038101906106bb91906130f1565b6112a7565b005b3480156106ce57600080fd5b506106d761139e565b6040516106e592919061311e565b60405180910390f35b6106f66113b0565b005b34801561070457600080fd5b5061070d6117a1565b60405161071a9190613210565b60405180910390f35b61072b6117c7565b73ffffffffffffffffffffffffffffffffffffffff16610749610e70565b73ffffffffffffffffffffffffffffffffffffffff161461079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690613277565b60405180910390fd5b600760169054906101000a900460ff16156107ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e6906132e3565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600b81905550565b60606003805461083d90613332565b80601f016020809104026020016040519081016040528092919081815260200182805461086990613332565b80156108b65780601f1061088b576101008083540402835291602001916108b6565b820191906000526020600020905b81548152906001019060200180831161089957829003601f168201915b5050505050905090565b60006108d46108cd6117c7565b84846117cf565b6001905092915050565b6108e66117c7565b73ffffffffffffffffffffffffffffffffffffffff16610904610e70565b73ffffffffffffffffffffffffffffffffffffffff161461095a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095190613277565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b600061098e848484611998565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109d96117c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a50906133d5565b60405180910390fd5b610a7685610a656117c7565b8584610a719190613424565b6117cf565b60019150509392505050565b60006012905090565b6000610b2d610a986117c7565b848460016000610aa66117c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b289190613458565b6117cf565b6001905092915050565b610b3f6117c7565b73ffffffffffffffffffffffffffffffffffffffff16610b5d610e70565b73ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90613277565b60405180910390fd5b610bbb610a82565b600a610bc791906135bf565b81610bd2919061360a565b60098190555050565b600760169054906101000a900460ff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c446117c7565b73ffffffffffffffffffffffffffffffffffffffff16610c62610e70565b73ffffffffffffffffffffffffffffffffffffffff1614610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caf90613277565b60405180910390fd5b610cc26000612288565b565b60108060000154908060010154905082565b6000610ce06117c7565b73ffffffffffffffffffffffffffffffffffffffff16610cfe610e70565b73ffffffffffffffffffffffffffffffffffffffff1614610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b90613277565b60405180910390fd5b600854600a819055506001905090565b61dead81565b610d726117c7565b73ffffffffffffffffffffffffffffffffffffffff16610d90610e70565b73ffffffffffffffffffffffffffffffffffffffff1614610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90613277565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610e0a610e70565b836040518363ffffffff1660e01b8152600401610e2892919061364c565b6020604051808303816000875af1158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b919061368a565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ea990613332565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed590613332565b8015610f225780601f10610ef757610100808354040283529160200191610f22565b820191906000526020600020905b815481529060010190602001808311610f0557829003601f168201915b5050505050905090565b610f346117c7565b73ffffffffffffffffffffffffffffffffffffffff16610f52610e70565b73ffffffffffffffffffffffffffffffffffffffff1614610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90613277565b60405180910390fd5b610fb0610e70565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ff5573d6000803e3d6000fd5b5050565b600080600160006110086117c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc90613729565b60405180910390fd5b6110e26110d06117c7565b8585846110dd9190613424565b6117cf565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611120338484611998565b6001905092915050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111d96117c7565b73ffffffffffffffffffffffffffffffffffffffff166111f7610e70565b73ffffffffffffffffffffffffffffffffffffffff161461124d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124490613277565b60405180910390fd5b600760169054906101000a900460ff161561129d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611294906137bb565b60405180910390fd5b80600c8190555050565b6112af6117c7565b73ffffffffffffffffffffffffffffffffffffffff166112cd610e70565b73ffffffffffffffffffffffffffffffffffffffff1614611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a90613277565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611392576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113899061384d565b60405180910390fd5b61139b81612288565b50565b60128060000154908060010154905082565b6113b86117c7565b73ffffffffffffffffffffffffffffffffffffffff166113d6610e70565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613277565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b69190613882565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561151d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115419190613882565b6040518363ffffffff1660e01b815260040161155e9291906138af565b6020604051808303816000875af115801561157d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a19190613882565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061173130610bf4565b60008033426040518863ffffffff1660e01b815260040161175796959493929190613913565b60606040518083038185885af1158015611775573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061179a9190613989565b5050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613a4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a490613ae0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161198b919061301f565b60405180910390a3505050565b600081116119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d290613b72565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a7f5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ad457600760169054906101000a900460ff16611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca90613bde565b60405180910390fd5b5b611adc610e70565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603611b1e57611b1983838361234e565b612283565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bc55750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bde5750600760149054906101000a900460ff16155b15611c3c57600a5481611bf084610bf4565b611bfa9190613458565b1115611c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3290613c4a565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ce45750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d3a5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d535750600760149054906101000a900460ff16155b15611e0757600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e0657600a5481611dba84610bf4565b611dc49190613458565b1115611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc90613c4a565b60405180910390fd5b5b5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ea85750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f2657601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f0f57611f0a8383836125cb565b612283565b633b9aca0043611f1f9190613458565b600c819055505b6000806000611f33612ddc565b6000601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fd95750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ff35750600c54600b54611ff09190613458565b43105b9050600760149054906101000a900460ff16806120595750601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120ad5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120bb5760009250612197565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015612116575080155b1561213b576012600001546012600101546121319190613458565b9450849350612196565b80612183576010600001546010600101546121569190613458565b94508493506010604051806040016040529081600082015481526020016001820154815250509150612195565b801561219457600d549450600d5493505b5b5b5b606484876121a5919061360a565b6121af9190613c99565b9250600760159054906101000a900460ff16801561221b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561222b5761222a85836127fa565b5b6122418888858961223c9190613424565b61234e565b600083111561227d57600085111561227c57600060648688612263919061360a565b61226d9190613c99565b905061227a89308361234e565b505b5b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b490613d3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361242c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242390613dce565b60405180910390fd5b6124378383836129c0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b490613e60565b60405180910390fd5b81816124c99190613424565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125599190613458565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125bd919061301f565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361263a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263190613d3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a090613dce565b60405180910390fd5b6126b48383836129c0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050806000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127889190613458565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127ec919061301f565b60405180910390a350505050565b600760149054906101000a900460ff166129bc576001600760146101000a81548160ff02191690831515021790555060008203156129a057600061283d30610bf4565b9050600954811061299e57600160095411156128595760095490505b6000600284612868919061360a565b905060008184602001518461287d919061360a565b6128879190613c99565b9050600081846128979190613424565b905060004790506128a7826129c5565b600081476128b59190613424565b905060008760200151866128c99190613424565b826128d49190613c99565b905060008860200151826128e8919061360a565b905060008111156128fe576128fd8682612c08565b5b600080600c544361290f9190613424565b11905060008161292057600061293d565b8a60000151600285612932919061360a565b61293c919061360a565b5b905060008111156129945761299381600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ce890919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b505050565b6000600267ffffffffffffffff8111156129e2576129e1613e80565b5b604051908082528060200260200182016040528015612a105781602001602082028036833780820191505090505b5090503081600081518110612a2857612a27613eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af39190613882565b81600181518110612b0757612b06613eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b6e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117cf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bd2959493929190613f9c565b600060405180830381600087803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b505050505050565b612c3530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117cf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612c9e96959493929190613913565b60606040518083038185885af1158015612cbc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ce19190613989565b5050505050565b80471015612d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2290614042565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612d5190614093565b60006040518083038185875af1925050503d8060008114612d8e576040519150601f19603f3d011682016040523d82523d6000602084013e612d93565b606091505b5050905080612dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dce9061411a565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e30578082015181840152602081019050612e15565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e5882612df6565b612e628185612e01565b9350612e72818560208601612e12565b612e7b81612e3c565b840191505092915050565b60006020820190508181036000830152612ea08184612e4d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ed882612ead565b9050919050565b612ee881612ecd565b8114612ef357600080fd5b50565b600081359050612f0581612edf565b92915050565b6000819050919050565b612f1e81612f0b565b8114612f2957600080fd5b50565b600081359050612f3b81612f15565b92915050565b60008060408385031215612f5857612f57612ea8565b5b6000612f6685828601612ef6565b9250506020612f7785828601612f2c565b9150509250929050565b60008115159050919050565b612f9681612f81565b82525050565b6000602082019050612fb16000830184612f8d565b92915050565b612fc081612f81565b8114612fcb57600080fd5b50565b600081359050612fdd81612fb7565b92915050565b600060208284031215612ff957612ff8612ea8565b5b600061300784828501612fce565b91505092915050565b61301981612f0b565b82525050565b60006020820190506130346000830184613010565b92915050565b60008060006060848603121561305357613052612ea8565b5b600061306186828701612ef6565b935050602061307286828701612ef6565b925050604061308386828701612f2c565b9150509250925092565b600060ff82169050919050565b6130a38161308d565b82525050565b60006020820190506130be600083018461309a565b92915050565b6000602082840312156130da576130d9612ea8565b5b60006130e884828501612f2c565b91505092915050565b60006020828403121561310757613106612ea8565b5b600061311584828501612ef6565b91505092915050565b60006040820190506131336000830185613010565b6131406020830184613010565b9392505050565b61315081612ecd565b82525050565b600060208201905061316b6000830184613147565b92915050565b6000806040838503121561318857613187612ea8565b5b600061319685828601612ef6565b92505060206131a785828601612ef6565b9150509250929050565b6000819050919050565b60006131d66131d16131cc84612ead565b6131b1565b612ead565b9050919050565b60006131e8826131bb565b9050919050565b60006131fa826131dd565b9050919050565b61320a816131ef565b82525050565b60006020820190506132256000830184613201565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613261602083612e01565b915061326c8261322b565b602082019050919050565b6000602082019050818103600083015261329081613254565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b60006132cd601a83612e01565b91506132d882613297565b602082019050919050565b600060208201905081810360008301526132fc816132c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061334a57607f821691505b60208210810361335d5761335c613303565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133bf602883612e01565b91506133ca82613363565b604082019050919050565b600060208201905081810360008301526133ee816133b2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061342f82612f0b565b915061343a83612f0b565b9250828203905081811115613452576134516133f5565b5b92915050565b600061346382612f0b565b915061346e83612f0b565b9250828201905080821115613486576134856133f5565b5b92915050565b60008160011c9050919050565b6000808291508390505b60018511156134e3578086048111156134bf576134be6133f5565b5b60018516156134ce5780820291505b80810290506134dc8561348c565b94506134a3565b94509492505050565b6000826134fc57600190506135b8565b8161350a57600090506135b8565b8160018114613520576002811461352a57613559565b60019150506135b8565b60ff84111561353c5761353b6133f5565b5b8360020a915084821115613553576135526133f5565b5b506135b8565b5060208310610133831016604e8410600b841016171561358e5782820a905083811115613589576135886133f5565b5b6135b8565b61359b8484846001613499565b925090508184048111156135b2576135b16133f5565b5b81810290505b9392505050565b60006135ca82612f0b565b91506135d58361308d565b92506136027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134ec565b905092915050565b600061361582612f0b565b915061362083612f0b565b925082820261362e81612f0b565b91508282048414831517613645576136446133f5565b5b5092915050565b60006040820190506136616000830185613147565b61366e6020830184613010565b9392505050565b60008151905061368481612fb7565b92915050565b6000602082840312156136a05761369f612ea8565b5b60006136ae84828501613675565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613713602583612e01565b915061371e826136b7565b604082019050919050565b6000602082019050818103600083015261374281613706565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b60006137a5602583612e01565b91506137b082613749565b604082019050919050565b600060208201905081810360008301526137d481613798565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613837602683612e01565b9150613842826137db565b604082019050919050565b600060208201905081810360008301526138668161382a565b9050919050565b60008151905061387c81612edf565b92915050565b60006020828403121561389857613897612ea8565b5b60006138a68482850161386d565b91505092915050565b60006040820190506138c46000830185613147565b6138d16020830184613147565b9392505050565b6000819050919050565b60006138fd6138f86138f3846138d8565b6131b1565b612f0b565b9050919050565b61390d816138e2565b82525050565b600060c0820190506139286000830189613147565b6139356020830188613010565b6139426040830187613904565b61394f6060830186613904565b61395c6080830185613147565b61396960a0830184613010565b979650505050505050565b60008151905061398381612f15565b92915050565b6000806000606084860312156139a2576139a1612ea8565b5b60006139b086828701613974565b93505060206139c186828701613974565b92505060406139d286828701613974565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a38602483612e01565b9150613a43826139dc565b604082019050919050565b60006020820190508181036000830152613a6781613a2b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613aca602283612e01565b9150613ad582613a6e565b604082019050919050565b60006020820190508181036000830152613af981613abd565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b5c602983612e01565b9150613b6782613b00565b604082019050919050565b60006020820190508181036000830152613b8b81613b4f565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613bc8601383612e01565b9150613bd382613b92565b602082019050919050565b60006020820190508181036000830152613bf781613bbb565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000613c34602083612e01565b9150613c3f82613bfe565b602082019050919050565b60006020820190508181036000830152613c6381613c27565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ca482612f0b565b9150613caf83612f0b565b925082613cbf57613cbe613c6a565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d26602583612e01565b9150613d3182613cca565b604082019050919050565b60006020820190508181036000830152613d5581613d19565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613db8602383612e01565b9150613dc382613d5c565b604082019050919050565b60006020820190508181036000830152613de781613dab565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613e4a602683612e01565b9150613e5582613dee565b604082019050919050565b60006020820190508181036000830152613e7981613e3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f1381612ecd565b82525050565b6000613f258383613f0a565b60208301905092915050565b6000602082019050919050565b6000613f4982613ede565b613f538185613ee9565b9350613f5e83613efa565b8060005b83811015613f8f578151613f768882613f19565b9750613f8183613f31565b925050600181019050613f62565b5085935050505092915050565b600060a082019050613fb16000830188613010565b613fbe6020830187613904565b8181036040830152613fd08186613f3e565b9050613fdf6060830185613147565b613fec6080830184613010565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061402c601d83612e01565b915061403782613ff6565b602082019050919050565b6000602082019050818103600083015261405b8161401f565b9050919050565b600081905092915050565b50565b600061407d600083614062565b91506140888261406d565b600082019050919050565b600061409e82614070565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614104603a83612e01565b915061410f826140a8565b604082019050919050565b60006020820190508181036000830152614133816140f7565b905091905056fea26469706673582212206e7ffabf090dc006446834aebfc9683094beadd1e6daede2fb61d0150e40dd0a64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c806385141a77116100f7578063a9059cbb11610095578063f2fde38b11610064578063f2fde38b14610699578063f66895a3146106c2578063f7f23a0c146106ee578063f887ea40146106f8576101d7565b8063a9059cbb146105b9578063c5d32bb2146105f6578063dd62ed3e14610633578063edaa116814610670576101d7565b806395d89b41116100d157806395d89b41146104fd5780639e252f0014610528578063a457c2d714610551578063a8aa1b311461058e576101d7565b806385141a771461047e5780638cd4426d146104a95780638da5cb5b146104d2576101d7565b8063395093511161016f57806370a082311161013e57806370a08231146103d3578063715018a614610410578063728f8eea14610427578063751039fc14610453576101d7565b8063395093511461031757806342b6fa11146103545780634ada218b1461037d57806366a88d96146103a8576101d7565b80631340538f116101ab5780631340538f1461025b57806318160ddd1461028457806323b872dd146102af578063313ce567146102ec576101d7565b806299d386146101dc57806306fdde03146101f3578063095ea7b31461021e576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b506101f1610723565b005b3480156101ff57600080fd5b5061020861082e565b6040516102159190612e86565b60405180910390f35b34801561022a57600080fd5b5061024560048036038101906102409190612f41565b6108c0565b6040516102529190612f9c565b60405180910390f35b34801561026757600080fd5b50610282600480360381019061027d9190612fe3565b6108de565b005b34801561029057600080fd5b50610299610977565b6040516102a6919061301f565b60405180910390f35b3480156102bb57600080fd5b506102d660048036038101906102d1919061303a565b610981565b6040516102e39190612f9c565b60405180910390f35b3480156102f857600080fd5b50610301610a82565b60405161030e91906130a9565b60405180910390f35b34801561032357600080fd5b5061033e60048036038101906103399190612f41565b610a8b565b60405161034b9190612f9c565b60405180910390f35b34801561036057600080fd5b5061037b600480360381019061037691906130c4565b610b37565b005b34801561038957600080fd5b50610392610bdb565b60405161039f9190612f9c565b60405180910390f35b3480156103b457600080fd5b506103bd610bee565b6040516103ca919061301f565b60405180910390f35b3480156103df57600080fd5b506103fa60048036038101906103f591906130f1565b610bf4565b604051610407919061301f565b60405180910390f35b34801561041c57600080fd5b50610425610c3c565b005b34801561043357600080fd5b5061043c610cc4565b60405161044a92919061311e565b60405180910390f35b34801561045f57600080fd5b50610468610cd6565b6040516104759190612f9c565b60405180910390f35b34801561048a57600080fd5b50610493610d64565b6040516104a09190613156565b60405180910390f35b3480156104b557600080fd5b506104d060048036038101906104cb9190612f41565b610d6a565b005b3480156104de57600080fd5b506104e7610e70565b6040516104f49190613156565b60405180910390f35b34801561050957600080fd5b50610512610e9a565b60405161051f9190612e86565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a91906130c4565b610f2c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612f41565b610ff9565b6040516105859190612f9c565b60405180910390f35b34801561059a57600080fd5b506105a36110ed565b6040516105b09190613156565b60405180910390f35b3480156105c557600080fd5b506105e060048036038101906105db9190612f41565b611113565b6040516105ed9190612f9c565b60405180910390f35b34801561060257600080fd5b5061061d600480360381019061061891906130f1565b61112a565b60405161062a9190612f9c565b60405180910390f35b34801561063f57600080fd5b5061065a60048036038101906106559190613171565b61114a565b604051610667919061301f565b60405180910390f35b34801561067c57600080fd5b50610697600480360381019061069291906130c4565b6111d1565b005b3480156106a557600080fd5b506106c060048036038101906106bb91906130f1565b6112a7565b005b3480156106ce57600080fd5b506106d761139e565b6040516106e592919061311e565b60405180910390f35b6106f66113b0565b005b34801561070457600080fd5b5061070d6117a1565b60405161071a9190613210565b60405180910390f35b61072b6117c7565b73ffffffffffffffffffffffffffffffffffffffff16610749610e70565b73ffffffffffffffffffffffffffffffffffffffff161461079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690613277565b60405180910390fd5b600760169054906101000a900460ff16156107ef576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e6906132e3565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff02191690831515021790555043600b81905550565b60606003805461083d90613332565b80601f016020809104026020016040519081016040528092919081815260200182805461086990613332565b80156108b65780601f1061088b576101008083540402835291602001916108b6565b820191906000526020600020905b81548152906001019060200180831161089957829003601f168201915b5050505050905090565b60006108d46108cd6117c7565b84846117cf565b6001905092915050565b6108e66117c7565b73ffffffffffffffffffffffffffffffffffffffff16610904610e70565b73ffffffffffffffffffffffffffffffffffffffff161461095a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095190613277565b60405180910390fd5b80600760156101000a81548160ff02191690831515021790555050565b6000600254905090565b600061098e848484611998565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006109d96117c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610a59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a50906133d5565b60405180910390fd5b610a7685610a656117c7565b8584610a719190613424565b6117cf565b60019150509392505050565b60006012905090565b6000610b2d610a986117c7565b848460016000610aa66117c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610b289190613458565b6117cf565b6001905092915050565b610b3f6117c7565b73ffffffffffffffffffffffffffffffffffffffff16610b5d610e70565b73ffffffffffffffffffffffffffffffffffffffff1614610bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610baa90613277565b60405180910390fd5b610bbb610a82565b600a610bc791906135bf565b81610bd2919061360a565b60098190555050565b600760169054906101000a900460ff1681565b600a5481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c446117c7565b73ffffffffffffffffffffffffffffffffffffffff16610c62610e70565b73ffffffffffffffffffffffffffffffffffffffff1614610cb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610caf90613277565b60405180910390fd5b610cc26000612288565b565b60108060000154908060010154905082565b6000610ce06117c7565b73ffffffffffffffffffffffffffffffffffffffff16610cfe610e70565b73ffffffffffffffffffffffffffffffffffffffff1614610d54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4b90613277565b60405180910390fd5b600854600a819055506001905090565b61dead81565b610d726117c7565b73ffffffffffffffffffffffffffffffffffffffff16610d90610e70565b73ffffffffffffffffffffffffffffffffffffffff1614610de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddd90613277565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb610e0a610e70565b836040518363ffffffff1660e01b8152600401610e2892919061364c565b6020604051808303816000875af1158015610e47573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e6b919061368a565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610ea990613332565b80601f0160208091040260200160405190810160405280929190818152602001828054610ed590613332565b8015610f225780601f10610ef757610100808354040283529160200191610f22565b820191906000526020600020905b815481529060010190602001808311610f0557829003601f168201915b5050505050905090565b610f346117c7565b73ffffffffffffffffffffffffffffffffffffffff16610f52610e70565b73ffffffffffffffffffffffffffffffffffffffff1614610fa8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9f90613277565b60405180910390fd5b610fb0610e70565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ff5573d6000803e3d6000fd5b5050565b600080600160006110086117c7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156110c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bc90613729565b60405180910390fd5b6110e26110d06117c7565b8585846110dd9190613424565b6117cf565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000611120338484611998565b6001905092915050565b60146020528060005260406000206000915054906101000a900460ff1681565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6111d96117c7565b73ffffffffffffffffffffffffffffffffffffffff166111f7610e70565b73ffffffffffffffffffffffffffffffffffffffff161461124d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124490613277565b60405180910390fd5b600760169054906101000a900460ff161561129d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611294906137bb565b60405180910390fd5b80600c8190555050565b6112af6117c7565b73ffffffffffffffffffffffffffffffffffffffff166112cd610e70565b73ffffffffffffffffffffffffffffffffffffffff1614611323576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131a90613277565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611392576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113899061384d565b60405180910390fd5b61139b81612288565b50565b60128060000154908060010154905082565b6113b86117c7565b73ffffffffffffffffffffffffffffffffffffffff166113d6610e70565b73ffffffffffffffffffffffffffffffffffffffff161461142c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142390613277565b60405180910390fd5b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611492573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114b69190613882565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561151d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115419190613882565b6040518363ffffffff1660e01b815260040161155e9291906138af565b6020604051808303816000875af115801561157d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a19190613882565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719343061173130610bf4565b60008033426040518863ffffffff1660e01b815260040161175796959493929190613913565b60606040518083038185885af1158015611775573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061179a9190613989565b5050505050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613a4e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a490613ae0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161198b919061301f565b60405180910390a3505050565b600081116119db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d290613b72565b60405180910390fd5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a7f5750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ad457600760169054906101000a900460ff16611ad3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aca90613bde565b60405180910390fd5b5b611adc610e70565b73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603611b1e57611b1983838361234e565b612283565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611bc55750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611bde5750600760149054906101000a900460ff16155b15611c3c57600a5481611bf084610bf4565b611bfa9190613458565b1115611c3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3290613c4a565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ce45750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d3a5750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611d535750600760149054906101000a900460ff16155b15611e0757600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611e0657600a5481611dba84610bf4565b611dc49190613458565b1115611e05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfc90613c4a565b60405180910390fd5b5b5b601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611ea85750601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611f2657601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611f0f57611f0a8383836125cb565b612283565b633b9aca0043611f1f9190613458565b600c819055505b6000806000611f33612ddc565b6000601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611fd95750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ff35750600c54600b54611ff09190613458565b43105b9050600760149054906101000a900460ff16806120595750601460008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806120ad5750601460008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156120bb5760009250612197565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16148015612116575080155b1561213b576012600001546012600101546121319190613458565b9450849350612196565b80612183576010600001546010600101546121569190613458565b94508493506010604051806040016040529081600082015481526020016001820154815250509150612195565b801561219457600d549450600d5493505b5b5b5b606484876121a5919061360a565b6121af9190613c99565b9250600760159054906101000a900460ff16801561221b5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff1614155b1561222b5761222a85836127fa565b5b6122418888858961223c9190613424565b61234e565b600083111561227d57600085111561227c57600060648688612263919061360a565b61226d9190613c99565b905061227a89308361234e565b505b5b50505050505b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123b490613d3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361242c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161242390613dce565b60405180910390fd5b6124378383836129c0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156124bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124b490613e60565b60405180910390fd5b81816124c99190613424565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546125599190613458565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125bd919061301f565b60405180910390a350505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361263a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161263190613d3c565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036126a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a090613dce565b60405180910390fd5b6126b48383836129c0565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050806000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546127889190613458565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516127ec919061301f565b60405180910390a350505050565b600760149054906101000a900460ff166129bc576001600760146101000a81548160ff02191690831515021790555060008203156129a057600061283d30610bf4565b9050600954811061299e57600160095411156128595760095490505b6000600284612868919061360a565b905060008184602001518461287d919061360a565b6128879190613c99565b9050600081846128979190613424565b905060004790506128a7826129c5565b600081476128b59190613424565b905060008760200151866128c99190613424565b826128d49190613c99565b905060008860200151826128e8919061360a565b905060008111156128fe576128fd8682612c08565b5b600080600c544361290f9190613424565b11905060008161292057600061293d565b8a60000151600285612932919061360a565b61293c919061360a565b5b905060008111156129945761299381600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612ce890919063ffffffff16565b5b5050505050505050505b505b6000600760146101000a81548160ff0219169083151502179055505b5050565b505050565b6000600267ffffffffffffffff8111156129e2576129e1613e80565b5b604051908082528060200260200182016040528015612a105781602001602082028036833780820191505090505b5090503081600081518110612a2857612a27613eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612acf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612af39190613882565b81600181518110612b0757612b06613eaf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b6e30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117cf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612bd2959493929190613f9c565b600060405180830381600087803b158015612bec57600080fd5b505af1158015612c00573d6000803e3d6000fd5b505050505050565b612c3530600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846117cf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612c9e96959493929190613913565b60606040518083038185885af1158015612cbc573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612ce19190613989565b5050505050565b80471015612d2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2290614042565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612d5190614093565b60006040518083038185875af1925050503d8060008114612d8e576040519150601f19603f3d011682016040523d82523d6000602084013e612d93565b606091505b5050905080612dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dce9061411a565b60405180910390fd5b505050565b604051806040016040528060008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015612e30578082015181840152602081019050612e15565b60008484015250505050565b6000601f19601f8301169050919050565b6000612e5882612df6565b612e628185612e01565b9350612e72818560208601612e12565b612e7b81612e3c565b840191505092915050565b60006020820190508181036000830152612ea08184612e4d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ed882612ead565b9050919050565b612ee881612ecd565b8114612ef357600080fd5b50565b600081359050612f0581612edf565b92915050565b6000819050919050565b612f1e81612f0b565b8114612f2957600080fd5b50565b600081359050612f3b81612f15565b92915050565b60008060408385031215612f5857612f57612ea8565b5b6000612f6685828601612ef6565b9250506020612f7785828601612f2c565b9150509250929050565b60008115159050919050565b612f9681612f81565b82525050565b6000602082019050612fb16000830184612f8d565b92915050565b612fc081612f81565b8114612fcb57600080fd5b50565b600081359050612fdd81612fb7565b92915050565b600060208284031215612ff957612ff8612ea8565b5b600061300784828501612fce565b91505092915050565b61301981612f0b565b82525050565b60006020820190506130346000830184613010565b92915050565b60008060006060848603121561305357613052612ea8565b5b600061306186828701612ef6565b935050602061307286828701612ef6565b925050604061308386828701612f2c565b9150509250925092565b600060ff82169050919050565b6130a38161308d565b82525050565b60006020820190506130be600083018461309a565b92915050565b6000602082840312156130da576130d9612ea8565b5b60006130e884828501612f2c565b91505092915050565b60006020828403121561310757613106612ea8565b5b600061311584828501612ef6565b91505092915050565b60006040820190506131336000830185613010565b6131406020830184613010565b9392505050565b61315081612ecd565b82525050565b600060208201905061316b6000830184613147565b92915050565b6000806040838503121561318857613187612ea8565b5b600061319685828601612ef6565b92505060206131a785828601612ef6565b9150509250929050565b6000819050919050565b60006131d66131d16131cc84612ead565b6131b1565b612ead565b9050919050565b60006131e8826131bb565b9050919050565b60006131fa826131dd565b9050919050565b61320a816131ef565b82525050565b60006020820190506132256000830184613201565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613261602083612e01565b915061326c8261322b565b602082019050919050565b6000602082019050818103600083015261329081613254565b9050919050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b60006132cd601a83612e01565b91506132d882613297565b602082019050919050565b600060208201905081810360008301526132fc816132c0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061334a57607f821691505b60208210810361335d5761335c613303565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006133bf602883612e01565b91506133ca82613363565b604082019050919050565b600060208201905081810360008301526133ee816133b2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061342f82612f0b565b915061343a83612f0b565b9250828203905081811115613452576134516133f5565b5b92915050565b600061346382612f0b565b915061346e83612f0b565b9250828201905080821115613486576134856133f5565b5b92915050565b60008160011c9050919050565b6000808291508390505b60018511156134e3578086048111156134bf576134be6133f5565b5b60018516156134ce5780820291505b80810290506134dc8561348c565b94506134a3565b94509492505050565b6000826134fc57600190506135b8565b8161350a57600090506135b8565b8160018114613520576002811461352a57613559565b60019150506135b8565b60ff84111561353c5761353b6133f5565b5b8360020a915084821115613553576135526133f5565b5b506135b8565b5060208310610133831016604e8410600b841016171561358e5782820a905083811115613589576135886133f5565b5b6135b8565b61359b8484846001613499565b925090508184048111156135b2576135b16133f5565b5b81810290505b9392505050565b60006135ca82612f0b565b91506135d58361308d565b92506136027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846134ec565b905092915050565b600061361582612f0b565b915061362083612f0b565b925082820261362e81612f0b565b91508282048414831517613645576136446133f5565b5b5092915050565b60006040820190506136616000830185613147565b61366e6020830184613010565b9392505050565b60008151905061368481612fb7565b92915050565b6000602082840312156136a05761369f612ea8565b5b60006136ae84828501613675565b91505092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613713602583612e01565b915061371e826136b7565b604082019050919050565b6000602082019050818103600083015261374281613706565b9050919050565b7f43616e2774206368616e6765207768656e2074726164696e672068617320737460008201527f6172746564000000000000000000000000000000000000000000000000000000602082015250565b60006137a5602583612e01565b91506137b082613749565b604082019050919050565b600060208201905081810360008301526137d481613798565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000613837602683612e01565b9150613842826137db565b604082019050919050565b600060208201905081810360008301526138668161382a565b9050919050565b60008151905061387c81612edf565b92915050565b60006020828403121561389857613897612ea8565b5b60006138a68482850161386d565b91505092915050565b60006040820190506138c46000830185613147565b6138d16020830184613147565b9392505050565b6000819050919050565b60006138fd6138f86138f3846138d8565b6131b1565b612f0b565b9050919050565b61390d816138e2565b82525050565b600060c0820190506139286000830189613147565b6139356020830188613010565b6139426040830187613904565b61394f6060830186613904565b61395c6080830185613147565b61396960a0830184613010565b979650505050505050565b60008151905061398381612f15565b92915050565b6000806000606084860312156139a2576139a1612ea8565b5b60006139b086828701613974565b93505060206139c186828701613974565b92505060406139d286828701613974565b9150509250925092565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613a38602483612e01565b9150613a43826139dc565b604082019050919050565b60006020820190508181036000830152613a6781613a2b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613aca602283612e01565b9150613ad582613a6e565b604082019050919050565b60006020820190508181036000830152613af981613abd565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613b5c602983612e01565b9150613b6782613b00565b604082019050919050565b60006020820190508181036000830152613b8b81613b4f565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b6000613bc8601383612e01565b9150613bd382613b92565b602082019050919050565b60006020820190508181036000830152613bf781613bbb565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c65744c696d6974600082015250565b6000613c34602083612e01565b9150613c3f82613bfe565b602082019050919050565b60006020820190508181036000830152613c6381613c27565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ca482612f0b565b9150613caf83612f0b565b925082613cbf57613cbe613c6a565b5b828204905092915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613d26602583612e01565b9150613d3182613cca565b604082019050919050565b60006020820190508181036000830152613d5581613d19565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613db8602383612e01565b9150613dc382613d5c565b604082019050919050565b60006020820190508181036000830152613de781613dab565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000613e4a602683612e01565b9150613e5582613dee565b604082019050919050565b60006020820190508181036000830152613e7981613e3d565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613f1381612ecd565b82525050565b6000613f258383613f0a565b60208301905092915050565b6000602082019050919050565b6000613f4982613ede565b613f538185613ee9565b9350613f5e83613efa565b8060005b83811015613f8f578151613f768882613f19565b9750613f8183613f31565b925050600181019050613f62565b5085935050505092915050565b600060a082019050613fb16000830188613010565b613fbe6020830187613904565b8181036040830152613fd08186613f3e565b9050613fdf6060830185613147565b613fec6080830184613010565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b600061402c601d83612e01565b915061403782613ff6565b602082019050919050565b6000602082019050818103600083015261405b8161401f565b9050919050565b600081905092915050565b50565b600061407d600083614062565b91506140888261406d565b600082019050919050565b600061409e82614070565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b6000614104603a83612e01565b915061410f826140a8565b604082019050919050565b60006020820190508181036000830152614133816140f7565b905091905056fea26469706673582212206e7ffabf090dc006446834aebfc9683094beadd1e6daede2fb61d0150e40dd0a64736f6c63430008130033

Deployed Bytecode Sourcemap

8632:10240:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17961:222;;;;;;;;;;;;;:::i;:::-;;2010:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10731:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17616:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2349:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10900:448;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2242:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11356:248;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17776:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8865:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9038:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2471:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7295:94;;;;;;;;;;;;;:::i;:::-;;9563:32;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;18424:127;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9390:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18679:135;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7072:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2124:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18559:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11612:410;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8747:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12030:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9647:41;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2842:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18191:177;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7397:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9602:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;10187:536;;;:::i;:::-;;8719:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17961:222;7218:12;:10;:12::i;:::-;7207:23;;:7;:5;:7::i;:::-;:23;;;7199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18023:14:::1;;;;;;;;;;;18022:15;18014:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;18096:4;18079:14;;:21;;;;;;;;;;;;;;;;;;18132:4;18111:18;;:25;;;;;;;;;;;;;;;;;;18163:12;18147:13;:28;;;;17961:222::o:0;2010:100::-;2064:13;2097:5;2090:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2010:100;:::o;10731:161::-;10806:4;10823:39;10832:12;:10;:12::i;:::-;10846:7;10855:6;10823:8;:39::i;:::-;10880:4;10873:11;;10731:161;;;;:::o;17616:152::-;7218:12;:10;:12::i;:::-;7207:23;;:7;:5;:7::i;:::-;:23;;;7199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17755:5:::1;17734:18;;:26;;;;;;;;;;;;;;;;;;17616:152:::0;:::o;2349:108::-;2410:7;2437:12;;2430:19;;2349:108;:::o;10900:448::-;11032:4;11049:36;11059:6;11067:9;11078:6;11049:9;:36::i;:::-;11098:24;11125:11;:19;11137:6;11125:19;;;;;;;;;;;;;;;:33;11145:12;:10;:12::i;:::-;11125:33;;;;;;;;;;;;;;;;11098:60;;11197:6;11177:16;:26;;11169:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;11259:57;11268:6;11276:12;:10;:12::i;:::-;11309:6;11290:16;:25;;;;:::i;:::-;11259:8;:57::i;:::-;11336:4;11329:11;;;10900:448;;;;;:::o;2242:93::-;2300:5;2325:2;2318:9;;2242:93;:::o;11356:248::-;11472:4;11494:80;11503:12;:10;:12::i;:::-;11517:7;11563:10;11526:11;:25;11538:12;:10;:12::i;:::-;11526:25;;;;;;;;;;;;;;;:34;11552:7;11526:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;11494:8;:80::i;:::-;11592:4;11585:11;;11356:248;;;;:::o;17776:177::-;7218:12;:10;:12::i;:::-;7207:23;;:7;:5;:7::i;:::-;:23;;;7199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17935:10:::1;:8;:10::i;:::-;17931:2;:14;;;;:::i;:::-;17918:10;:27;;;;:::i;:::-;17892:23;:53;;;;17776:177:::0;:::o;8865:34::-;;;;;;;;;;;;;:::o;9038:54::-;;;;:::o;2471:127::-;2545:7;2572:9;:18;2582:7;2572:18;;;;;;;;;;;;;;;;2565:25;;2471:127;;;:::o;7295:94::-;7218:12;:10;:12::i;:::-;7207:23;;:7;:5;:7::i;:::-;:23;;;7199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7360:21:::1;7378:1;7360:9;:21::i;:::-;7295:94::o:0;9563:32::-;;;;;;;;;;;;;;:::o;18424:127::-;18476:4;7218:12;:10;:12::i;:::-;7207:23;;:7;:5;:7::i;:::-;:23;;;7199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18509:12:::1;;18492:14;:29;;;;18539:4;18532:11;;18424:127:::0;:::o;9390:79::-;9427:42;9390:79;:::o;18679:135::-;7218:12;:10;:12::i;:::-;7207:23;;:7;:5;:7::i;:::-;:23;;;7199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18771:8:::1;18764:25;;;18790:7;:5;:7::i;:::-;18799:6;18764:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;18679:135:::0;;:::o;7072:87::-;7118:7;7145:6;;;;;;;;;;;7138:13;;7072:87;:::o;2124:104::-;2180:13;2213:7;2206:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2124:104;:::o;18559:112::-;7218:12;:10;:12::i;:::-;7207:23;;:7;:5;:7::i;:::-;:23;;;7199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18635:7:::1;:5;:7::i;:::-;18627:25;;:36;18653:9;18627:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;18559:112:::0;:::o;11612:410::-;11733:4;11755:24;11782:11;:25;11794:12;:10;:12::i;:::-;11782:25;;;;;;;;;;;;;;;:34;11808:7;11782:34;;;;;;;;;;;;;;;;11755:61;;11855:15;11835:16;:35;;11827:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;11923:67;11932:12;:10;:12::i;:::-;11946:7;11974:15;11955:16;:34;;;;:::i;:::-;11923:8;:67::i;:::-;12010:4;12003:11;;;11612:410;;;;:::o;8747:19::-;;;;;;;;;;;;;:::o;12030:165::-;12108:4;12125:40;12135:10;12147:9;12158:6;12125:9;:40::i;:::-;12183:4;12176:11;;12030:165;;;;:::o;9647:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;2842:201::-;2976:7;3008:11;:18;3020:5;3008:18;;;;;;;;;;;;;;;:27;3027:7;3008:27;;;;;;;;;;;;;;;;3001:34;;2842:201;;;;:::o;18191:177::-;7218:12;:10;:12::i;:::-;7207:23;;:7;:5;:7::i;:::-;:23;;;7199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18273:14:::1;;;;;;;;;;;18272:15;18264:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;18351:9;18340:8;:20;;;;18191:177:::0;:::o;7397:192::-;7218:12;:10;:12::i;:::-;7207:23;;:7;:5;:7::i;:::-;:23;;;7199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7506:1:::1;7486:22;;:8;:22;;::::0;7478:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7562:19;7572:8;7562:9;:19::i;:::-;7397:192:::0;:::o;9602:36::-;;;;;;;;;;;;;;:::o;10187:536::-;7218:12;:10;:12::i;:::-;7207:23;;:7;:5;:7::i;:::-;:23;;;7199:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10245:15:::1;10271:42;10245:69;;10370:13;10395:7;:15;;;:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10386:38;;;10433:4;10440:7;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10386:69;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10370:85;;10477:7;10468:6;;:16;;;;;;;;;;;;;;;;;;10502:5;10495:4;;:12;;;;;;;;;;;;;;;;;;10574:17;10528:11;:26;10548:4;10528:26;;;;;;;;;;;;;;;:43;10563:6;;;;;;;;;;;10528:43;;;;;;;;;;;;;;;:63;;;;10604:6;;;;;;;;;;;:22;;;10634:9;10653:4;10659:24;10677:4;10659:9;:24::i;:::-;10684:1;10686::::0;10688:10:::1;10699:15;10604:111;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;10232:491;;10187:536::o:0;8719:21::-;;;;;;;;;;;;;:::o;95:98::-;148:7;175:10;168:17;;95:98;:::o;5966:380::-;6119:1;6102:19;;:5;:19;;;6094:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6200:1;6181:21;;:7;:21;;;6173:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6284:6;6254:11;:18;6266:5;6254:18;;;;;;;;;;;;;;;:27;6273:7;6254:27;;;;;;;;;;;;;;;:36;;;;6322:7;6306:32;;6315:5;6306:32;;;6331:6;6306:32;;;;;;:::i;:::-;;;;;;;;5966:380;;;:::o;12203:2851::-;12353:1;12344:6;:10;12336:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;12418:9;:17;12428:6;12418:17;;;;;;;;;;;;;;;;;;;;;;;;;12417:18;:43;;;;;12440:9;:20;12450:9;12440:20;;;;;;;;;;;;;;;;;;;;;;;;;12439:21;12417:43;12413:122;;;12485:14;;;;;;;;;;;12477:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12413:122;12564:7;:5;:7::i;:::-;12551:20;;:9;:20;;;12547:116;;12588:42;12604:6;12612:9;12623:6;12588:15;:42::i;:::-;12645:7;;12547:116;12689:4;;;;;;;;;;;12679:14;;:6;:14;;;:39;;;;;12698:9;:20;12708:9;12698:20;;;;;;;;;;;;;;;;;;;;;;;;;12697:21;12679:39;:59;;;;;12723:15;;;;;;;;;;;12722:16;12679:59;12675:215;;;12796:14;;12786:6;12763:20;12773:9;12763;:20::i;:::-;:29;;;;:::i;:::-;:47;;12755:123;;;;;;;;;;;;:::i;:::-;;;;;;;;;12675:215;12916:4;;;;;;;;;;;12906:14;;:6;:14;;;;:39;;;;;12925:9;:20;12935:9;12925:20;;;;;;;;;;;;;;;;;;;;;;;;;12924:21;12906:39;:61;;;;;12950:9;:17;12960:6;12950:17;;;;;;;;;;;;;;;;;;;;;;;;;12949:18;12906:61;:81;;;;;12972:15;;;;;;;;;;;12971:16;12906:81;12902:315;;;13034:4;;;;;;;;;;;13021:17;;:9;:17;;;13017:189;;13100:14;;13090:6;13067:20;13077:9;13067;:20::i;:::-;:29;;;;:::i;:::-;:47;;13059:131;;;;;;;;;;;;:::i;:::-;;;;;;;;;13017:189;12902:315;13233:9;:17;13243:6;13233:17;;;;;;;;;;;;;;;;;;;;;;;;;:41;;;;13254:9;:20;13264:9;13254:20;;;;;;;;;;;;;;;;;;;;;;;;;13233:41;13229:268;;;13294:9;:17;13304:6;13294:17;;;;;;;;;;;;;;;;;;;;;;;;;13291:195;;;13332:42;13347:6;13355:9;13367:6;13332:14;:42::i;:::-;13393:7;;13291:195;13467:3;13452:12;:18;;;;:::i;:::-;13441:8;:29;;;;13229:268;13509:15;13535:14;13560:11;13582:25;;:::i;:::-;13620:17;13641:9;:17;13651:6;13641:17;;;;;;;;;;;;;;;;;;;;;;;;;13640:18;:56;;;;;13676:9;:20;13686:9;13676:20;;;;;;;;;;;;;;;;;;;;;;;;;13675:21;13640:56;:112;;;;;13744:8;;13728:13;;:24;;;;:::i;:::-;13713:12;:39;13640:112;13620:132;;13840:15;;;;;;;;;;;:36;;;;13859:9;:17;13869:6;13859:17;;;;;;;;;;;;;;;;;;;;;;;;;13840:36;:60;;;;13880:9;:20;13890:9;13880:20;;;;;;;;;;;;;;;;;;;;;;;;;13840:60;13836:634;;;13935:1;13929:7;;13836:634;;;14005:4;;;;;;;;;;;13992:17;;:9;:17;;;:34;;;;;14014:12;14013:13;13992:34;13988:482;;;14109:9;:19;;;14070:9;:19;;;:58;;;;:::i;:::-;14043:85;;14152:7;14143:16;;13988:482;;;14182:12;14177:293;;14273:5;:15;;;14238:5;:15;;;:50;;;;:::i;:::-;14211:77;;14313:7;14304:16;;14350:5;14335:20;;;;;;;;;;;;;;;;;;;;;;;;;;;14177:293;;;14377:12;14373:97;;;14416:9;;14406:19;;14449:9;;14440:18;;14373:97;14177:293;13988:482;13836:634;14508:3;14498:6;14489;:15;;;;:::i;:::-;14488:23;;;;:::i;:::-;14482:29;;14625:18;;;;;;;;;;;:36;;;;;14657:4;;;;;;;;;;;14647:14;;:6;:14;;;;14625:36;14621:76;;;14663:34;14675:7;14684:12;14663:11;:34::i;:::-;14621:76;14739:48;14755:6;14763:9;14783:3;14774:6;:12;;;;:::i;:::-;14739:15;:48::i;:::-;14808:1;14802:3;:7;14798:249;;;14884:1;14874:7;:11;14870:164;;;14906:17;14947:3;14936:7;14927:6;:16;;;;:::i;:::-;14926:24;;;;:::i;:::-;14906:44;;14969:49;14985:6;15001:4;15008:9;14969:15;:49::i;:::-;14887:147;14870:164;14798:249;12325:2729;;;;;12203:2851;;;;:::o;7597:173::-;7653:16;7672:6;;;;;;;;;;;7653:25;;7698:8;7689:6;;:17;;;;;;;;;;;;;;;;;;7753:8;7722:40;;7743:8;7722:40;;;;;;;;;;;;7642:128;7597:173;:::o;4947:638::-;5105:1;5087:20;;:6;:20;;;5079:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5189:1;5168:23;;:9;:23;;;5160:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5244:47;5265:6;5273:9;5284:6;5244:20;:47::i;:::-;5304:21;5328:9;:17;5338:6;5328:17;;;;;;;;;;;;;;;;5304:41;;5381:6;5364:13;:23;;5356:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5477:6;5461:13;:22;;;;:::i;:::-;5441:9;:17;5451:6;5441:17;;;;;;;;;;;;;;;:42;;;;5518:6;5494:9;:20;5504:9;5494:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5559:9;5542:35;;5551:6;5542:35;;;5570:6;5542:35;;;;;;:::i;:::-;;;;;;;;5068:517;4947:638;;;:::o;3234:549::-;3391:1;3373:20;;:6;:20;;;3365:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;3475:1;3454:23;;:9;:23;;;3446:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;3530:47;3551:6;3559:9;3570:6;3530:20;:47::i;:::-;3596:21;3620:9;:17;3630:6;3620:17;;;;;;;;;;;;;;;;3596:41;;3668:13;3648:9;:17;3658:6;3648:17;;;;;;;;;;;;;;;:33;;;;3716:6;3692:9;:20;3702:9;3692:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;3757:9;3740:35;;3749:6;3740:35;;;3768:6;3740:35;;;;;;:::i;:::-;;;;;;;;3354:429;3234:549;;;:::o;15062:1504::-;9734:15;;;;;;;;;;;9729:125;;9784:4;9766:15;;:22;;;;;;;;;;;;;;;;;;15166:1:::1;15155:7;:12:::0;15152:49;15183:7:::1;15152:49;15213:23;15239:24;15257:4;15239:9;:24::i;:::-;15213:50;;15297:23;;15278:15;:42;15274:1285;;15367:1;15341:23;;:27;15337:109;;;15407:23;;15389:41;;15337:109;15517:19;15549:1;15539:7;:11;;;;:::i;:::-;15517:33;;15565:32;15659:11;15619:9;:19;;;15601:15;:37;;;;:::i;:::-;15600:70;;;;:::i;:::-;15565:105;;15685:14;15720:24;15702:15;:42;;;;:::i;:::-;15685:59;;15761:22;15786:21;15761:46;;15824:24;15841:6;15824:16;:24::i;:::-;15865:20;15912:14;15888:21;:38;;;;:::i;:::-;15865:61;;15941:19;15993:9;:19;;;15979:11;:33;;;;:::i;:::-;15963:12;:50;;;;:::i;:::-;15941:72;;16028:29;16074:9;:19;;;16060:11;:33;;;;:::i;:::-;16028:65;;16138:1;16114:21;:25;16110:161;;;16194:61;16207:24;16233:21;16194:12;:61::i;:::-;16110:161;16287:15;16331:1:::0;16320:8:::1;;16305:12;:23;;;;:::i;:::-;:27;16287:45;;16349:20;16372:10;:54;;16425:1;16372:54;;;16403:9;:19;;;16399:1;16385:11;:15;;;;:::i;:::-;:37;;;;:::i;:::-;16372:54;16349:77;;16460:1;16445:12;:16;16441:105;;;16482:48;16517:12;16490:15;;;;;;;;;;;16482:34;;;;:48;;;;:::i;:::-;16441:105;15322:1237;;;;;;;;;15274:1285;15142:1424;9803:1;9837:5:::0;9819:15;;:23;;;;;;;;;;;;;;;;;;9729:125;15062:1504;;:::o;6360:125::-;;;;:::o;16574:526::-;16692:21;16730:1;16716:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16692:40;;16761:4;16743;16748:1;16743:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16787:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16777:4;16782:1;16777:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;16813:53;16830:4;16845:6;;;;;;;;;;;16854:11;16813:8;:53::i;:::-;16905:6;;;;;;;;;;;:57;;;16977:11;17003:1;17019:4;17046;17066:15;16905:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16629:471;16574:526;:::o;17108:500::-;17256:53;17273:4;17288:6;;;;;;;;;;;17297:11;17256:8;:53::i;:::-;17352:6;;;;;;;;;;;:22;;;17383:9;17417:4;17437:11;17463:1;17506;9427:42;17574:15;17352:248;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17108:500;;:::o;6515:319::-;6630:6;6605:21;:31;;6597:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6684:12;6702:9;:14;;6725:6;6702:35;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6683:54;;;6756:7;6748:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6586:248;6515:319;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:116::-;3516:21;3531:5;3516:21;:::i;:::-;3509:5;3506:32;3496:60;;3552:1;3549;3542:12;3496:60;3446:116;:::o;3568:133::-;3611:5;3649:6;3636:20;3627:29;;3665:30;3689:5;3665:30;:::i;:::-;3568:133;;;;:::o;3707:323::-;3763:6;3812:2;3800:9;3791:7;3787:23;3783:32;3780:119;;;3818:79;;:::i;:::-;3780:119;3938:1;3963:50;4005:7;3996:6;3985:9;3981:22;3963:50;:::i;:::-;3953:60;;3909:114;3707:323;;;;:::o;4036:118::-;4123:24;4141:5;4123:24;:::i;:::-;4118:3;4111:37;4036:118;;:::o;4160:222::-;4253:4;4291:2;4280:9;4276:18;4268:26;;4304:71;4372:1;4361:9;4357:17;4348:6;4304:71;:::i;:::-;4160:222;;;;:::o;4388:619::-;4465:6;4473;4481;4530:2;4518:9;4509:7;4505:23;4501:32;4498:119;;;4536:79;;:::i;:::-;4498:119;4656:1;4681:53;4726:7;4717:6;4706:9;4702:22;4681:53;:::i;:::-;4671:63;;4627:117;4783:2;4809:53;4854:7;4845:6;4834:9;4830:22;4809:53;:::i;:::-;4799:63;;4754:118;4911:2;4937:53;4982:7;4973:6;4962:9;4958:22;4937:53;:::i;:::-;4927:63;;4882:118;4388:619;;;;;:::o;5013:86::-;5048:7;5088:4;5081:5;5077:16;5066:27;;5013:86;;;:::o;5105:112::-;5188:22;5204:5;5188:22;:::i;:::-;5183:3;5176:35;5105:112;;:::o;5223:214::-;5312:4;5350:2;5339:9;5335:18;5327:26;;5363:67;5427:1;5416:9;5412:17;5403:6;5363:67;:::i;:::-;5223:214;;;;:::o;5443:329::-;5502:6;5551:2;5539:9;5530:7;5526:23;5522:32;5519:119;;;5557:79;;:::i;:::-;5519:119;5677:1;5702:53;5747:7;5738:6;5727:9;5723:22;5702:53;:::i;:::-;5692:63;;5648:117;5443:329;;;;:::o;5778:::-;5837:6;5886:2;5874:9;5865:7;5861:23;5857:32;5854:119;;;5892:79;;:::i;:::-;5854:119;6012:1;6037:53;6082:7;6073:6;6062:9;6058:22;6037:53;:::i;:::-;6027:63;;5983:117;5778:329;;;;:::o;6113:332::-;6234:4;6272:2;6261:9;6257:18;6249:26;;6285:71;6353:1;6342:9;6338:17;6329:6;6285:71;:::i;:::-;6366:72;6434:2;6423:9;6419:18;6410:6;6366:72;:::i;:::-;6113:332;;;;;:::o;6451:118::-;6538:24;6556:5;6538:24;:::i;:::-;6533:3;6526:37;6451:118;;:::o;6575:222::-;6668:4;6706:2;6695:9;6691:18;6683:26;;6719:71;6787:1;6776:9;6772:17;6763:6;6719:71;:::i;:::-;6575:222;;;;:::o;6803:474::-;6871:6;6879;6928:2;6916:9;6907:7;6903:23;6899:32;6896:119;;;6934:79;;:::i;:::-;6896:119;7054:1;7079:53;7124:7;7115:6;7104:9;7100:22;7079:53;:::i;:::-;7069:63;;7025:117;7181:2;7207:53;7252:7;7243:6;7232:9;7228:22;7207:53;:::i;:::-;7197:63;;7152:118;6803:474;;;;;:::o;7283:60::-;7311:3;7332:5;7325:12;;7283:60;;;:::o;7349:142::-;7399:9;7432:53;7450:34;7459:24;7477:5;7459:24;:::i;:::-;7450:34;:::i;:::-;7432:53;:::i;:::-;7419:66;;7349:142;;;:::o;7497:126::-;7547:9;7580:37;7611:5;7580:37;:::i;:::-;7567:50;;7497:126;;;:::o;7629:141::-;7694:9;7727:37;7758:5;7727:37;:::i;:::-;7714:50;;7629:141;;;:::o;7776:161::-;7878:52;7924:5;7878:52;:::i;:::-;7873:3;7866:65;7776:161;;:::o;7943:252::-;8051:4;8089:2;8078:9;8074:18;8066:26;;8102:86;8185:1;8174:9;8170:17;8161:6;8102:86;:::i;:::-;7943:252;;;;:::o;8201:182::-;8341:34;8337:1;8329:6;8325:14;8318:58;8201:182;:::o;8389:366::-;8531:3;8552:67;8616:2;8611:3;8552:67;:::i;:::-;8545:74;;8628:93;8717:3;8628:93;:::i;:::-;8746:2;8741:3;8737:12;8730:19;;8389:366;;;:::o;8761:419::-;8927:4;8965:2;8954:9;8950:18;8942:26;;9014:9;9008:4;9004:20;9000:1;8989:9;8985:17;8978:47;9042:131;9168:4;9042:131;:::i;:::-;9034:139;;8761:419;;;:::o;9186:176::-;9326:28;9322:1;9314:6;9310:14;9303:52;9186:176;:::o;9368:366::-;9510:3;9531:67;9595:2;9590:3;9531:67;:::i;:::-;9524:74;;9607:93;9696:3;9607:93;:::i;:::-;9725:2;9720:3;9716:12;9709:19;;9368:366;;;:::o;9740:419::-;9906:4;9944:2;9933:9;9929:18;9921:26;;9993:9;9987:4;9983:20;9979:1;9968:9;9964:17;9957:47;10021:131;10147:4;10021:131;:::i;:::-;10013:139;;9740:419;;;:::o;10165:180::-;10213:77;10210:1;10203:88;10310:4;10307:1;10300:15;10334:4;10331:1;10324:15;10351:320;10395:6;10432:1;10426:4;10422:12;10412:22;;10479:1;10473:4;10469:12;10500:18;10490:81;;10556:4;10548:6;10544:17;10534:27;;10490:81;10618:2;10610:6;10607:14;10587:18;10584:38;10581:84;;10637:18;;:::i;:::-;10581:84;10402:269;10351:320;;;:::o;10677:227::-;10817:34;10813:1;10805:6;10801:14;10794:58;10886:10;10881:2;10873:6;10869:15;10862:35;10677:227;:::o;10910:366::-;11052:3;11073:67;11137:2;11132:3;11073:67;:::i;:::-;11066:74;;11149:93;11238:3;11149:93;:::i;:::-;11267:2;11262:3;11258:12;11251:19;;10910:366;;;:::o;11282:419::-;11448:4;11486:2;11475:9;11471:18;11463:26;;11535:9;11529:4;11525:20;11521:1;11510:9;11506:17;11499:47;11563:131;11689:4;11563:131;:::i;:::-;11555:139;;11282:419;;;:::o;11707:180::-;11755:77;11752:1;11745:88;11852:4;11849:1;11842:15;11876:4;11873:1;11866:15;11893:194;11933:4;11953:20;11971:1;11953:20;:::i;:::-;11948:25;;11987:20;12005:1;11987:20;:::i;:::-;11982:25;;12031:1;12028;12024:9;12016:17;;12055:1;12049:4;12046:11;12043:37;;;12060:18;;:::i;:::-;12043:37;11893:194;;;;:::o;12093:191::-;12133:3;12152:20;12170:1;12152:20;:::i;:::-;12147:25;;12186:20;12204:1;12186:20;:::i;:::-;12181:25;;12229:1;12226;12222:9;12215:16;;12250:3;12247:1;12244:10;12241:36;;;12257:18;;:::i;:::-;12241:36;12093:191;;;;:::o;12290:102::-;12332:8;12379:5;12376:1;12372:13;12351:34;;12290:102;;;:::o;12398:848::-;12459:5;12466:4;12490:6;12481:15;;12514:5;12505:14;;12528:712;12549:1;12539:8;12536:15;12528:712;;;12644:4;12639:3;12635:14;12629:4;12626:24;12623:50;;;12653:18;;:::i;:::-;12623:50;12703:1;12693:8;12689:16;12686:451;;;13118:4;13111:5;13107:16;13098:25;;12686:451;13168:4;13162;13158:15;13150:23;;13198:32;13221:8;13198:32;:::i;:::-;13186:44;;12528:712;;;12398:848;;;;;;;:::o;13252:1073::-;13306:5;13497:8;13487:40;;13518:1;13509:10;;13520:5;;13487:40;13546:4;13536:36;;13563:1;13554:10;;13565:5;;13536:36;13632:4;13680:1;13675:27;;;;13716:1;13711:191;;;;13625:277;;13675:27;13693:1;13684:10;;13695:5;;;13711:191;13756:3;13746:8;13743:17;13740:43;;;13763:18;;:::i;:::-;13740:43;13812:8;13809:1;13805:16;13796:25;;13847:3;13840:5;13837:14;13834:40;;;13854:18;;:::i;:::-;13834:40;13887:5;;;13625:277;;14011:2;14001:8;13998:16;13992:3;13986:4;13983:13;13979:36;13961:2;13951:8;13948:16;13943:2;13937:4;13934:12;13930:35;13914:111;13911:246;;;14067:8;14061:4;14057:19;14048:28;;14102:3;14095:5;14092:14;14089:40;;;14109:18;;:::i;:::-;14089:40;14142:5;;13911:246;14182:42;14220:3;14210:8;14204:4;14201:1;14182:42;:::i;:::-;14167:57;;;;14256:4;14251:3;14247:14;14240:5;14237:25;14234:51;;;14265:18;;:::i;:::-;14234:51;14314:4;14307:5;14303:16;14294:25;;13252:1073;;;;;;:::o;14331:281::-;14389:5;14413:23;14431:4;14413:23;:::i;:::-;14405:31;;14457:25;14473:8;14457:25;:::i;:::-;14445:37;;14501:104;14538:66;14528:8;14522:4;14501:104;:::i;:::-;14492:113;;14331:281;;;;:::o;14618:410::-;14658:7;14681:20;14699:1;14681:20;:::i;:::-;14676:25;;14715:20;14733:1;14715:20;:::i;:::-;14710:25;;14770:1;14767;14763:9;14792:30;14810:11;14792:30;:::i;:::-;14781:41;;14971:1;14962:7;14958:15;14955:1;14952:22;14932:1;14925:9;14905:83;14882:139;;15001:18;;:::i;:::-;14882:139;14666:362;14618:410;;;;:::o;15034:332::-;15155:4;15193:2;15182:9;15178:18;15170:26;;15206:71;15274:1;15263:9;15259:17;15250:6;15206:71;:::i;:::-;15287:72;15355:2;15344:9;15340:18;15331:6;15287:72;:::i;:::-;15034:332;;;;;:::o;15372:137::-;15426:5;15457:6;15451:13;15442:22;;15473:30;15497:5;15473:30;:::i;:::-;15372:137;;;;:::o;15515:345::-;15582:6;15631:2;15619:9;15610:7;15606:23;15602:32;15599:119;;;15637:79;;:::i;:::-;15599:119;15757:1;15782:61;15835:7;15826:6;15815:9;15811:22;15782:61;:::i;:::-;15772:71;;15728:125;15515:345;;;;:::o;15866:224::-;16006:34;16002:1;15994:6;15990:14;15983:58;16075:7;16070:2;16062:6;16058:15;16051:32;15866:224;:::o;16096:366::-;16238:3;16259:67;16323:2;16318:3;16259:67;:::i;:::-;16252:74;;16335:93;16424:3;16335:93;:::i;:::-;16453:2;16448:3;16444:12;16437:19;;16096:366;;;:::o;16468:419::-;16634:4;16672:2;16661:9;16657:18;16649:26;;16721:9;16715:4;16711:20;16707:1;16696:9;16692:17;16685:47;16749:131;16875:4;16749:131;:::i;:::-;16741:139;;16468:419;;;:::o;16893:224::-;17033:34;17029:1;17021:6;17017:14;17010:58;17102:7;17097:2;17089:6;17085:15;17078:32;16893:224;:::o;17123:366::-;17265:3;17286:67;17350:2;17345:3;17286:67;:::i;:::-;17279:74;;17362:93;17451:3;17362:93;:::i;:::-;17480:2;17475:3;17471:12;17464:19;;17123:366;;;:::o;17495:419::-;17661:4;17699:2;17688:9;17684:18;17676:26;;17748:9;17742:4;17738:20;17734:1;17723:9;17719:17;17712:47;17776:131;17902:4;17776:131;:::i;:::-;17768:139;;17495:419;;;:::o;17920:225::-;18060:34;18056:1;18048:6;18044:14;18037:58;18129:8;18124:2;18116:6;18112:15;18105:33;17920:225;:::o;18151:366::-;18293:3;18314:67;18378:2;18373:3;18314:67;:::i;:::-;18307:74;;18390:93;18479:3;18390:93;:::i;:::-;18508:2;18503:3;18499:12;18492:19;;18151:366;;;:::o;18523:419::-;18689:4;18727:2;18716:9;18712:18;18704:26;;18776:9;18770:4;18766:20;18762:1;18751:9;18747:17;18740:47;18804:131;18930:4;18804:131;:::i;:::-;18796:139;;18523:419;;;:::o;18948:143::-;19005:5;19036:6;19030:13;19021:22;;19052:33;19079:5;19052:33;:::i;:::-;18948:143;;;;:::o;19097:351::-;19167:6;19216:2;19204:9;19195:7;19191:23;19187:32;19184:119;;;19222:79;;:::i;:::-;19184:119;19342:1;19367:64;19423:7;19414:6;19403:9;19399:22;19367:64;:::i;:::-;19357:74;;19313:128;19097:351;;;;:::o;19454:332::-;19575:4;19613:2;19602:9;19598:18;19590:26;;19626:71;19694:1;19683:9;19679:17;19670:6;19626:71;:::i;:::-;19707:72;19775:2;19764:9;19760:18;19751:6;19707:72;:::i;:::-;19454:332;;;;;:::o;19792:85::-;19837:7;19866:5;19855:16;;19792:85;;;:::o;19883:158::-;19941:9;19974:61;19992:42;20001:32;20027:5;20001:32;:::i;:::-;19992:42;:::i;:::-;19974:61;:::i;:::-;19961:74;;19883:158;;;:::o;20047:147::-;20142:45;20181:5;20142:45;:::i;:::-;20137:3;20130:58;20047:147;;:::o;20200:807::-;20449:4;20487:3;20476:9;20472:19;20464:27;;20501:71;20569:1;20558:9;20554:17;20545:6;20501:71;:::i;:::-;20582:72;20650:2;20639:9;20635:18;20626:6;20582:72;:::i;:::-;20664:80;20740:2;20729:9;20725:18;20716:6;20664:80;:::i;:::-;20754;20830:2;20819:9;20815:18;20806:6;20754:80;:::i;:::-;20844:73;20912:3;20901:9;20897:19;20888:6;20844:73;:::i;:::-;20927;20995:3;20984:9;20980:19;20971:6;20927:73;:::i;:::-;20200:807;;;;;;;;;:::o;21013:143::-;21070:5;21101:6;21095:13;21086:22;;21117:33;21144:5;21117:33;:::i;:::-;21013:143;;;;:::o;21162:663::-;21250:6;21258;21266;21315:2;21303:9;21294:7;21290:23;21286:32;21283:119;;;21321:79;;:::i;:::-;21283:119;21441:1;21466:64;21522:7;21513:6;21502:9;21498:22;21466:64;:::i;:::-;21456:74;;21412:128;21579:2;21605:64;21661:7;21652:6;21641:9;21637:22;21605:64;:::i;:::-;21595:74;;21550:129;21718:2;21744:64;21800:7;21791:6;21780:9;21776:22;21744:64;:::i;:::-;21734:74;;21689:129;21162:663;;;;;:::o;21831:223::-;21971:34;21967:1;21959:6;21955:14;21948:58;22040:6;22035:2;22027:6;22023:15;22016:31;21831:223;:::o;22060:366::-;22202:3;22223:67;22287:2;22282:3;22223:67;:::i;:::-;22216:74;;22299:93;22388:3;22299:93;:::i;:::-;22417:2;22412:3;22408:12;22401:19;;22060:366;;;:::o;22432:419::-;22598:4;22636:2;22625:9;22621:18;22613:26;;22685:9;22679:4;22675:20;22671:1;22660:9;22656:17;22649:47;22713:131;22839:4;22713:131;:::i;:::-;22705:139;;22432:419;;;:::o;22857:221::-;22997:34;22993:1;22985:6;22981:14;22974:58;23066:4;23061:2;23053:6;23049:15;23042:29;22857:221;:::o;23084:366::-;23226:3;23247:67;23311:2;23306:3;23247:67;:::i;:::-;23240:74;;23323:93;23412:3;23323:93;:::i;:::-;23441:2;23436:3;23432:12;23425:19;;23084:366;;;:::o;23456:419::-;23622:4;23660:2;23649:9;23645:18;23637:26;;23709:9;23703:4;23699:20;23695:1;23684:9;23680:17;23673:47;23737:131;23863:4;23737:131;:::i;:::-;23729:139;;23456:419;;;:::o;23881:228::-;24021:34;24017:1;24009:6;24005:14;23998:58;24090:11;24085:2;24077:6;24073:15;24066:36;23881:228;:::o;24115:366::-;24257:3;24278:67;24342:2;24337:3;24278:67;:::i;:::-;24271:74;;24354:93;24443:3;24354:93;:::i;:::-;24472:2;24467:3;24463:12;24456:19;;24115:366;;;:::o;24487:419::-;24653:4;24691:2;24680:9;24676:18;24668:26;;24740:9;24734:4;24730:20;24726:1;24715:9;24711:17;24704:47;24768:131;24894:4;24768:131;:::i;:::-;24760:139;;24487:419;;;:::o;24912:169::-;25052:21;25048:1;25040:6;25036:14;25029:45;24912:169;:::o;25087:366::-;25229:3;25250:67;25314:2;25309:3;25250:67;:::i;:::-;25243:74;;25326:93;25415:3;25326:93;:::i;:::-;25444:2;25439:3;25435:12;25428:19;;25087:366;;;:::o;25459:419::-;25625:4;25663:2;25652:9;25648:18;25640:26;;25712:9;25706:4;25702:20;25698:1;25687:9;25683:17;25676:47;25740:131;25866:4;25740:131;:::i;:::-;25732:139;;25459:419;;;:::o;25884:182::-;26024:34;26020:1;26012:6;26008:14;26001:58;25884:182;:::o;26072:366::-;26214:3;26235:67;26299:2;26294:3;26235:67;:::i;:::-;26228:74;;26311:93;26400:3;26311:93;:::i;:::-;26429:2;26424:3;26420:12;26413:19;;26072:366;;;:::o;26444:419::-;26610:4;26648:2;26637:9;26633:18;26625:26;;26697:9;26691:4;26687:20;26683:1;26672:9;26668:17;26661:47;26725:131;26851:4;26725:131;:::i;:::-;26717:139;;26444:419;;;:::o;26869:180::-;26917:77;26914:1;26907:88;27014:4;27011:1;27004:15;27038:4;27035:1;27028:15;27055:185;27095:1;27112:20;27130:1;27112:20;:::i;:::-;27107:25;;27146:20;27164:1;27146:20;:::i;:::-;27141:25;;27185:1;27175:35;;27190:18;;:::i;:::-;27175:35;27232:1;27229;27225:9;27220:14;;27055:185;;;;:::o;27246:224::-;27386:34;27382:1;27374:6;27370:14;27363:58;27455:7;27450:2;27442:6;27438:15;27431:32;27246:224;:::o;27476:366::-;27618:3;27639:67;27703:2;27698:3;27639:67;:::i;:::-;27632:74;;27715:93;27804:3;27715:93;:::i;:::-;27833:2;27828:3;27824:12;27817:19;;27476:366;;;:::o;27848:419::-;28014:4;28052:2;28041:9;28037:18;28029:26;;28101:9;28095:4;28091:20;28087:1;28076:9;28072:17;28065:47;28129:131;28255:4;28129:131;:::i;:::-;28121:139;;27848:419;;;:::o;28273:222::-;28413:34;28409:1;28401:6;28397:14;28390:58;28482:5;28477:2;28469:6;28465:15;28458:30;28273:222;:::o;28501:366::-;28643:3;28664:67;28728:2;28723:3;28664:67;:::i;:::-;28657:74;;28740:93;28829:3;28740:93;:::i;:::-;28858:2;28853:3;28849:12;28842:19;;28501:366;;;:::o;28873:419::-;29039:4;29077:2;29066:9;29062:18;29054:26;;29126:9;29120:4;29116:20;29112:1;29101:9;29097:17;29090:47;29154:131;29280:4;29154:131;:::i;:::-;29146:139;;28873:419;;;:::o;29298:225::-;29438:34;29434:1;29426:6;29422:14;29415:58;29507:8;29502:2;29494:6;29490:15;29483:33;29298:225;:::o;29529:366::-;29671:3;29692:67;29756:2;29751:3;29692:67;:::i;:::-;29685:74;;29768:93;29857:3;29768:93;:::i;:::-;29886:2;29881:3;29877:12;29870:19;;29529:366;;;:::o;29901:419::-;30067:4;30105:2;30094:9;30090:18;30082:26;;30154:9;30148:4;30144:20;30140:1;30129:9;30125:17;30118:47;30182:131;30308:4;30182:131;:::i;:::-;30174:139;;29901:419;;;:::o;30326:180::-;30374:77;30371:1;30364:88;30471:4;30468:1;30461:15;30495:4;30492:1;30485:15;30512:180;30560:77;30557:1;30550:88;30657:4;30654:1;30647:15;30681:4;30678:1;30671:15;30698:114;30765:6;30799:5;30793:12;30783:22;;30698:114;;;:::o;30818:184::-;30917:11;30951:6;30946:3;30939:19;30991:4;30986:3;30982:14;30967:29;;30818:184;;;;:::o;31008:132::-;31075:4;31098:3;31090:11;;31128:4;31123:3;31119:14;31111:22;;31008:132;;;:::o;31146:108::-;31223:24;31241:5;31223:24;:::i;:::-;31218:3;31211:37;31146:108;;:::o;31260:179::-;31329:10;31350:46;31392:3;31384:6;31350:46;:::i;:::-;31428:4;31423:3;31419:14;31405:28;;31260:179;;;;:::o;31445:113::-;31515:4;31547;31542:3;31538:14;31530:22;;31445:113;;;:::o;31594:732::-;31713:3;31742:54;31790:5;31742:54;:::i;:::-;31812:86;31891:6;31886:3;31812:86;:::i;:::-;31805:93;;31922:56;31972:5;31922:56;:::i;:::-;32001:7;32032:1;32017:284;32042:6;32039:1;32036:13;32017:284;;;32118:6;32112:13;32145:63;32204:3;32189:13;32145:63;:::i;:::-;32138:70;;32231:60;32284:6;32231:60;:::i;:::-;32221:70;;32077:224;32064:1;32061;32057:9;32052:14;;32017:284;;;32021:14;32317:3;32310:10;;31718:608;;;31594:732;;;;:::o;32332:831::-;32595:4;32633:3;32622:9;32618:19;32610:27;;32647:71;32715:1;32704:9;32700:17;32691:6;32647:71;:::i;:::-;32728:80;32804:2;32793:9;32789:18;32780:6;32728:80;:::i;:::-;32855:9;32849:4;32845:20;32840:2;32829:9;32825:18;32818:48;32883:108;32986:4;32977:6;32883:108;:::i;:::-;32875:116;;33001:72;33069:2;33058:9;33054:18;33045:6;33001:72;:::i;:::-;33083:73;33151:3;33140:9;33136:19;33127:6;33083:73;:::i;:::-;32332:831;;;;;;;;:::o;33169:179::-;33309:31;33305:1;33297:6;33293:14;33286:55;33169:179;:::o;33354:366::-;33496:3;33517:67;33581:2;33576:3;33517:67;:::i;:::-;33510:74;;33593:93;33682:3;33593:93;:::i;:::-;33711:2;33706:3;33702:12;33695:19;;33354:366;;;:::o;33726:419::-;33892:4;33930:2;33919:9;33915:18;33907:26;;33979:9;33973:4;33969:20;33965:1;33954:9;33950:17;33943:47;34007:131;34133:4;34007:131;:::i;:::-;33999:139;;33726:419;;;:::o;34151:147::-;34252:11;34289:3;34274:18;;34151:147;;;;:::o;34304:114::-;;:::o;34424:398::-;34583:3;34604:83;34685:1;34680:3;34604:83;:::i;:::-;34597:90;;34696:93;34785:3;34696:93;:::i;:::-;34814:1;34809:3;34805:11;34798:18;;34424:398;;;:::o;34828:379::-;35012:3;35034:147;35177:3;35034:147;:::i;:::-;35027:154;;35198:3;35191:10;;34828:379;;;:::o;35213:245::-;35353:34;35349:1;35341:6;35337:14;35330:58;35422:28;35417:2;35409:6;35405:15;35398:53;35213:245;:::o;35464:366::-;35606:3;35627:67;35691:2;35686:3;35627:67;:::i;:::-;35620:74;;35703:93;35792:3;35703:93;:::i;:::-;35821:2;35816:3;35812:12;35805:19;;35464:366;;;:::o;35836:419::-;36002:4;36040:2;36029:9;36025:18;36017:26;;36089:9;36083:4;36079:20;36075:1;36064:9;36060:17;36053:47;36117:131;36243:4;36117:131;:::i;:::-;36109:139;;35836:419;;;:::o

Swarm Source

ipfs://6e7ffabf090dc006446834aebfc9683094beadd1e6daede2fb61d0150e40dd0a
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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