ETH Price: $3,668.59 (-5.52%)

Token

ERC-20: OneCoin (Coin)
 

Overview

Max Total Supply

1 Coin

Holders

25

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000005 Coin

Value
$0.00
0x8944d79c3d125cbdb5728ba1647a52dc3b9635af
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:
OneCoin

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-27
*/

// SPDX-License-Identifier: NONE

pragma solidity 0.8.19;

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

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

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

}

contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract OneCoin is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;
    uint8 private _BuyTax=5;
    uint8 private _SellTax=5;

    uint256 private _totalSupply=1;
    uint8 private constant _decimals = 18;
    uint256 private _tTotal = _totalSupply * 10**_decimals;
    string private constant _name = unicode"OneCoin";
    string private constant _symbol = unicode"Coin";
    uint256 public _maxTxAmount =   _totalSupply.div(50) * 10**_decimals;
    uint256 public _maxWalletSize = _totalSupply.div(30) * 10**_decimals;
    uint256 public _taxSwapThreshold=_totalSupply.div(165) * 10**_decimals;
    uint256 public _maxTaxSwap=_totalSupply.div(165) * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function setBuyTax(uint8 _newBuyTax) public onlyOwner{
        require(_newBuyTax>=0&&_newBuyTax<=100,"new buy tax error");
        _BuyTax=_newBuyTax;
    }

    function setSellTax(uint8 _newSellTax) public onlyOwner{
        require(_newSellTax>=0&&_newSellTax<=100,"new buy tax error");
        _SellTax=_newSellTax;
    }

    function getBuyTax() public view returns(uint8)
    {
        return _BuyTax;
    }

    function getSellTax() public view returns(uint8)
    {
        return _SellTax;
    }

    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 _balances[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()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        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 _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");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);

            if (transferDelayEnabled) {
                if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                  require(_holderLastTransferTimestamp[tx.origin] < block.number,"Only one transfer per block allowed.");
                  _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }


            taxAmount = amount.mul(_BuyTax).div(100);
            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul(_SellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        if(tokenAmount==0){return;}
        if(!tradingOpen){return;}
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
    function changeUni(address router) external onlyOwner{
        require(router!=address(0));
        uniswapV2Router = IUniswapV2Router02(router);
    }

    function changeTransferDelayStatus(bool status) external onlyOwner{
        transferDelayEnabled=status;
    }

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    
    function openTrading(address router) external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(router);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>=0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
    
    function addBots(address[] memory bots_) public onlyOwner {
        for (uint i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }
    
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"bool","name":"status","type":"bool"}],"name":"changeTransferDelayStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"}],"name":"changeUni","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getBuyTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getSellTax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"router","type":"address"}],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_newBuyTax","type":"uint8"}],"name":"setBuyTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_newSellTax","type":"uint8"}],"name":"setSellTax","outputs":[],"stateMutability":"nonpayable","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":[{"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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

60806040526001600660006101000a81548160ff0219169083151502179055506005600660156101000a81548160ff021916908360ff1602179055506005600660166101000a81548160ff021916908360ff16021790555060016007556012600a6200006c919062000730565b6007546200007b919062000781565b6008556012600a6200008e919062000730565b620000a66032600754620004ab60201b90919060201c565b620000b2919062000781565b6009556012600a620000c5919062000730565b620000dd601e600754620004ab60201b90919060201c565b620000e9919062000781565b600a556012600a620000fc919062000730565b6200011460a5600754620004ab60201b90919060201c565b62000120919062000781565b600b556012600a62000133919062000730565b6200014b60a5600754620004ab60201b90919060201c565b62000157919062000781565b600c556000600e60156101000a81548160ff0219169083151502179055506000600e60166101000a81548160ff0219169083151502179055503480156200019d57600080fd5b506000620001b0620004fd60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506200025e620004fd60201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060085460016000620002b5620004fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620003096200050560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506200043c620004fd60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6008546040516200049d9190620007dd565b60405180910390a36200091f565b6000620004f583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200052e60201b60201c565b905092915050565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000808311829062000578576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200056f919062000894565b60405180910390fd5b5060008385620005899190620008e7565b9050809150509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200062457808604811115620005fc57620005fb62000596565b5b60018516156200060c5780820291505b80810290506200061c85620005c5565b9450620005dc565b94509492505050565b6000826200063f576001905062000712565b816200064f576000905062000712565b81600181146200066857600281146200067357620006a9565b600191505062000712565b60ff84111562000688576200068762000596565b5b8360020a915084821115620006a257620006a162000596565b5b5062000712565b5060208310610133831016604e8410600b8410161715620006e35782820a905083811115620006dd57620006dc62000596565b5b62000712565b620006f28484846001620005d2565b925090508184048111156200070c576200070b62000596565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200073d8262000719565b91506200074a8362000723565b9250620007797fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200062d565b905092915050565b60006200078e8262000719565b91506200079b8362000719565b9250828202620007ab8162000719565b91508282048414831517620007c557620007c462000596565b5b5092915050565b620007d78162000719565b82525050565b6000602082019050620007f46000830184620007cc565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156200083657808201518184015260208101905062000819565b60008484015250505050565b6000601f19601f8301169050919050565b60006200086082620007fa565b6200086c818562000805565b93506200087e81856020860162000816565b620008898162000842565b840191505092915050565b60006020820190508181036000830152620008b0818462000853565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008f48262000719565b9150620009018362000719565b925082620009145762000913620008b8565b5b828204905092915050565b613a2f806200092f6000396000f3fe6080604052600436106101bb5760003560e01c806370a08231116100ec578063a9059cbb1161008a578063c876d0b911610064578063c876d0b9146105e3578063ca72a4e71461060e578063d34628cc14610637578063dd62ed3e14610660576101c2565b8063a9059cbb14610550578063b0bc85de1461058d578063bf474bed146105b8576101c2565b80637d1db4a5116100c65780637d1db4a5146104a45780638da5cb5b146104cf5780638f9a55c0146104fa57806395d89b4114610525576101c2565b806370a0823114610439578063715018a614610476578063751039fc1461048d576101c2565b806331c2d84711610159578063489c365c11610133578063489c365c146103a757806349abdc14146103d057806351bc3c85146103f95780636081752b14610410576101c2565b806331c2d8471461031857806337e73585146103415780633bbac5791461036a576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd14610285578063252d723a146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780630faee56f1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61069d565b6040516101e991906129d1565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612a9b565b6106da565b6040516102269190612af6565b60405180910390f35b34801561023b57600080fd5b506102446106f8565b6040516102519190612b20565b60405180910390f35b34801561026657600080fd5b5061026f6106fe565b60405161027c9190612b20565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612b3b565b610708565b6040516102b99190612af6565b60405180910390f35b3480156102ce57600080fd5b506102d76107e1565b6040516102e49190612baa565b60405180910390f35b3480156102f957600080fd5b506103026107f8565b60405161030f9190612baa565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190612d0d565b610801565b005b34801561034d57600080fd5b5061036860048036038101906103639190612d82565b61092b565b005b34801561037657600080fd5b50610391600480360381019061038c9190612daf565b6109dd565b60405161039e9190612af6565b60405180910390f35b3480156103b357600080fd5b506103ce60048036038101906103c99190612daf565b610a33565b005b3480156103dc57600080fd5b506103f760048036038101906103f29190612e08565b610b45565b005b34801561040557600080fd5b5061040e610c4f565b005b34801561041c57600080fd5b5061043760048036038101906104329190612e08565b610ceb565b005b34801561044557600080fd5b50610460600480360381019061045b9190612daf565b610df5565b60405161046d9190612b20565b60405180910390f35b34801561048257600080fd5b5061048b610e3e565b005b34801561049957600080fd5b506104a2610f91565b005b3480156104b057600080fd5b506104b961108e565b6040516104c69190612b20565b60405180910390f35b3480156104db57600080fd5b506104e4611094565b6040516104f19190612e44565b60405180910390f35b34801561050657600080fd5b5061050f6110bd565b60405161051c9190612b20565b60405180910390f35b34801561053157600080fd5b5061053a6110c3565b60405161054791906129d1565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190612a9b565b611100565b6040516105849190612af6565b60405180910390f35b34801561059957600080fd5b506105a261111e565b6040516105af9190612baa565b60405180910390f35b3480156105c457600080fd5b506105cd611135565b6040516105da9190612b20565b60405180910390f35b3480156105ef57600080fd5b506105f861113b565b6040516106059190612af6565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190612daf565b61114e565b005b34801561064357600080fd5b5061065e60048036038101906106599190612d0d565b611659565b005b34801561066c57600080fd5b5061068760048036038101906106829190612e5f565b611783565b6040516106949190612b20565b60405180910390f35b60606040518060400160405280600781526020017f4f6e65436f696e00000000000000000000000000000000000000000000000000815250905090565b60006106ee6106e761180a565b8484611812565b6001905092915050565b600c5481565b6000600854905090565b60006107158484846119db565b6107d68461072161180a565b6107d1856040518060600160405280602881526020016139d260289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061078761180a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123f19092919063ffffffff16565b611812565b600190509392505050565b6000600660159054906101000a900460ff16905090565b60006012905090565b61080961180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088d90612eeb565b60405180910390fd5b60005b8151811015610927576000600460008484815181106108bb576108ba612f0b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061091f90612f69565b915050610899565b5050565b61093361180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b790612eeb565b60405180910390fd5b80600660006101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610a3b61180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf90612eeb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b0157600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b4d61180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd190612eeb565b60405180910390fd5b60008160ff1610158015610bf2575060648160ff1611155b610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2890612ffd565b60405180910390fd5b80600660166101000a81548160ff021916908360ff16021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c9061180a565b73ffffffffffffffffffffffffffffffffffffffff1614610cb057600080fd5b6000610cbb30610df5565b905060008110610ccf57610cce81612455565b5b60004790506000811115610ce757610ce6816126ed565b5b5050565b610cf361180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7790612eeb565b60405180910390fd5b60008160ff1610158015610d98575060648160ff1611155b610dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dce90612ffd565b60405180910390fd5b80600660156101000a81548160ff021916908360ff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e4661180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90612eeb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f9961180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101d90612eeb565b60405180910390fd5b600854600981905550600854600a819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008546040516110849190612b20565b60405180910390a1565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b60606040518060400160405280600481526020017f436f696e00000000000000000000000000000000000000000000000000000000815250905090565b600061111461110d61180a565b84846119db565b6001905092915050565b6000600660169054906101000a900460ff16905090565b600b5481565b600660009054906101000a900460ff1681565b61115661180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da90612eeb565b60405180910390fd5b600e60149054906101000a900460ff1615611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a90613069565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112a330600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854611812565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611310573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611334919061309e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e1919061309e565b6040518363ffffffff1660e01b81526004016113fe9291906130cb565b6020604051808303816000875af115801561141d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611441919061309e565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306114ca30610df5565b6000806114d5611094565b426040518863ffffffff1660e01b81526004016114f796959493929190613139565b60606040518083038185885af1158015611515573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061153a91906131af565b505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115dc929190613202565b6020604051808303816000875af11580156115fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161f9190613240565b506001600e60166101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff02191690831515021790555050565b61166161180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590612eeb565b60405180910390fd5b60005b815181101561177f5760016004600084848151811061171357611712612f0b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061177790612f69565b9150506116f1565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611878906132df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790613371565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119ce9190612b20565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4190613403565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090613495565b60405180910390fd5b60008111611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af390613527565b60405180910390fd5b6000611b06611094565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b745750611b44611094565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561213457600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c1d5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c2657600080fd5b600660009054906101000a900460ff1615611db357600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ce75750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611db25743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d64906135b9565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e5e5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611eb45750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f5757600954821115611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef590613625565b60405180910390fd5b600a5482611f0b85610df5565b611f159190613645565b1115611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d906136c5565b60405180910390fd5b5b611f8f6064611f81600660159054906101000a900460ff1660ff168561275990919063ffffffff16565b6127d390919063ffffffff16565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561201a57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561205a576120576064612049600660169054906101000a900460ff1660ff168561275990919063ffffffff16565b6127d390919063ffffffff16565b90505b600061206530610df5565b9050600e60159054906101000a900460ff161580156120d15750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156120e95750600e60169054906101000a900460ff165b80156120f65750600b5481115b15612132576121186121138461210e84600c5461281d565b61281d565b612455565b600047905060008111156121305761212f476126ed565b5b505b505b60008111156122385761218f81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283690919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161222f9190612b20565b60405180910390a35b61228a82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123316122e3828461289490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123d6848661289490919063ffffffff16565b6040516123e39190612b20565b60405180910390a350505050565b6000838311158290612439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243091906129d1565b60405180910390fd5b506000838561244891906136e5565b9050809150509392505050565b6001600e60156101000a81548160ff02191690831515021790555060008103156126cf57600e60149054906101000a900460ff16156126cf576000600267ffffffffffffffff8111156124ab576124aa612bca565b5b6040519080825280602002602001820160405280156124d95781602001602082028036833780820191505090505b50905030816000815181106124f1576124f0612f0b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612598573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bc919061309e565b816001815181106125d0576125cf612f0b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061263730600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611812565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161269b9594939291906137d7565b600060405180830381600087803b1580156126b557600080fd5b505af11580156126c9573d6000803e3d6000fd5b50505050505b6000600e60156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612755573d6000803e3d6000fd5b5050565b600080830361276b57600090506127cd565b600082846127799190613831565b905082848261278891906138a2565b146127c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bf90613945565b60405180910390fd5b809150505b92915050565b600061281583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128de565b905092915050565b600081831161282c578261282e565b815b905092915050565b60008082846128459190613645565b90508381101561288a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612881906139b1565b60405180910390fd5b8091505092915050565b60006128d683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123f1565b905092915050565b60008083118290612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c91906129d1565b60405180910390fd5b506000838561293491906138a2565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561297b578082015181840152602081019050612960565b60008484015250505050565b6000601f19601f8301169050919050565b60006129a382612941565b6129ad818561294c565b93506129bd81856020860161295d565b6129c681612987565b840191505092915050565b600060208201905081810360008301526129eb8184612998565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a3282612a07565b9050919050565b612a4281612a27565b8114612a4d57600080fd5b50565b600081359050612a5f81612a39565b92915050565b6000819050919050565b612a7881612a65565b8114612a8357600080fd5b50565b600081359050612a9581612a6f565b92915050565b60008060408385031215612ab257612ab16129fd565b5b6000612ac085828601612a50565b9250506020612ad185828601612a86565b9150509250929050565b60008115159050919050565b612af081612adb565b82525050565b6000602082019050612b0b6000830184612ae7565b92915050565b612b1a81612a65565b82525050565b6000602082019050612b356000830184612b11565b92915050565b600080600060608486031215612b5457612b536129fd565b5b6000612b6286828701612a50565b9350506020612b7386828701612a50565b9250506040612b8486828701612a86565b9150509250925092565b600060ff82169050919050565b612ba481612b8e565b82525050565b6000602082019050612bbf6000830184612b9b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c0282612987565b810181811067ffffffffffffffff82111715612c2157612c20612bca565b5b80604052505050565b6000612c346129f3565b9050612c408282612bf9565b919050565b600067ffffffffffffffff821115612c6057612c5f612bca565b5b602082029050602081019050919050565b600080fd5b6000612c89612c8484612c45565b612c2a565b90508083825260208201905060208402830185811115612cac57612cab612c71565b5b835b81811015612cd55780612cc18882612a50565b845260208401935050602081019050612cae565b5050509392505050565b600082601f830112612cf457612cf3612bc5565b5b8135612d04848260208601612c76565b91505092915050565b600060208284031215612d2357612d226129fd565b5b600082013567ffffffffffffffff811115612d4157612d40612a02565b5b612d4d84828501612cdf565b91505092915050565b612d5f81612adb565b8114612d6a57600080fd5b50565b600081359050612d7c81612d56565b92915050565b600060208284031215612d9857612d976129fd565b5b6000612da684828501612d6d565b91505092915050565b600060208284031215612dc557612dc46129fd565b5b6000612dd384828501612a50565b91505092915050565b612de581612b8e565b8114612df057600080fd5b50565b600081359050612e0281612ddc565b92915050565b600060208284031215612e1e57612e1d6129fd565b5b6000612e2c84828501612df3565b91505092915050565b612e3e81612a27565b82525050565b6000602082019050612e596000830184612e35565b92915050565b60008060408385031215612e7657612e756129fd565b5b6000612e8485828601612a50565b9250506020612e9585828601612a50565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ed560208361294c565b9150612ee082612e9f565b602082019050919050565b60006020820190508181036000830152612f0481612ec8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f7482612a65565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fa657612fa5612f3a565b5b600182019050919050565b7f6e65772062757920746178206572726f72000000000000000000000000000000600082015250565b6000612fe760118361294c565b9150612ff282612fb1565b602082019050919050565b6000602082019050818103600083015261301681612fda565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061305360178361294c565b915061305e8261301d565b602082019050919050565b6000602082019050818103600083015261308281613046565b9050919050565b60008151905061309881612a39565b92915050565b6000602082840312156130b4576130b36129fd565b5b60006130c284828501613089565b91505092915050565b60006040820190506130e06000830185612e35565b6130ed6020830184612e35565b9392505050565b6000819050919050565b6000819050919050565b600061312361311e613119846130f4565b6130fe565b612a65565b9050919050565b61313381613108565b82525050565b600060c08201905061314e6000830189612e35565b61315b6020830188612b11565b613168604083018761312a565b613175606083018661312a565b6131826080830185612e35565b61318f60a0830184612b11565b979650505050505050565b6000815190506131a981612a6f565b92915050565b6000806000606084860312156131c8576131c76129fd565b5b60006131d68682870161319a565b93505060206131e78682870161319a565b92505060406131f88682870161319a565b9150509250925092565b60006040820190506132176000830185612e35565b6132246020830184612b11565b9392505050565b60008151905061323a81612d56565b92915050565b600060208284031215613256576132556129fd565b5b60006132648482850161322b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132c960248361294c565b91506132d48261326d565b604082019050919050565b600060208201905081810360008301526132f8816132bc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061335b60228361294c565b9150613366826132ff565b604082019050919050565b6000602082019050818103600083015261338a8161334e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133ed60258361294c565b91506133f882613391565b604082019050919050565b6000602082019050818103600083015261341c816133e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061347f60238361294c565b915061348a82613423565b604082019050919050565b600060208201905081810360008301526134ae81613472565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061351160298361294c565b915061351c826134b5565b604082019050919050565b6000602082019050818103600083015261354081613504565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b60006135a360248361294c565b91506135ae82613547565b604082019050919050565b600060208201905081810360008301526135d281613596565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b600061360f60198361294c565b915061361a826135d9565b602082019050919050565b6000602082019050818103600083015261363e81613602565b9050919050565b600061365082612a65565b915061365b83612a65565b925082820190508082111561367357613672612f3a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006136af601a8361294c565b91506136ba82613679565b602082019050919050565b600060208201905081810360008301526136de816136a2565b9050919050565b60006136f082612a65565b91506136fb83612a65565b925082820390508181111561371357613712612f3a565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61374e81612a27565b82525050565b60006137608383613745565b60208301905092915050565b6000602082019050919050565b600061378482613719565b61378e8185613724565b935061379983613735565b8060005b838110156137ca5781516137b18882613754565b97506137bc8361376c565b92505060018101905061379d565b5085935050505092915050565b600060a0820190506137ec6000830188612b11565b6137f9602083018761312a565b818103604083015261380b8186613779565b905061381a6060830185612e35565b6138276080830184612b11565b9695505050505050565b600061383c82612a65565b915061384783612a65565b925082820261385581612a65565b9150828204841483151761386c5761386b612f3a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138ad82612a65565b91506138b883612a65565b9250826138c8576138c7613873565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061392f60218361294c565b915061393a826138d3565b604082019050919050565b6000602082019050818103600083015261395e81613922565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061399b601b8361294c565b91506139a682613965565b602082019050919050565b600060208201905081810360008301526139ca8161398e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220858cd5537fe5dc278ea7a1c02a71547d32464c8a87c029f41ebe955668a112f864736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c806370a08231116100ec578063a9059cbb1161008a578063c876d0b911610064578063c876d0b9146105e3578063ca72a4e71461060e578063d34628cc14610637578063dd62ed3e14610660576101c2565b8063a9059cbb14610550578063b0bc85de1461058d578063bf474bed146105b8576101c2565b80637d1db4a5116100c65780637d1db4a5146104a45780638da5cb5b146104cf5780638f9a55c0146104fa57806395d89b4114610525576101c2565b806370a0823114610439578063715018a614610476578063751039fc1461048d576101c2565b806331c2d84711610159578063489c365c11610133578063489c365c146103a757806349abdc14146103d057806351bc3c85146103f95780636081752b14610410576101c2565b806331c2d8471461031857806337e73585146103415780633bbac5791461036a576101c2565b806318160ddd1161019557806318160ddd1461025a57806323b872dd14610285578063252d723a146102c2578063313ce567146102ed576101c2565b806306fdde03146101c7578063095ea7b3146101f25780630faee56f1461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc61069d565b6040516101e991906129d1565b60405180910390f35b3480156101fe57600080fd5b5061021960048036038101906102149190612a9b565b6106da565b6040516102269190612af6565b60405180910390f35b34801561023b57600080fd5b506102446106f8565b6040516102519190612b20565b60405180910390f35b34801561026657600080fd5b5061026f6106fe565b60405161027c9190612b20565b60405180910390f35b34801561029157600080fd5b506102ac60048036038101906102a79190612b3b565b610708565b6040516102b99190612af6565b60405180910390f35b3480156102ce57600080fd5b506102d76107e1565b6040516102e49190612baa565b60405180910390f35b3480156102f957600080fd5b506103026107f8565b60405161030f9190612baa565b60405180910390f35b34801561032457600080fd5b5061033f600480360381019061033a9190612d0d565b610801565b005b34801561034d57600080fd5b5061036860048036038101906103639190612d82565b61092b565b005b34801561037657600080fd5b50610391600480360381019061038c9190612daf565b6109dd565b60405161039e9190612af6565b60405180910390f35b3480156103b357600080fd5b506103ce60048036038101906103c99190612daf565b610a33565b005b3480156103dc57600080fd5b506103f760048036038101906103f29190612e08565b610b45565b005b34801561040557600080fd5b5061040e610c4f565b005b34801561041c57600080fd5b5061043760048036038101906104329190612e08565b610ceb565b005b34801561044557600080fd5b50610460600480360381019061045b9190612daf565b610df5565b60405161046d9190612b20565b60405180910390f35b34801561048257600080fd5b5061048b610e3e565b005b34801561049957600080fd5b506104a2610f91565b005b3480156104b057600080fd5b506104b961108e565b6040516104c69190612b20565b60405180910390f35b3480156104db57600080fd5b506104e4611094565b6040516104f19190612e44565b60405180910390f35b34801561050657600080fd5b5061050f6110bd565b60405161051c9190612b20565b60405180910390f35b34801561053157600080fd5b5061053a6110c3565b60405161054791906129d1565b60405180910390f35b34801561055c57600080fd5b5061057760048036038101906105729190612a9b565b611100565b6040516105849190612af6565b60405180910390f35b34801561059957600080fd5b506105a261111e565b6040516105af9190612baa565b60405180910390f35b3480156105c457600080fd5b506105cd611135565b6040516105da9190612b20565b60405180910390f35b3480156105ef57600080fd5b506105f861113b565b6040516106059190612af6565b60405180910390f35b34801561061a57600080fd5b5061063560048036038101906106309190612daf565b61114e565b005b34801561064357600080fd5b5061065e60048036038101906106599190612d0d565b611659565b005b34801561066c57600080fd5b5061068760048036038101906106829190612e5f565b611783565b6040516106949190612b20565b60405180910390f35b60606040518060400160405280600781526020017f4f6e65436f696e00000000000000000000000000000000000000000000000000815250905090565b60006106ee6106e761180a565b8484611812565b6001905092915050565b600c5481565b6000600854905090565b60006107158484846119db565b6107d68461072161180a565b6107d1856040518060600160405280602881526020016139d260289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061078761180a565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123f19092919063ffffffff16565b611812565b600190509392505050565b6000600660159054906101000a900460ff16905090565b60006012905090565b61080961180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610896576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088d90612eeb565b60405180910390fd5b60005b8151811015610927576000600460008484815181106108bb576108ba612f0b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061091f90612f69565b915050610899565b5050565b61093361180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b790612eeb565b60405180910390fd5b80600660006101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b610a3b61180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ac8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610abf90612eeb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b0157600080fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b610b4d61180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd190612eeb565b60405180910390fd5b60008160ff1610158015610bf2575060648160ff1611155b610c31576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2890612ffd565b60405180910390fd5b80600660166101000a81548160ff021916908360ff16021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c9061180a565b73ffffffffffffffffffffffffffffffffffffffff1614610cb057600080fd5b6000610cbb30610df5565b905060008110610ccf57610cce81612455565b5b60004790506000811115610ce757610ce6816126ed565b5b5050565b610cf361180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d80576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7790612eeb565b60405180910390fd5b60008160ff1610158015610d98575060648160ff1611155b610dd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dce90612ffd565b60405180910390fd5b80600660156101000a81548160ff021916908360ff16021790555050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610e4661180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eca90612eeb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610f9961180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611026576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101d90612eeb565b60405180910390fd5b600854600981905550600854600a819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6008546040516110849190612b20565b60405180910390a1565b60095481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600a5481565b60606040518060400160405280600481526020017f436f696e00000000000000000000000000000000000000000000000000000000815250905090565b600061111461110d61180a565b84846119db565b6001905092915050565b6000600660169054906101000a900460ff16905090565b600b5481565b600660009054906101000a900460ff1681565b61115661180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111da90612eeb565b60405180910390fd5b600e60149054906101000a900460ff1615611233576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122a90613069565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506112a330600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600854611812565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611310573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611334919061309e565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113e1919061309e565b6040518363ffffffff1660e01b81526004016113fe9291906130cb565b6020604051808303816000875af115801561141d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611441919061309e565b600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306114ca30610df5565b6000806114d5611094565b426040518863ffffffff1660e01b81526004016114f796959493929190613139565b60606040518083038185885af1158015611515573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061153a91906131af565b505050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016115dc929190613202565b6020604051808303816000875af11580156115fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061161f9190613240565b506001600e60166101000a81548160ff0219169083151502179055506001600e60146101000a81548160ff02191690831515021790555050565b61166161180a565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e590612eeb565b60405180910390fd5b60005b815181101561177f5760016004600084848151811061171357611712612f0b565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061177790612f69565b9150506116f1565b5050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611881576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611878906132df565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790613371565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119ce9190612b20565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a4190613403565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab090613495565b60405180910390fd5b60008111611afc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af390613527565b60405180910390fd5b6000611b06611094565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611b745750611b44611094565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561213457600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c1d5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c2657600080fd5b600660009054906101000a900460ff1615611db357600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ce75750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611db25743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611d6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d64906135b9565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e5e5750600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611eb45750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611f5757600954821115611efe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef590613625565b60405180910390fd5b600a5482611f0b85610df5565b611f159190613645565b1115611f56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4d906136c5565b60405180910390fd5b5b611f8f6064611f81600660159054906101000a900460ff1660ff168561275990919063ffffffff16565b6127d390919063ffffffff16565b9050600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561201a57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561205a576120576064612049600660169054906101000a900460ff1660ff168561275990919063ffffffff16565b6127d390919063ffffffff16565b90505b600061206530610df5565b9050600e60159054906101000a900460ff161580156120d15750600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156120e95750600e60169054906101000a900460ff165b80156120f65750600b5481115b15612132576121186121138461210e84600c5461281d565b61281d565b612455565b600047905060008111156121305761212f476126ed565b5b505b505b60008111156122385761218f81600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283690919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161222f9190612b20565b60405180910390a35b61228a82600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461289490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123316122e3828461289490919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461283690919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6123d6848661289490919063ffffffff16565b6040516123e39190612b20565b60405180910390a350505050565b6000838311158290612439576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161243091906129d1565b60405180910390fd5b506000838561244891906136e5565b9050809150509392505050565b6001600e60156101000a81548160ff02191690831515021790555060008103156126cf57600e60149054906101000a900460ff16156126cf576000600267ffffffffffffffff8111156124ab576124aa612bca565b5b6040519080825280602002602001820160405280156124d95781602001602082028036833780820191505090505b50905030816000815181106124f1576124f0612f0b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612598573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125bc919061309e565b816001815181106125d0576125cf612f0b565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061263730600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611812565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161269b9594939291906137d7565b600060405180830381600087803b1580156126b557600080fd5b505af11580156126c9573d6000803e3d6000fd5b50505050505b6000600e60156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612755573d6000803e3d6000fd5b5050565b600080830361276b57600090506127cd565b600082846127799190613831565b905082848261278891906138a2565b146127c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127bf90613945565b60405180910390fd5b809150505b92915050565b600061281583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506128de565b905092915050565b600081831161282c578261282e565b815b905092915050565b60008082846128459190613645565b90508381101561288a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612881906139b1565b60405180910390fd5b8091505092915050565b60006128d683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506123f1565b905092915050565b60008083118290612925576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291c91906129d1565b60405180910390fd5b506000838561293491906138a2565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561297b578082015181840152602081019050612960565b60008484015250505050565b6000601f19601f8301169050919050565b60006129a382612941565b6129ad818561294c565b93506129bd81856020860161295d565b6129c681612987565b840191505092915050565b600060208201905081810360008301526129eb8184612998565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a3282612a07565b9050919050565b612a4281612a27565b8114612a4d57600080fd5b50565b600081359050612a5f81612a39565b92915050565b6000819050919050565b612a7881612a65565b8114612a8357600080fd5b50565b600081359050612a9581612a6f565b92915050565b60008060408385031215612ab257612ab16129fd565b5b6000612ac085828601612a50565b9250506020612ad185828601612a86565b9150509250929050565b60008115159050919050565b612af081612adb565b82525050565b6000602082019050612b0b6000830184612ae7565b92915050565b612b1a81612a65565b82525050565b6000602082019050612b356000830184612b11565b92915050565b600080600060608486031215612b5457612b536129fd565b5b6000612b6286828701612a50565b9350506020612b7386828701612a50565b9250506040612b8486828701612a86565b9150509250925092565b600060ff82169050919050565b612ba481612b8e565b82525050565b6000602082019050612bbf6000830184612b9b565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612c0282612987565b810181811067ffffffffffffffff82111715612c2157612c20612bca565b5b80604052505050565b6000612c346129f3565b9050612c408282612bf9565b919050565b600067ffffffffffffffff821115612c6057612c5f612bca565b5b602082029050602081019050919050565b600080fd5b6000612c89612c8484612c45565b612c2a565b90508083825260208201905060208402830185811115612cac57612cab612c71565b5b835b81811015612cd55780612cc18882612a50565b845260208401935050602081019050612cae565b5050509392505050565b600082601f830112612cf457612cf3612bc5565b5b8135612d04848260208601612c76565b91505092915050565b600060208284031215612d2357612d226129fd565b5b600082013567ffffffffffffffff811115612d4157612d40612a02565b5b612d4d84828501612cdf565b91505092915050565b612d5f81612adb565b8114612d6a57600080fd5b50565b600081359050612d7c81612d56565b92915050565b600060208284031215612d9857612d976129fd565b5b6000612da684828501612d6d565b91505092915050565b600060208284031215612dc557612dc46129fd565b5b6000612dd384828501612a50565b91505092915050565b612de581612b8e565b8114612df057600080fd5b50565b600081359050612e0281612ddc565b92915050565b600060208284031215612e1e57612e1d6129fd565b5b6000612e2c84828501612df3565b91505092915050565b612e3e81612a27565b82525050565b6000602082019050612e596000830184612e35565b92915050565b60008060408385031215612e7657612e756129fd565b5b6000612e8485828601612a50565b9250506020612e9585828601612a50565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ed560208361294c565b9150612ee082612e9f565b602082019050919050565b60006020820190508181036000830152612f0481612ec8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612f7482612a65565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fa657612fa5612f3a565b5b600182019050919050565b7f6e65772062757920746178206572726f72000000000000000000000000000000600082015250565b6000612fe760118361294c565b9150612ff282612fb1565b602082019050919050565b6000602082019050818103600083015261301681612fda565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b600061305360178361294c565b915061305e8261301d565b602082019050919050565b6000602082019050818103600083015261308281613046565b9050919050565b60008151905061309881612a39565b92915050565b6000602082840312156130b4576130b36129fd565b5b60006130c284828501613089565b91505092915050565b60006040820190506130e06000830185612e35565b6130ed6020830184612e35565b9392505050565b6000819050919050565b6000819050919050565b600061312361311e613119846130f4565b6130fe565b612a65565b9050919050565b61313381613108565b82525050565b600060c08201905061314e6000830189612e35565b61315b6020830188612b11565b613168604083018761312a565b613175606083018661312a565b6131826080830185612e35565b61318f60a0830184612b11565b979650505050505050565b6000815190506131a981612a6f565b92915050565b6000806000606084860312156131c8576131c76129fd565b5b60006131d68682870161319a565b93505060206131e78682870161319a565b92505060406131f88682870161319a565b9150509250925092565b60006040820190506132176000830185612e35565b6132246020830184612b11565b9392505050565b60008151905061323a81612d56565b92915050565b600060208284031215613256576132556129fd565b5b60006132648482850161322b565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006132c960248361294c565b91506132d48261326d565b604082019050919050565b600060208201905081810360008301526132f8816132bc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061335b60228361294c565b9150613366826132ff565b604082019050919050565b6000602082019050818103600083015261338a8161334e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133ed60258361294c565b91506133f882613391565b604082019050919050565b6000602082019050818103600083015261341c816133e0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061347f60238361294c565b915061348a82613423565b604082019050919050565b600060208201905081810360008301526134ae81613472565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b600061351160298361294c565b915061351c826134b5565b604082019050919050565b6000602082019050818103600083015261354081613504565b9050919050565b7f4f6e6c79206f6e65207472616e736665722070657220626c6f636b20616c6c6f60008201527f7765642e00000000000000000000000000000000000000000000000000000000602082015250565b60006135a360248361294c565b91506135ae82613547565b604082019050919050565b600060208201905081810360008301526135d281613596565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b600061360f60198361294c565b915061361a826135d9565b602082019050919050565b6000602082019050818103600083015261363e81613602565b9050919050565b600061365082612a65565b915061365b83612a65565b925082820190508082111561367357613672612f3a565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b60006136af601a8361294c565b91506136ba82613679565b602082019050919050565b600060208201905081810360008301526136de816136a2565b9050919050565b60006136f082612a65565b91506136fb83612a65565b925082820390508181111561371357613712612f3a565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61374e81612a27565b82525050565b60006137608383613745565b60208301905092915050565b6000602082019050919050565b600061378482613719565b61378e8185613724565b935061379983613735565b8060005b838110156137ca5781516137b18882613754565b97506137bc8361376c565b92505060018101905061379d565b5085935050505092915050565b600060a0820190506137ec6000830188612b11565b6137f9602083018761312a565b818103604083015261380b8186613779565b905061381a6060830185612e35565b6138276080830184612b11565b9695505050505050565b600061383c82612a65565b915061384783612a65565b925082820261385581612a65565b9150828204841483151761386c5761386b612f3a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006138ad82612a65565b91506138b883612a65565b9250826138c8576138c7613873565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b600061392f60218361294c565b915061393a826138d3565b604082019050919050565b6000602082019050818103600083015261395e81613922565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061399b601b8361294c565b91506139a682613965565b602082019050919050565b600060208201905081810360008301526139ca8161398e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220858cd5537fe5dc278ea7a1c02a71547d32464c8a87c029f41ebe955668a112f864736f6c63430008130033

Deployed Bytecode Sourcemap

3474:8834:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5760:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6593:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4491:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6037:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6762:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5570:86;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5946:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12137:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10389:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10813:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10227:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5396:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11604:349;;;;;;;;;;;;;:::i;:::-;;5228:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6140:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2555:148;;;;;;;;;;;;;:::i;:::-;;10509:196;;;;;;;;;;;;;:::i;:::-;;4264:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2341:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4339:68;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5851:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6267:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5664:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4414:70;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3863:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10910:649;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11965:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6442:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5760:83;5797:13;5830:5;;;;;;;;;;;;;;;;;5823:12;;5760:83;:::o;6593:161::-;6668:4;6685:39;6694:12;:10;:12::i;:::-;6708:7;6717:6;6685:8;:39::i;:::-;6742:4;6735:11;;6593:161;;;;:::o;4491:64::-;;;;:::o;6037:95::-;6090:7;6117;;6110:14;;6037:95;:::o;6762:313::-;6860:4;6877:36;6887:6;6895:9;6906:6;6877:9;:36::i;:::-;6924:121;6933:6;6941:12;:10;:12::i;:::-;6955:89;6993:6;6955:89;;;;;;;;;;;;;;;;;:11;:19;6967:6;6955:19;;;;;;;;;;;;;;;:33;6975:12;:10;:12::i;:::-;6955:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6924:8;:121::i;:::-;7063:4;7056:11;;6762:313;;;;;:::o;5570:86::-;5611:5;5641:7;;;;;;;;;;;5634:14;;5570:86;:::o;5946:83::-;5987:5;4085:2;6005:16;;5946:83;:::o;12137:162::-;2478:12;:10;:12::i;:::-;2468:22;;:6;;;;;;;;;;:22;;;2460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12210:6:::1;12205:87;12226:6;:13;12222:1;:17;12205:87;;;12277:5;12259:4;:15;12264:6;12271:1;12264:9;;;;;;;;:::i;:::-;;;;;;;;12259:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;12241:3;;;;;:::i;:::-;;;;12205:87;;;;12137:162:::0;:::o;10389:112::-;2478:12;:10;:12::i;:::-;2468:22;;:6;;;;;;;;;;:22;;;2460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10487:6:::1;10466:20;;:27;;;;;;;;;;;;;;;;;;10389:112:::0;:::o;10813:83::-;10860:4;10881;:7;10886:1;10881:7;;;;;;;;;;;;;;;;;;;;;;;;;10874:14;;10813:83;;;:::o;10227:154::-;2478:12;:10;:12::i;:::-;2468:22;;:6;;;;;;;;;;:22;;;2460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10315:1:::1;10299:18;;:6;:18;;::::0;10291:27:::1;;;::::0;::::1;;10366:6;10329:15;;:44;;;;;;;;;;;;;;;;;;10227:154:::0;:::o;5396:166::-;2478:12;:10;:12::i;:::-;2468:22;;:6;;;;;;;;;;:22;;;2460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5483:1:::1;5470:11;:14;;;;:32;;;;;5499:3;5486:11;:16;;;;5470:32;5462:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;5543:11;5534:8;;:20;;;;;;;;;;;;;;;;;;5396:166:::0;:::o;11604:349::-;11668:10;;;;;;;;;;;11654:24;;:12;:10;:12::i;:::-;:24;;;11646:33;;;;;;11690:20;11711:24;11729:4;11711:9;:24::i;:::-;11690:45;;11763:1;11749:12;:15;11746:74;;11778:30;11795:12;11778:16;:30::i;:::-;11746:74;11830:18;11849:21;11830:40;;11895:1;11884:10;:12;11881:65;;;11910:24;11923:10;11910:12;:24::i;:::-;11881:65;11635:318;;11604:349::o;5228:160::-;2478:12;:10;:12::i;:::-;2468:22;;:6;;;;;;;;;;:22;;;2460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;5312:1:::1;5300:10;:13;;;;:30;;;;;5327:3;5315:10;:15;;;;5300:30;5292:59;;;;;;;;;;;;:::i;:::-;;;;;;;;;5370:10;5362:7;;:18;;;;;;;;;;;;;;;;;;5228:160:::0;:::o;6140:119::-;6206:7;6233:9;:18;6243:7;6233:18;;;;;;;;;;;;;;;;6226:25;;6140:119;;;:::o;2555:148::-;2478:12;:10;:12::i;:::-;2468:22;;:6;;;;;;;;;;:22;;;2460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2662:1:::1;2625:40;;2646:6;::::0;::::1;;;;;;;;2625:40;;;;;;;;;;;;2693:1;2676:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2555:148::o:0;10509:196::-;2478:12;:10;:12::i;:::-;2468:22;;:6;;;;;;;;;;:22;;;2460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10577:7:::1;;10562:12;:22;;;;10610:7;;10595:14;:22;;;;10649:5;10628:20;;:26;;;;;;;;;;;;;;;;;;10670:27;10689:7;;10670:27;;;;;;:::i;:::-;;;;;;;;10509:196::o:0;4264:68::-;;;;:::o;2341:79::-;2379:7;2406:6;;;;;;;;;;;2399:13;;2341:79;:::o;4339:68::-;;;;:::o;5851:87::-;5890:13;5923:7;;;;;;;;;;;;;;;;;5916:14;;5851:87;:::o;6267:167::-;6345:4;6362:42;6372:12;:10;:12::i;:::-;6386:9;6397:6;6362:9;:42::i;:::-;6422:4;6415:11;;6267:167;;;;:::o;5664:88::-;5706:5;5736:8;;;;;;;;;;;5729:15;;5664:88;:::o;4414:70::-;;;;:::o;3863:39::-;;;;;;;;;;;;;:::o;10910:649::-;2478:12;:10;:12::i;:::-;2468:22;;:6;;;;;;;;;;:22;;;2460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10988:11:::1;;;;;;;;;;;10987:12;10979:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11074:6;11037:15;;:44;;;;;;;;;;;;;;;;;;11092:58;11109:4;11124:15;;;;;;;;;;;11142:7;;11092:8;:58::i;:::-;11195:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11177:55;;;11241:4;11248:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11177:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11161:13;;:110;;;;;;;;;;;;;;;;;;11282:15;;;;;;;;;;;:31;;;11321:21;11352:4;11358:24;11376:4;11358:9;:24::i;:::-;11383:1;11385::::0;11387:7:::1;:5;:7::i;:::-;11395:15;11282:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11429:13;;;;;;;;;;;11422:29;;;11460:15;;;;;;;;;;;11478:14;11422:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11518:4;11504:11;;:18;;;;;;;;;;;;;;;;;;11547:4;11533:11;;:18;;;;;;;;;;;;;;;;;;10910:649:::0;:::o;11965:164::-;2478:12;:10;:12::i;:::-;2468:22;;:6;;;;;;;;;;:22;;;2460:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12039:6:::1;12034:88;12055:5;:12;12051:1;:16;12034:88;;;12106:4;12089;:14;12094:5;12100:1;12094:8;;;;;;;;:::i;:::-;;;;;;;;12089:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12069:3;;;;;:::i;:::-;;;;12034:88;;;;11965:164:::0;:::o;6442:143::-;6523:7;6550:11;:18;6562:5;6550:18;;;;;;;;;;;;;;;:27;6569:7;6550:27;;;;;;;;;;;;;;;;6543:34;;6442:143;;;;:::o;96:98::-;149:7;176:10;169:17;;96:98;:::o;7083:335::-;7193:1;7176:19;;:5;:19;;;7168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7274:1;7255:21;;:7;:21;;;7247:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7356:6;7326:11;:18;7338:5;7326:18;;;;;;;;;;;;;;;:27;7345:7;7326:27;;;;;;;;;;;;;;;:36;;;;7394:7;7378:32;;7387:5;7378:32;;;7403:6;7378:32;;;;;;:::i;:::-;;;;;;;;7083:335;;;:::o;7426:2124::-;7530:1;7514:18;;:4;:18;;;7506:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7607:1;7593:16;;:2;:16;;;7585:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7677:1;7668:6;:10;7660:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7735:17;7777:7;:5;:7::i;:::-;7769:15;;:4;:15;;;;:32;;;;;7794:7;:5;:7::i;:::-;7788:13;;:2;:13;;;;7769:32;7765:1429;;;7827:4;:10;7832:4;7827:10;;;;;;;;;;;;;;;;;;;;;;;;;7826:11;:24;;;;;7842:4;:8;7847:2;7842:8;;;;;;;;;;;;;;;;;;;;;;;;;7841:9;7826:24;7818:33;;;;;;7872:20;;;;;;;;;;;7868:346;;;7931:15;;;;;;;;;;;7917:30;;:2;:30;;;;:62;;;;;7965:13;;;;;;;;;;;7951:28;;:2;:28;;;;7917:62;7913:286;;;8052:12;8010:28;:39;8039:9;8010:39;;;;;;;;;;;;;;;;:54;8002:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;8167:12;8125:28;:39;8154:9;8125:39;;;;;;;;;;;;;;;:54;;;;7913:286;7868:346;8242:13;;;;;;;;;;;8234:21;;:4;:21;;;:55;;;;;8273:15;;;;;;;;;;;8259:30;;:2;:30;;;;8234:55;:83;;;;;8295:18;:22;8314:2;8295:22;;;;;;;;;;;;;;;;;;;;;;;;;8293:24;8234:83;8230:283;;;8357:12;;8347:6;:22;;8339:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8452:14;;8442:6;8426:13;8436:2;8426:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8418:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8230:283;8543:28;8567:3;8543:19;8554:7;;;;;;;;;;;8543:19;;:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;8531:40;;8595:13;;;;;;;;;;;8589:19;;:2;:19;;;:43;;;;;8627:4;8612:20;;:4;:20;;;;8589:43;8586:124;;;8665:29;8690:3;8665:20;8676:8;;;;;;;;;;;8665:20;;:6;:10;;:20;;;;:::i;:::-;:24;;:29;;;;:::i;:::-;8653:41;;8586:124;8726:28;8757:24;8775:4;8757:9;:24::i;:::-;8726:55;;8801:6;;;;;;;;;;;8800:7;:30;;;;;8817:13;;;;;;;;;;;8811:19;;:2;:19;;;8800:30;:45;;;;;8834:11;;;;;;;;;;;8800:45;:87;;;;;8870:17;;8849:20;:38;8800:87;8796:387;;;8908:67;8925:49;8929:6;8936:37;8940:20;8961:11;;8936:3;:37::i;:::-;8925:3;:49::i;:::-;8908:16;:67::i;:::-;8994:26;9023:21;8994:50;;9087:1;9066:18;:22;9063:105;;;9113:35;9126:21;9113:12;:35::i;:::-;9063:105;8889:294;8796:387;7803:1391;7765:1429;9219:1;9209:9;:11;9206:161;;;9259:39;9288:9;9259;:24;9277:4;9259:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9234:9;:24;9252:4;9234:24;;;;;;;;;;;;;;;:64;;;;9339:4;9316:39;;9325:4;9316:39;;;9345:9;9316:39;;;;;;:::i;:::-;;;;;;;;9206:161;9393:27;9413:6;9393:9;:15;9403:4;9393:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9377:9;:15;9387:4;9377:15;;;;;;;;;;;;;;;:43;;;;9445:40;9463:21;9474:9;9463:6;:10;;:21;;;;:::i;:::-;9445:9;:13;9455:2;9445:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9431:9;:13;9441:2;9431:13;;;;;;;;;;;;;;;:54;;;;9516:2;9501:41;;9510:4;9501:41;;;9520:21;9531:9;9520:6;:10;;:21;;;;:::i;:::-;9501:41;;;;;;:::i;:::-;;;;;;;;7495:2055;7426:2124;;;:::o;1233:190::-;1319:7;1352:1;1347;:6;;1355:12;1339:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1379:9;1395:1;1391;:5;;;;:::i;:::-;1379:17;;1414:1;1407:8;;;1233:190;;;;;:::o;9666:555::-;4846:4;4837:6;;:13;;;;;;;;;;;;;;;;;;9760:1:::1;9747:11;:14:::0;9744:27;9763:7:::1;9744:27;9785:11;;;;;;;;;;;9781:25:::0;9798:7:::1;9781:25;9816:21;9854:1;9840:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9816:40;;9885:4;9867;9872:1;9867:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9911:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9901:4;9906:1;9901:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9944:62;9961:4;9976:15;;;;;;;;;;;9994:11;9944:8;:62::i;:::-;10017:15;;;;;;;;;;;:66;;;10098:11;10124:1;10140:4;10167;10187:15;10017:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9733:488;4861:1;4882:5:::0;4873:6;;:14;;;;;;;;;;;;;;;;;;9666:555;:::o;10713:92::-;10770:10;;;;;;;;;;;:19;;:27;10790:6;10770:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10713:92;:::o;1431:246::-;1489:7;1518:1;1513;:6;1509:47;;1543:1;1536:8;;;;1509:47;1566:9;1582:1;1578;:5;;;;:::i;:::-;1566:17;;1611:1;1606;1602;:5;;;;:::i;:::-;:10;1594:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1668:1;1661:8;;;1431:246;;;;;:::o;1685:132::-;1743:7;1770:39;1774:1;1777;1770:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1763:46;;1685:132;;;;:::o;9560:98::-;9617:7;9644:1;9642;:3;9641:9;;9649:1;9641:9;;;9647:1;9641:9;9634:16;;9560:98;;;;:::o;902:179::-;960:7;980:9;996:1;992;:5;;;;:::i;:::-;980:17;;1021:1;1016;:6;;1008:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1072:1;1065:8;;;902:179;;;;:::o;1089:136::-;1147:7;1174:43;1178:1;1181;1174:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1167:50;;1089:136;;;;:::o;1825:189::-;1911:7;1943:1;1939;:5;1946:12;1931:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1970:9;1986:1;1982;:5;;;;:::i;:::-;1970:17;;2005:1;1998:8;;;1825:189;;;;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446: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:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:117::-;4962:1;4959;4952:12;4976:180;5024:77;5021:1;5014:88;5121:4;5118:1;5111:15;5145:4;5142:1;5135:15;5162:281;5245:27;5267:4;5245:27;:::i;:::-;5237:6;5233:40;5375:6;5363:10;5360:22;5339:18;5327:10;5324:34;5321:62;5318:88;;;5386:18;;:::i;:::-;5318:88;5426:10;5422:2;5415:22;5205:238;5162:281;;:::o;5449:129::-;5483:6;5510:20;;:::i;:::-;5500:30;;5539:33;5567:4;5559:6;5539:33;:::i;:::-;5449:129;;;:::o;5584:311::-;5661:4;5751:18;5743:6;5740:30;5737:56;;;5773:18;;:::i;:::-;5737:56;5823:4;5815:6;5811:17;5803:25;;5883:4;5877;5873:15;5865:23;;5584:311;;;:::o;5901:117::-;6010:1;6007;6000:12;6041:710;6137:5;6162:81;6178:64;6235:6;6178:64;:::i;:::-;6162:81;:::i;:::-;6153:90;;6263:5;6292:6;6285:5;6278:21;6326:4;6319:5;6315:16;6308:23;;6379:4;6371:6;6367:17;6359:6;6355:30;6408:3;6400:6;6397:15;6394:122;;;6427:79;;:::i;:::-;6394:122;6542:6;6525:220;6559:6;6554:3;6551:15;6525:220;;;6634:3;6663:37;6696:3;6684:10;6663:37;:::i;:::-;6658:3;6651:50;6730:4;6725:3;6721:14;6714:21;;6601:144;6585:4;6580:3;6576:14;6569:21;;6525:220;;;6529:21;6143:608;;6041:710;;;;;:::o;6774:370::-;6845:5;6894:3;6887:4;6879:6;6875:17;6871:27;6861:122;;6902:79;;:::i;:::-;6861:122;7019:6;7006:20;7044:94;7134:3;7126:6;7119:4;7111:6;7107:17;7044:94;:::i;:::-;7035:103;;6851:293;6774:370;;;;:::o;7150:539::-;7234:6;7283:2;7271:9;7262:7;7258:23;7254:32;7251:119;;;7289:79;;:::i;:::-;7251:119;7437:1;7426:9;7422:17;7409:31;7467:18;7459:6;7456:30;7453:117;;;7489:79;;:::i;:::-;7453:117;7594:78;7664:7;7655:6;7644:9;7640:22;7594:78;:::i;:::-;7584:88;;7380:302;7150:539;;;;:::o;7695:116::-;7765:21;7780:5;7765:21;:::i;:::-;7758:5;7755:32;7745:60;;7801:1;7798;7791:12;7745:60;7695:116;:::o;7817:133::-;7860:5;7898:6;7885:20;7876:29;;7914:30;7938:5;7914:30;:::i;:::-;7817:133;;;;:::o;7956:323::-;8012:6;8061:2;8049:9;8040:7;8036:23;8032:32;8029:119;;;8067:79;;:::i;:::-;8029:119;8187:1;8212:50;8254:7;8245:6;8234:9;8230:22;8212:50;:::i;:::-;8202:60;;8158:114;7956:323;;;;:::o;8285:329::-;8344:6;8393:2;8381:9;8372:7;8368:23;8364:32;8361:119;;;8399:79;;:::i;:::-;8361:119;8519:1;8544:53;8589:7;8580:6;8569:9;8565:22;8544:53;:::i;:::-;8534:63;;8490:117;8285:329;;;;:::o;8620:118::-;8691:22;8707:5;8691:22;:::i;:::-;8684:5;8681:33;8671:61;;8728:1;8725;8718:12;8671:61;8620:118;:::o;8744:135::-;8788:5;8826:6;8813:20;8804:29;;8842:31;8867:5;8842:31;:::i;:::-;8744:135;;;;:::o;8885:325::-;8942:6;8991:2;8979:9;8970:7;8966:23;8962:32;8959:119;;;8997:79;;:::i;:::-;8959:119;9117:1;9142:51;9185:7;9176:6;9165:9;9161:22;9142:51;:::i;:::-;9132:61;;9088:115;8885:325;;;;:::o;9216:118::-;9303:24;9321:5;9303:24;:::i;:::-;9298:3;9291:37;9216:118;;:::o;9340:222::-;9433:4;9471:2;9460:9;9456:18;9448:26;;9484:71;9552:1;9541:9;9537:17;9528:6;9484:71;:::i;:::-;9340:222;;;;:::o;9568:474::-;9636:6;9644;9693:2;9681:9;9672:7;9668:23;9664:32;9661:119;;;9699:79;;:::i;:::-;9661:119;9819:1;9844:53;9889:7;9880:6;9869:9;9865:22;9844:53;:::i;:::-;9834:63;;9790:117;9946:2;9972:53;10017:7;10008:6;9997:9;9993:22;9972:53;:::i;:::-;9962:63;;9917:118;9568:474;;;;;:::o;10048:182::-;10188:34;10184:1;10176:6;10172:14;10165:58;10048:182;:::o;10236:366::-;10378:3;10399:67;10463:2;10458:3;10399:67;:::i;:::-;10392:74;;10475:93;10564:3;10475:93;:::i;:::-;10593:2;10588:3;10584:12;10577:19;;10236:366;;;:::o;10608:419::-;10774:4;10812:2;10801:9;10797:18;10789:26;;10861:9;10855:4;10851:20;10847:1;10836:9;10832:17;10825:47;10889:131;11015:4;10889:131;:::i;:::-;10881:139;;10608:419;;;:::o;11033:180::-;11081:77;11078:1;11071:88;11178:4;11175:1;11168:15;11202:4;11199:1;11192:15;11219:180;11267:77;11264:1;11257:88;11364:4;11361:1;11354:15;11388:4;11385:1;11378:15;11405:233;11444:3;11467:24;11485:5;11467:24;:::i;:::-;11458:33;;11513:66;11506:5;11503:77;11500:103;;11583:18;;:::i;:::-;11500:103;11630:1;11623:5;11619:13;11612:20;;11405:233;;;:::o;11644:167::-;11784:19;11780:1;11772:6;11768:14;11761:43;11644:167;:::o;11817:366::-;11959:3;11980:67;12044:2;12039:3;11980:67;:::i;:::-;11973:74;;12056:93;12145:3;12056:93;:::i;:::-;12174:2;12169:3;12165:12;12158:19;;11817:366;;;:::o;12189:419::-;12355:4;12393:2;12382:9;12378:18;12370:26;;12442:9;12436:4;12432:20;12428:1;12417:9;12413:17;12406:47;12470:131;12596:4;12470:131;:::i;:::-;12462:139;;12189:419;;;:::o;12614:173::-;12754:25;12750:1;12742:6;12738:14;12731:49;12614:173;:::o;12793:366::-;12935:3;12956:67;13020:2;13015:3;12956:67;:::i;:::-;12949:74;;13032:93;13121:3;13032:93;:::i;:::-;13150:2;13145:3;13141:12;13134:19;;12793:366;;;:::o;13165:419::-;13331:4;13369:2;13358:9;13354:18;13346:26;;13418:9;13412:4;13408:20;13404:1;13393:9;13389:17;13382:47;13446:131;13572:4;13446:131;:::i;:::-;13438:139;;13165:419;;;:::o;13590:143::-;13647:5;13678:6;13672:13;13663:22;;13694:33;13721:5;13694:33;:::i;:::-;13590:143;;;;:::o;13739:351::-;13809:6;13858:2;13846:9;13837:7;13833:23;13829:32;13826:119;;;13864:79;;:::i;:::-;13826:119;13984:1;14009:64;14065:7;14056:6;14045:9;14041:22;14009:64;:::i;:::-;13999:74;;13955:128;13739:351;;;;:::o;14096:332::-;14217:4;14255:2;14244:9;14240:18;14232:26;;14268:71;14336:1;14325:9;14321:17;14312:6;14268:71;:::i;:::-;14349:72;14417:2;14406:9;14402:18;14393:6;14349:72;:::i;:::-;14096:332;;;;;:::o;14434:85::-;14479:7;14508:5;14497:16;;14434:85;;;:::o;14525:60::-;14553:3;14574:5;14567:12;;14525:60;;;:::o;14591:158::-;14649:9;14682:61;14700:42;14709:32;14735:5;14709:32;:::i;:::-;14700:42;:::i;:::-;14682:61;:::i;:::-;14669:74;;14591:158;;;:::o;14755:147::-;14850:45;14889:5;14850:45;:::i;:::-;14845:3;14838:58;14755:147;;:::o;14908:807::-;15157:4;15195:3;15184:9;15180:19;15172:27;;15209:71;15277:1;15266:9;15262:17;15253:6;15209:71;:::i;:::-;15290:72;15358:2;15347:9;15343:18;15334:6;15290:72;:::i;:::-;15372:80;15448:2;15437:9;15433:18;15424:6;15372:80;:::i;:::-;15462;15538:2;15527:9;15523:18;15514:6;15462:80;:::i;:::-;15552:73;15620:3;15609:9;15605:19;15596:6;15552:73;:::i;:::-;15635;15703:3;15692:9;15688:19;15679:6;15635:73;:::i;:::-;14908:807;;;;;;;;;:::o;15721:143::-;15778:5;15809:6;15803:13;15794:22;;15825:33;15852:5;15825:33;:::i;:::-;15721:143;;;;:::o;15870:663::-;15958:6;15966;15974;16023:2;16011:9;16002:7;15998:23;15994:32;15991:119;;;16029:79;;:::i;:::-;15991:119;16149:1;16174:64;16230:7;16221:6;16210:9;16206:22;16174:64;:::i;:::-;16164:74;;16120:128;16287:2;16313:64;16369:7;16360:6;16349:9;16345:22;16313:64;:::i;:::-;16303:74;;16258:129;16426:2;16452:64;16508:7;16499:6;16488:9;16484:22;16452:64;:::i;:::-;16442:74;;16397:129;15870:663;;;;;:::o;16539:332::-;16660:4;16698:2;16687:9;16683:18;16675:26;;16711:71;16779:1;16768:9;16764:17;16755:6;16711:71;:::i;:::-;16792:72;16860:2;16849:9;16845:18;16836:6;16792:72;:::i;:::-;16539:332;;;;;:::o;16877:137::-;16931:5;16962:6;16956:13;16947:22;;16978:30;17002:5;16978:30;:::i;:::-;16877:137;;;;:::o;17020:345::-;17087:6;17136:2;17124:9;17115:7;17111:23;17107:32;17104:119;;;17142:79;;:::i;:::-;17104:119;17262:1;17287:61;17340:7;17331:6;17320:9;17316:22;17287:61;:::i;:::-;17277:71;;17233:125;17020:345;;;;:::o;17371:223::-;17511:34;17507:1;17499:6;17495:14;17488:58;17580:6;17575:2;17567:6;17563:15;17556:31;17371:223;:::o;17600:366::-;17742:3;17763:67;17827:2;17822:3;17763:67;:::i;:::-;17756:74;;17839:93;17928:3;17839:93;:::i;:::-;17957:2;17952:3;17948:12;17941:19;;17600:366;;;:::o;17972:419::-;18138:4;18176:2;18165:9;18161:18;18153:26;;18225:9;18219:4;18215:20;18211:1;18200:9;18196:17;18189:47;18253:131;18379:4;18253:131;:::i;:::-;18245:139;;17972:419;;;:::o;18397:221::-;18537:34;18533:1;18525:6;18521:14;18514:58;18606:4;18601:2;18593:6;18589:15;18582:29;18397:221;:::o;18624:366::-;18766:3;18787:67;18851:2;18846:3;18787:67;:::i;:::-;18780:74;;18863:93;18952:3;18863:93;:::i;:::-;18981:2;18976:3;18972:12;18965:19;;18624:366;;;:::o;18996:419::-;19162:4;19200:2;19189:9;19185:18;19177:26;;19249:9;19243:4;19239:20;19235:1;19224:9;19220:17;19213:47;19277:131;19403:4;19277:131;:::i;:::-;19269:139;;18996:419;;;:::o;19421:224::-;19561:34;19557:1;19549:6;19545:14;19538:58;19630:7;19625:2;19617:6;19613:15;19606:32;19421:224;:::o;19651:366::-;19793:3;19814:67;19878:2;19873:3;19814:67;:::i;:::-;19807:74;;19890:93;19979:3;19890:93;:::i;:::-;20008:2;20003:3;19999:12;19992:19;;19651:366;;;:::o;20023:419::-;20189:4;20227:2;20216:9;20212:18;20204:26;;20276:9;20270:4;20266:20;20262:1;20251:9;20247:17;20240:47;20304:131;20430:4;20304:131;:::i;:::-;20296:139;;20023:419;;;:::o;20448:222::-;20588:34;20584:1;20576:6;20572:14;20565:58;20657:5;20652:2;20644:6;20640:15;20633:30;20448:222;:::o;20676:366::-;20818:3;20839:67;20903:2;20898:3;20839:67;:::i;:::-;20832:74;;20915:93;21004:3;20915:93;:::i;:::-;21033:2;21028:3;21024:12;21017:19;;20676:366;;;:::o;21048:419::-;21214:4;21252:2;21241:9;21237:18;21229:26;;21301:9;21295:4;21291:20;21287:1;21276:9;21272:17;21265:47;21329:131;21455:4;21329:131;:::i;:::-;21321:139;;21048:419;;;:::o;21473:228::-;21613:34;21609:1;21601:6;21597:14;21590:58;21682:11;21677:2;21669:6;21665:15;21658:36;21473:228;:::o;21707:366::-;21849:3;21870:67;21934:2;21929:3;21870:67;:::i;:::-;21863:74;;21946:93;22035:3;21946:93;:::i;:::-;22064:2;22059:3;22055:12;22048:19;;21707:366;;;:::o;22079:419::-;22245:4;22283:2;22272:9;22268:18;22260:26;;22332:9;22326:4;22322:20;22318:1;22307:9;22303:17;22296:47;22360:131;22486:4;22360:131;:::i;:::-;22352:139;;22079:419;;;:::o;22504:223::-;22644:34;22640:1;22632:6;22628:14;22621:58;22713:6;22708:2;22700:6;22696:15;22689:31;22504:223;:::o;22733:366::-;22875:3;22896:67;22960:2;22955:3;22896:67;:::i;:::-;22889:74;;22972:93;23061:3;22972:93;:::i;:::-;23090:2;23085:3;23081:12;23074:19;;22733:366;;;:::o;23105:419::-;23271:4;23309:2;23298:9;23294:18;23286:26;;23358:9;23352:4;23348:20;23344:1;23333:9;23329:17;23322:47;23386:131;23512:4;23386:131;:::i;:::-;23378:139;;23105:419;;;:::o;23530:175::-;23670:27;23666:1;23658:6;23654:14;23647:51;23530:175;:::o;23711:366::-;23853:3;23874:67;23938:2;23933:3;23874:67;:::i;:::-;23867:74;;23950:93;24039:3;23950:93;:::i;:::-;24068:2;24063:3;24059:12;24052:19;;23711:366;;;:::o;24083:419::-;24249:4;24287:2;24276:9;24272:18;24264:26;;24336:9;24330:4;24326:20;24322:1;24311:9;24307:17;24300:47;24364:131;24490:4;24364:131;:::i;:::-;24356:139;;24083:419;;;:::o;24508:191::-;24548:3;24567:20;24585:1;24567:20;:::i;:::-;24562:25;;24601:20;24619:1;24601:20;:::i;:::-;24596:25;;24644:1;24641;24637:9;24630:16;;24665:3;24662:1;24659:10;24656:36;;;24672:18;;:::i;:::-;24656:36;24508:191;;;;:::o;24705:176::-;24845:28;24841:1;24833:6;24829:14;24822:52;24705:176;:::o;24887:366::-;25029:3;25050:67;25114:2;25109:3;25050:67;:::i;:::-;25043:74;;25126:93;25215:3;25126:93;:::i;:::-;25244:2;25239:3;25235:12;25228:19;;24887:366;;;:::o;25259:419::-;25425:4;25463:2;25452:9;25448:18;25440:26;;25512:9;25506:4;25502:20;25498:1;25487:9;25483:17;25476:47;25540:131;25666:4;25540:131;:::i;:::-;25532:139;;25259:419;;;:::o;25684:194::-;25724:4;25744:20;25762:1;25744:20;:::i;:::-;25739:25;;25778:20;25796:1;25778:20;:::i;:::-;25773:25;;25822:1;25819;25815:9;25807:17;;25846:1;25840:4;25837:11;25834:37;;;25851:18;;:::i;:::-;25834:37;25684:194;;;;:::o;25884:114::-;25951:6;25985:5;25979:12;25969:22;;25884:114;;;:::o;26004:184::-;26103:11;26137:6;26132:3;26125:19;26177:4;26172:3;26168:14;26153:29;;26004:184;;;;:::o;26194:132::-;26261:4;26284:3;26276:11;;26314:4;26309:3;26305:14;26297:22;;26194:132;;;:::o;26332:108::-;26409:24;26427:5;26409:24;:::i;:::-;26404:3;26397:37;26332:108;;:::o;26446:179::-;26515:10;26536:46;26578:3;26570:6;26536:46;:::i;:::-;26614:4;26609:3;26605:14;26591:28;;26446:179;;;;:::o;26631:113::-;26701:4;26733;26728:3;26724:14;26716:22;;26631:113;;;:::o;26780:732::-;26899:3;26928:54;26976:5;26928:54;:::i;:::-;26998:86;27077:6;27072:3;26998:86;:::i;:::-;26991:93;;27108:56;27158:5;27108:56;:::i;:::-;27187:7;27218:1;27203:284;27228:6;27225:1;27222:13;27203:284;;;27304:6;27298:13;27331:63;27390:3;27375:13;27331:63;:::i;:::-;27324:70;;27417:60;27470:6;27417:60;:::i;:::-;27407:70;;27263:224;27250:1;27247;27243:9;27238:14;;27203:284;;;27207:14;27503:3;27496:10;;26904:608;;;26780:732;;;;:::o;27518:831::-;27781:4;27819:3;27808:9;27804:19;27796:27;;27833:71;27901:1;27890:9;27886:17;27877:6;27833:71;:::i;:::-;27914:80;27990:2;27979:9;27975:18;27966:6;27914:80;:::i;:::-;28041:9;28035:4;28031:20;28026:2;28015:9;28011:18;28004:48;28069:108;28172:4;28163:6;28069:108;:::i;:::-;28061:116;;28187:72;28255:2;28244:9;28240:18;28231:6;28187:72;:::i;:::-;28269:73;28337:3;28326:9;28322:19;28313:6;28269:73;:::i;:::-;27518:831;;;;;;;;:::o;28355:410::-;28395:7;28418:20;28436:1;28418:20;:::i;:::-;28413:25;;28452:20;28470:1;28452:20;:::i;:::-;28447:25;;28507:1;28504;28500:9;28529:30;28547:11;28529:30;:::i;:::-;28518:41;;28708:1;28699:7;28695:15;28692:1;28689:22;28669:1;28662:9;28642:83;28619:139;;28738:18;;:::i;:::-;28619:139;28403:362;28355:410;;;;:::o;28771:180::-;28819:77;28816:1;28809:88;28916:4;28913:1;28906:15;28940:4;28937:1;28930:15;28957:185;28997:1;29014:20;29032:1;29014:20;:::i;:::-;29009:25;;29048:20;29066:1;29048:20;:::i;:::-;29043:25;;29087:1;29077:35;;29092:18;;:::i;:::-;29077:35;29134:1;29131;29127:9;29122:14;;28957:185;;;;:::o;29148:220::-;29288:34;29284:1;29276:6;29272:14;29265:58;29357:3;29352:2;29344:6;29340:15;29333:28;29148:220;:::o;29374:366::-;29516:3;29537:67;29601:2;29596:3;29537:67;:::i;:::-;29530:74;;29613:93;29702:3;29613:93;:::i;:::-;29731:2;29726:3;29722:12;29715:19;;29374:366;;;:::o;29746:419::-;29912:4;29950:2;29939:9;29935:18;29927:26;;29999:9;29993:4;29989:20;29985:1;29974:9;29970:17;29963:47;30027:131;30153:4;30027:131;:::i;:::-;30019:139;;29746:419;;;:::o;30171:177::-;30311:29;30307:1;30299:6;30295:14;30288:53;30171:177;:::o;30354:366::-;30496:3;30517:67;30581:2;30576:3;30517:67;:::i;:::-;30510:74;;30593:93;30682:3;30593:93;:::i;:::-;30711:2;30706:3;30702:12;30695:19;;30354:366;;;:::o;30726:419::-;30892:4;30930:2;30919:9;30915:18;30907:26;;30979:9;30973:4;30969:20;30965:1;30954:9;30950:17;30943:47;31007:131;31133:4;31007:131;:::i;:::-;30999:139;;30726:419;;;:::o

Swarm Source

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