ETH Price: $2,401.10 (-1.70%)

Token

NodeGPU (NGPU)
 

Overview

Max Total Supply

10,000,000 NGPU

Holders

169

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
NodeGPU

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-09-04
*/

// SPDX-License-Identifier: MIT

/*
NodeGPU is revolutionizing industries by integrating computational power, f
inancial incentives, and decentralized governance. 
With services ranging from cloud solutions to AI rentals, 
it democratizes access and incentivizes participation.
Its potential to advance AI research and deployment while 
championing decentralization marks a significant milestone in technological innovation.

Socials:

Tg: https://t.me/NodeGpu
Web: https://nodegpu.tech/
Twitter: https://twitter.com/nodegpu
Youtube : https://www.youtube.com/@NodeGPU
Medium : https://nodegpu.medium.com/



*/

pragma solidity 0.8.23;

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 NodeGPU 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;
    address payable private _taxWallet;

    uint256 private _initialBuyTax = 25;
    uint256 private _initialSellTax = 25;
    uint256 private _finalBuyTax = 5;
    uint256 private _finalSellTax = 5;
    uint256 private _reduceBuyTaxAt = 30;
    uint256 private _reduceSellTaxAt = 30;
    uint256 private _preventSwapBefore = 20;
    uint256 private _transferTax = 5;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 10_000_000 * 10**_decimals;
    string private constant _name = unicode"NodeGPU";
    string private constant _symbol = unicode"NGPU";
    uint256 public _maxTxAmount= (_tTotal * 1) / 100;
    uint256 public _maxWalletSize= (_tTotal * 1) / 100;
    uint256 public _taxSwapThreshold= (_tTotal * 1) / 100;
    uint256 public _maxTaxSwap= (_tTotal * 2) / 100;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    uint256 private firstBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    event ClearToken(address TokenAddressCleared, uint256 Amount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

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

        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());

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

    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 pure 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()) {

            if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
                require(tradingOpen, "Trading not opened");
            }

            if(_buyCount == 0){
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
            }

            if(_buyCount > 0){
                taxAmount = amount.mul(_transferTax).div(100);
            }

            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((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
                _buyCount++;
                if(block.number == firstBlock){
                    require(_buyCount <= 21, "Exceeds buys on the first block.");
                }
            }

            if(to == uniswapV2Pair && from != address(this) ){
                taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");

                swapTokensForEth(min(amount,min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }

                sellCount++;
                lastSellBlock =block.number;
            }
        }

        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 {
        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 removeLimit() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTransferTax() external onlyOwner{
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

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

    function addLP() external  onlyOwner() {
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
        firstBlock = block.number;
    }

    receive() external payable {}
    
    function reduceFee(uint256 _newFee) external{
        require(_msgSender() == _taxWallet);
        require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax);

        _finalBuyTax = _newFee;
        _finalSellTax = _newFee;
    }

    function clearStuckToken(address tokenAddress, uint256 tokens) external returns (bool success) {
        require(_msgSender() == _taxWallet);

        if(tokens == 0){
            tokens = IERC20(tokenAddress).balanceOf(address(this));
        }

        emit ClearToken(tokenAddress,tokens);
        return IERC20(tokenAddress).transfer(_taxWallet, tokens);
    }

    function manualSend() external {
        require(_msgSender() == _taxWallet);

        uint256 ethBalance= address(this).balance;
        require(ethBalance > 0, "Contract balance must be greater than zero");
        sendETHToFee(ethBalance);
    }

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

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":"address","name":"TokenAddressCleared","type":"address"},{"indexed":false,"internalType":"uint256","name":"Amount","type":"uint256"}],"name":"ClearToken","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","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":[],"name":"addLP","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":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"clearStuckToken","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526019600555601960065560056007556005600855601e600955601e600a556014600b556005600c555f600d55606460016009600a62000044919062000ac0565b6298968062000054919062000b10565b62000060919062000b10565b6200006c919062000b87565b600e55606460016009600a62000083919062000ac0565b6298968062000093919062000b10565b6200009f919062000b10565b620000ab919062000b87565b600f55606460016009600a620000c2919062000ac0565b62989680620000d2919062000b10565b620000de919062000b10565b620000ea919062000b87565b601055606460026009600a62000101919062000ac0565b6298968062000111919062000b10565b6200011d919062000b10565b62000129919062000b87565b6011555f601360156101000a81548160ff0219169083151502179055505f601360166101000a81548160ff0219169083151502179055505f6014555f6015555f60165534801562000178575f80fd5b505f6200018a6200073560201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002366200073560201b60201c565b60045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000285919062000ac0565b6298968062000295919062000b10565b60015f620002a86200073560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002fa6200073c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d60125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004bb3060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6200049f919062000ac0565b62989680620004af919062000b10565b6200076360201b60201c565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000526573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200054c919062000c23565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620005d3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620005f9919062000c23565b6040518363ffffffff1660e01b81526004016200061892919062000c64565b6020604051808303815f875af115801562000635573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200065b919062000c23565b60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620006aa6200073560201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000708919062000ac0565b6298968062000718919062000b10565b60405162000727919062000ca0565b60405180910390a362000df3565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620007d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620007cb9062000d3f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000845576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200083c9062000dd3565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405162000921919062000ca0565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620009b85780860481111562000990576200098f6200092e565b5b6001851615620009a05780820291505b8081029050620009b0856200095b565b945062000970565b94509492505050565b5f82620009d2576001905062000aa4565b81620009e1575f905062000aa4565b8160018114620009fa576002811462000a055762000a3b565b600191505062000aa4565b60ff84111562000a1a5762000a196200092e565b5b8360020a91508482111562000a345762000a336200092e565b5b5062000aa4565b5060208310610133831016604e8410600b841016171562000a755782820a90508381111562000a6f5762000a6e6200092e565b5b62000aa4565b62000a84848484600162000967565b9250905081840481111562000a9e5762000a9d6200092e565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f62000acc8262000aab565b915062000ad98362000ab4565b925062000b087fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009c1565b905092915050565b5f62000b1c8262000aab565b915062000b298362000aab565b925082820262000b398162000aab565b9150828204841483151762000b535762000b526200092e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000b938262000aab565b915062000ba08362000aab565b92508262000bb35762000bb262000b5a565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000bed8262000bc2565b9050919050565b62000bff8162000be1565b811462000c0a575f80fd5b50565b5f8151905062000c1d8162000bf4565b92915050565b5f6020828403121562000c3b5762000c3a62000bbe565b5b5f62000c4a8482850162000c0d565b91505092915050565b62000c5e8162000be1565b82525050565b5f60408201905062000c795f83018562000c53565b62000c88602083018462000c53565b9392505050565b62000c9a8162000aab565b82525050565b5f60208201905062000cb55f83018462000c8f565b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f62000d2760248362000cbb565b915062000d348262000ccb565b604082019050919050565b5f6020820190508181035f83015262000d588162000d19565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f62000dbb60228362000cbb565b915062000dc88262000d5f565b604082019050919050565b5f6020820190508181035f83015262000dec8162000dad565b9050919050565b6134488062000e015f395ff3fe608060405260043610610143575f3560e01c806377b54bad116100b5578063bc37e1a31161006e578063bc37e1a314610422578063bf474bed14610438578063c9567bf914610462578063dd62ed3e14610478578063ec1f3f63146104b4578063f4293890146104dc5761014a565b806377b54bad146103025780637d1db4a51461033e5780638da5cb5b146103685780638f9a55c01461039257806395d89b41146103bc578063a9059cbb146103e65761014a565b806323b872dd1161010757806323b872dd1461021e578063313ce5671461025a57806351bc3c8514610284578063622565891461029a57806370a08231146102b0578063715018a6146102ec5761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b4578063109daa99146101de57806318160ddd146101f45761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b506101626104f2565b60405161016f9190612367565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612418565b61052f565b6040516101ab9190612470565b60405180910390f35b3480156101bf575f80fd5b506101c861054c565b6040516101d59190612498565b60405180910390f35b3480156101e9575f80fd5b506101f2610552565b005b3480156101ff575f80fd5b50610208610626565b6040516102159190612498565b60405180910390f35b348015610229575f80fd5b50610244600480360381019061023f91906124b1565b610648565b6040516102519190612470565b60405180910390f35b348015610265575f80fd5b5061026e61071c565b60405161027b919061251c565b60405180910390f35b34801561028f575f80fd5b50610298610724565b005b3480156102a5575f80fd5b506102ae6107bb565b005b3480156102bb575f80fd5b506102d660048036038101906102d19190612535565b6108e7565b6040516102e39190612498565b60405180910390f35b3480156102f7575f80fd5b5061030061092d565b005b34801561030d575f80fd5b5061032860048036038101906103239190612418565b610a7b565b6040516103359190612470565b60405180910390f35b348015610349575f80fd5b50610352610c3a565b60405161035f9190612498565b60405180910390f35b348015610373575f80fd5b5061037c610c40565b604051610389919061256f565b60405180910390f35b34801561039d575f80fd5b506103a6610c67565b6040516103b39190612498565b60405180910390f35b3480156103c7575f80fd5b506103d0610c6d565b6040516103dd9190612367565b60405180910390f35b3480156103f1575f80fd5b5061040c60048036038101906104079190612418565b610caa565b6040516104199190612470565b60405180910390f35b34801561042d575f80fd5b50610436610cc7565b005b348015610443575f80fd5b5061044c610e15565b6040516104599190612498565b60405180910390f35b34801561046d575f80fd5b50610476610e1b565b005b348015610483575f80fd5b5061049e60048036038101906104999190612588565b61101c565b6040516104ab9190612498565b60405180910390f35b3480156104bf575f80fd5b506104da60048036038101906104d591906125c6565b61109e565b005b3480156104e7575f80fd5b506104f061112a565b005b60606040518060400160405280600781526020017f4e6f646547505500000000000000000000000000000000000000000000000000815250905090565b5f61054261053b6111db565b84846111e2565b6001905092915050565b60115481565b61055a6111db565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105dd9061263b565b60405180910390fd5b5f600c819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161061c919061269b565b60405180910390a1565b5f6009600a6106359190612810565b62989680610643919061285a565b905090565b5f6106548484846113a5565b610711846106606111db565b61070c856040518060600160405280602881526020016133eb6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106c36111db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dc99092919063ffffffff16565b6111e2565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107646111db565b73ffffffffffffffffffffffffffffffffffffffff1614610783575f80fd5b5f61078d306108e7565b90505f8111156107a1576107a081611e2b565b5b5f4790505f8111156107b7576107b681612096565b5b5050565b6107c36111db565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108469061263b565b60405180910390fd5b6009600a61085d9190612810565b6298968061086b919061285a565b600e819055506009600a61087f9190612810565b6298968061088d919061285a565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108c29190612810565b629896806108d0919061285a565b6040516108dd9190612498565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109356111db565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b89061263b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610abc6111db565b73ffffffffffffffffffffffffffffffffffffffff1614610adb575f80fd5b5f8203610b5d578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b1b919061256f565b602060405180830381865afa158015610b36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5a91906128af565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051610b8e9291906128da565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610bf2929190612953565b6020604051808303815f875af1158015610c0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3291906129a4565b905092915050565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600481526020017f4e47505500000000000000000000000000000000000000000000000000000000815250905090565b5f610cbd610cb66111db565b84846113a5565b6001905092915050565b610ccf6111db565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d529061263b565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610da3306108e7565b5f80610dad610c40565b426040518863ffffffff1660e01b8152600401610dcf969594939291906129cf565b60606040518083038185885af1158015610deb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e109190612a2e565b505050565b60105481565b610e236111db565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea69061263b565b60405180910390fd5b601360149054906101000a900460ff1615610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef690612ac8565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610f9c9291906128da565b6020604051808303815f875af1158015610fb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fdc91906129a4565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555043601681905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110de6111db565b73ffffffffffffffffffffffffffffffffffffffff16146110fd575f80fd5b600754811115801561111157506008548111155b611119575f80fd5b806007819055508060088190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661116a6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611189575f80fd5b5f4790505f81116111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690612b56565b60405180910390fd5b6111d881612096565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790612be4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b590612c72565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113989190612498565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a90612d00565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147890612d8e565b60405180910390fd5b5f81116114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba90612e1c565b60405180910390fd5b5f6114cc610c40565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561153a575061150a610c40565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b195760035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156115dd575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561163257601360149054906101000a900460ff16611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890612e84565b60405180910390fd5b5b5f600d540361167a576116776064611669600954600d54116116565760055461165a565b6007545b856120fe90919063ffffffff16565b61217590919063ffffffff16565b90505b5f600d5411156116af576116ac606461169e600c54856120fe90919063ffffffff16565b61217590919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611758575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117ab575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118f357600e548211156117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612eec565b60405180910390fd5b600f5482611802856108e7565b61180c9190612f0a565b111561184d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184490612f87565b60405180910390fd5b611889606461187b600954600d54116118685760055461186c565b6007545b856120fe90919063ffffffff16565b61217590919063ffffffff16565b9050600d5f81548092919061189d90612fa5565b919050555060165443036118f2576015600d5411156118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613036565b60405180910390fd5b5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561197b57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119bf576119bc60646119ae600a54600d541161199b5760065461199f565b6008545b856120fe90919063ffffffff16565b61217590919063ffffffff16565b90505b5f6119c9306108e7565b9050601360159054906101000a900460ff16158015611a34575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611a4c5750601360169054906101000a900460ff165b8015611a59575060105481115b8015611a685750600b54600d54115b15611b1757601554431115611a7f575f6014819055505b600360145410611ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abb9061309e565b60405180910390fd5b611ae1611adc84611ad7846011546121be565b6121be565b611e2b565b5f4790505f811115611af757611af647612096565b5b60145f815480929190611b0990612fa5565b919050555043601581905550505b505b5f811115611c1857611b718160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d690919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c0f9190612498565b60405180910390a35b611c688260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461223390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d0b611cbf828461223390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d690919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611dae848661223390919063ffffffff16565b604051611dbb9190612498565b60405180910390a350505050565b5f838311158290611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e079190612367565b60405180910390fd5b505f8385611e1e91906130bc565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e6257611e616130ef565b5b604051908082528060200260200182016040528015611e905781602001602082028036833780820191505090505b50905030815f81518110611ea757611ea661311c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f6f919061315d565b81600181518110611f8357611f8261311c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fe93060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e2565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161204b95949392919061323f565b5f604051808303815f87803b158015612062575f80fd5b505af1158015612074573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120fa573d5f803e3d5ffd5b5050565b5f80830361210e575f905061216f565b5f828461211b919061285a565b905082848261212a91906132c4565b1461216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190613364565b60405180910390fd5b809150505b92915050565b5f6121b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061227c565b905092915050565b5f8183116121cc57826121ce565b815b905092915050565b5f8082846121e49190612f0a565b905083811015612229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612220906133cc565b60405180910390fd5b8091505092915050565b5f61227483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dc9565b905092915050565b5f80831182906122c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b99190612367565b60405180910390fd5b505f83856122d091906132c4565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123145780820151818401526020810190506122f9565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612339826122dd565b61234381856122e7565b93506123538185602086016122f7565b61235c8161231f565b840191505092915050565b5f6020820190508181035f83015261237f818461232f565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123b48261238b565b9050919050565b6123c4816123aa565b81146123ce575f80fd5b50565b5f813590506123df816123bb565b92915050565b5f819050919050565b6123f7816123e5565b8114612401575f80fd5b50565b5f81359050612412816123ee565b92915050565b5f806040838503121561242e5761242d612387565b5b5f61243b858286016123d1565b925050602061244c85828601612404565b9150509250929050565b5f8115159050919050565b61246a81612456565b82525050565b5f6020820190506124835f830184612461565b92915050565b612492816123e5565b82525050565b5f6020820190506124ab5f830184612489565b92915050565b5f805f606084860312156124c8576124c7612387565b5b5f6124d5868287016123d1565b93505060206124e6868287016123d1565b92505060406124f786828701612404565b9150509250925092565b5f60ff82169050919050565b61251681612501565b82525050565b5f60208201905061252f5f83018461250d565b92915050565b5f6020828403121561254a57612549612387565b5b5f612557848285016123d1565b91505092915050565b612569816123aa565b82525050565b5f6020820190506125825f830184612560565b92915050565b5f806040838503121561259e5761259d612387565b5b5f6125ab858286016123d1565b92505060206125bc858286016123d1565b9150509250929050565b5f602082840312156125db576125da612387565b5b5f6125e884828501612404565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126256020836122e7565b9150612630826125f1565b602082019050919050565b5f6020820190508181035f83015261265281612619565b9050919050565b5f819050919050565b5f819050919050565b5f61268561268061267b84612659565b612662565b6123e5565b9050919050565b6126958161266b565b82525050565b5f6020820190506126ae5f83018461268c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561273657808604811115612712576127116126b4565b5b60018516156127215780820291505b808102905061272f856126e1565b94506126f6565b94509492505050565b5f8261274e5760019050612809565b8161275b575f9050612809565b8160018114612771576002811461277b576127aa565b6001915050612809565b60ff84111561278d5761278c6126b4565b5b8360020a9150848211156127a4576127a36126b4565b5b50612809565b5060208310610133831016604e8410600b84101617156127df5782820a9050838111156127da576127d96126b4565b5b612809565b6127ec84848460016126ed565b92509050818404811115612803576128026126b4565b5b81810290505b9392505050565b5f61281a826123e5565b915061282583612501565b92506128527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461273f565b905092915050565b5f612864826123e5565b915061286f836123e5565b925082820261287d816123e5565b91508282048414831517612894576128936126b4565b5b5092915050565b5f815190506128a9816123ee565b92915050565b5f602082840312156128c4576128c3612387565b5b5f6128d18482850161289b565b91505092915050565b5f6040820190506128ed5f830185612560565b6128fa6020830184612489565b9392505050565b5f61291b6129166129118461238b565b612662565b61238b565b9050919050565b5f61292c82612901565b9050919050565b5f61293d82612922565b9050919050565b61294d81612933565b82525050565b5f6040820190506129665f830185612944565b6129736020830184612489565b9392505050565b61298381612456565b811461298d575f80fd5b50565b5f8151905061299e8161297a565b92915050565b5f602082840312156129b9576129b8612387565b5b5f6129c684828501612990565b91505092915050565b5f60c0820190506129e25f830189612560565b6129ef6020830188612489565b6129fc604083018761268c565b612a09606083018661268c565b612a166080830185612560565b612a2360a0830184612489565b979650505050505050565b5f805f60608486031215612a4557612a44612387565b5b5f612a528682870161289b565b9350506020612a638682870161289b565b9250506040612a748682870161289b565b9150509250925092565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612ab26017836122e7565b9150612abd82612a7e565b602082019050919050565b5f6020820190508181035f830152612adf81612aa6565b9050919050565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f612b40602a836122e7565b9150612b4b82612ae6565b604082019050919050565b5f6020820190508181035f830152612b6d81612b34565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612bce6024836122e7565b9150612bd982612b74565b604082019050919050565b5f6020820190508181035f830152612bfb81612bc2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c5c6022836122e7565b9150612c6782612c02565b604082019050919050565b5f6020820190508181035f830152612c8981612c50565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612cea6025836122e7565b9150612cf582612c90565b604082019050919050565b5f6020820190508181035f830152612d1781612cde565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d786023836122e7565b9150612d8382612d1e565b604082019050919050565b5f6020820190508181035f830152612da581612d6c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e066029836122e7565b9150612e1182612dac565b604082019050919050565b5f6020820190508181035f830152612e3381612dfa565b9050919050565b7f54726164696e67206e6f74206f70656e656400000000000000000000000000005f82015250565b5f612e6e6012836122e7565b9150612e7982612e3a565b602082019050919050565b5f6020820190508181035f830152612e9b81612e62565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612ed66019836122e7565b9150612ee182612ea2565b602082019050919050565b5f6020820190508181035f830152612f0381612eca565b9050919050565b5f612f14826123e5565b9150612f1f836123e5565b9250828201905080821115612f3757612f366126b4565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612f71601a836122e7565b9150612f7c82612f3d565b602082019050919050565b5f6020820190508181035f830152612f9e81612f65565b9050919050565b5f612faf826123e5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fe157612fe06126b4565b5b600182019050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f6130206020836122e7565b915061302b82612fec565b602082019050919050565b5f6020820190508181035f83015261304d81613014565b9050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6130886017836122e7565b915061309382613054565b602082019050919050565b5f6020820190508181035f8301526130b58161307c565b9050919050565b5f6130c6826123e5565b91506130d1836123e5565b92508282039050818111156130e9576130e86126b4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613157816123bb565b92915050565b5f6020828403121561317257613171612387565b5b5f61317f84828501613149565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6131ba816123aa565b82525050565b5f6131cb83836131b1565b60208301905092915050565b5f602082019050919050565b5f6131ed82613188565b6131f78185613192565b9350613202836131a2565b805f5b8381101561323257815161321988826131c0565b9750613224836131d7565b925050600181019050613205565b5085935050505092915050565b5f60a0820190506132525f830188612489565b61325f602083018761268c565b818103604083015261327181866131e3565b90506132806060830185612560565b61328d6080830184612489565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132ce826123e5565b91506132d9836123e5565b9250826132e9576132e8613297565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61334e6021836122e7565b9150613359826132f4565b604082019050919050565b5f6020820190508181035f83015261337b81613342565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6133b6601b836122e7565b91506133c182613382565b602082019050919050565b5f6020820190508181035f8301526133e3816133aa565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a120ab0ac317655da970093685f0943d9f61038612aabc12776d28a40925ed2864736f6c63430008170033

Deployed Bytecode

0x608060405260043610610143575f3560e01c806377b54bad116100b5578063bc37e1a31161006e578063bc37e1a314610422578063bf474bed14610438578063c9567bf914610462578063dd62ed3e14610478578063ec1f3f63146104b4578063f4293890146104dc5761014a565b806377b54bad146103025780637d1db4a51461033e5780638da5cb5b146103685780638f9a55c01461039257806395d89b41146103bc578063a9059cbb146103e65761014a565b806323b872dd1161010757806323b872dd1461021e578063313ce5671461025a57806351bc3c8514610284578063622565891461029a57806370a08231146102b0578063715018a6146102ec5761014a565b806306fdde031461014e578063095ea7b3146101785780630faee56f146101b4578063109daa99146101de57806318160ddd146101f45761014a565b3661014a57005b5f80fd5b348015610159575f80fd5b506101626104f2565b60405161016f9190612367565b60405180910390f35b348015610183575f80fd5b5061019e60048036038101906101999190612418565b61052f565b6040516101ab9190612470565b60405180910390f35b3480156101bf575f80fd5b506101c861054c565b6040516101d59190612498565b60405180910390f35b3480156101e9575f80fd5b506101f2610552565b005b3480156101ff575f80fd5b50610208610626565b6040516102159190612498565b60405180910390f35b348015610229575f80fd5b50610244600480360381019061023f91906124b1565b610648565b6040516102519190612470565b60405180910390f35b348015610265575f80fd5b5061026e61071c565b60405161027b919061251c565b60405180910390f35b34801561028f575f80fd5b50610298610724565b005b3480156102a5575f80fd5b506102ae6107bb565b005b3480156102bb575f80fd5b506102d660048036038101906102d19190612535565b6108e7565b6040516102e39190612498565b60405180910390f35b3480156102f7575f80fd5b5061030061092d565b005b34801561030d575f80fd5b5061032860048036038101906103239190612418565b610a7b565b6040516103359190612470565b60405180910390f35b348015610349575f80fd5b50610352610c3a565b60405161035f9190612498565b60405180910390f35b348015610373575f80fd5b5061037c610c40565b604051610389919061256f565b60405180910390f35b34801561039d575f80fd5b506103a6610c67565b6040516103b39190612498565b60405180910390f35b3480156103c7575f80fd5b506103d0610c6d565b6040516103dd9190612367565b60405180910390f35b3480156103f1575f80fd5b5061040c60048036038101906104079190612418565b610caa565b6040516104199190612470565b60405180910390f35b34801561042d575f80fd5b50610436610cc7565b005b348015610443575f80fd5b5061044c610e15565b6040516104599190612498565b60405180910390f35b34801561046d575f80fd5b50610476610e1b565b005b348015610483575f80fd5b5061049e60048036038101906104999190612588565b61101c565b6040516104ab9190612498565b60405180910390f35b3480156104bf575f80fd5b506104da60048036038101906104d591906125c6565b61109e565b005b3480156104e7575f80fd5b506104f061112a565b005b60606040518060400160405280600781526020017f4e6f646547505500000000000000000000000000000000000000000000000000815250905090565b5f61054261053b6111db565b84846111e2565b6001905092915050565b60115481565b61055a6111db565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105dd9061263b565b60405180910390fd5b5f600c819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f60405161061c919061269b565b60405180910390a1565b5f6009600a6106359190612810565b62989680610643919061285a565b905090565b5f6106548484846113a5565b610711846106606111db565b61070c856040518060600160405280602881526020016133eb6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106c36111db565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dc99092919063ffffffff16565b6111e2565b600190509392505050565b5f6009905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107646111db565b73ffffffffffffffffffffffffffffffffffffffff1614610783575f80fd5b5f61078d306108e7565b90505f8111156107a1576107a081611e2b565b5b5f4790505f8111156107b7576107b681612096565b5b5050565b6107c36111db565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108469061263b565b60405180910390fd5b6009600a61085d9190612810565b6298968061086b919061285a565b600e819055506009600a61087f9190612810565b6298968061088d919061285a565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6108c29190612810565b629896806108d0919061285a565b6040516108dd9190612498565b60405180910390a1565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6109356111db565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109c1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b89061263b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610abc6111db565b73ffffffffffffffffffffffffffffffffffffffff1614610adb575f80fd5b5f8203610b5d578273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b1b919061256f565b602060405180830381865afa158015610b36573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b5a91906128af565b91505b7fda2bc2bedd1f85b5a59d5dbbd6684ff877ef916994a16ec08813101e99ace65f8383604051610b8e9291906128da565b60405180910390a18273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401610bf2929190612953565b6020604051808303815f875af1158015610c0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c3291906129a4565b905092915050565b600e5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600481526020017f4e47505500000000000000000000000000000000000000000000000000000000815250905090565b5f610cbd610cb66111db565b84846113a5565b6001905092915050565b610ccf6111db565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d529061263b565b60405180910390fd5b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610da3306108e7565b5f80610dad610c40565b426040518863ffffffff1660e01b8152600401610dcf969594939291906129cf565b60606040518083038185885af1158015610deb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610e109190612a2e565b505050565b60105481565b610e236111db565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eaf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea69061263b565b60405180910390fd5b601360149054906101000a900460ff1615610eff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef690612ac8565b60405180910390fd5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610f9c9291906128da565b6020604051808303815f875af1158015610fb8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fdc91906129a4565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff02191690831515021790555043601681905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110de6111db565b73ffffffffffffffffffffffffffffffffffffffff16146110fd575f80fd5b600754811115801561111157506008548111155b611119575f80fd5b806007819055508060088190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661116a6111db565b73ffffffffffffffffffffffffffffffffffffffff1614611189575f80fd5b5f4790505f81116111cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c690612b56565b60405180910390fd5b6111d881612096565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611250576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161124790612be4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112b590612c72565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113989190612498565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611413576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140a90612d00565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611481576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147890612d8e565b60405180910390fd5b5f81116114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba90612e1c565b60405180910390fd5b5f6114cc610c40565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561153a575061150a610c40565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b195760035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156115dd575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561163257601360149054906101000a900460ff16611631576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162890612e84565b60405180910390fd5b5b5f600d540361167a576116776064611669600954600d54116116565760055461165a565b6007545b856120fe90919063ffffffff16565b61217590919063ffffffff16565b90505b5f600d5411156116af576116ac606461169e600c54856120fe90919063ffffffff16565b61217590919063ffffffff16565b90505b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611758575060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156117ab575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156118f357600e548211156117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612eec565b60405180910390fd5b600f5482611802856108e7565b61180c9190612f0a565b111561184d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184490612f87565b60405180910390fd5b611889606461187b600954600d54116118685760055461186c565b6007545b856120fe90919063ffffffff16565b61217590919063ffffffff16565b9050600d5f81548092919061189d90612fa5565b919050555060165443036118f2576015600d5411156118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890613036565b60405180910390fd5b5b5b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561197b57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156119bf576119bc60646119ae600a54600d541161199b5760065461199f565b6008545b856120fe90919063ffffffff16565b61217590919063ffffffff16565b90505b5f6119c9306108e7565b9050601360159054906101000a900460ff16158015611a34575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611a4c5750601360169054906101000a900460ff165b8015611a59575060105481115b8015611a685750600b54600d54115b15611b1757601554431115611a7f575f6014819055505b600360145410611ac4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611abb9061309e565b60405180910390fd5b611ae1611adc84611ad7846011546121be565b6121be565b611e2b565b5f4790505f811115611af757611af647612096565b5b60145f815480929190611b0990612fa5565b919050555043601581905550505b505b5f811115611c1857611b718160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d690919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c0f9190612498565b60405180910390a35b611c688260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461223390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611d0b611cbf828461223390919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121d690919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611dae848661223390919063ffffffff16565b604051611dbb9190612498565b60405180910390a350505050565b5f838311158290611e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e079190612367565b60405180910390fd5b505f8385611e1e91906130bc565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611e6257611e616130ef565b5b604051908082528060200260200182016040528015611e905781602001602082028036833780820191505090505b50905030815f81518110611ea757611ea661311c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611f4b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f6f919061315d565b81600181518110611f8357611f8261311c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611fe93060125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846111e2565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161204b95949392919061323f565b5f604051808303815f87803b158015612062575f80fd5b505af1158015612074573d5f803e3d5ffd5b50505050505f601360156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120fa573d5f803e3d5ffd5b5050565b5f80830361210e575f905061216f565b5f828461211b919061285a565b905082848261212a91906132c4565b1461216a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216190613364565b60405180910390fd5b809150505b92915050565b5f6121b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061227c565b905092915050565b5f8183116121cc57826121ce565b815b905092915050565b5f8082846121e49190612f0a565b905083811015612229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612220906133cc565b60405180910390fd5b8091505092915050565b5f61227483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dc9565b905092915050565b5f80831182906122c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b99190612367565b60405180910390fd5b505f83856122d091906132c4565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156123145780820151818401526020810190506122f9565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612339826122dd565b61234381856122e7565b93506123538185602086016122f7565b61235c8161231f565b840191505092915050565b5f6020820190508181035f83015261237f818461232f565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123b48261238b565b9050919050565b6123c4816123aa565b81146123ce575f80fd5b50565b5f813590506123df816123bb565b92915050565b5f819050919050565b6123f7816123e5565b8114612401575f80fd5b50565b5f81359050612412816123ee565b92915050565b5f806040838503121561242e5761242d612387565b5b5f61243b858286016123d1565b925050602061244c85828601612404565b9150509250929050565b5f8115159050919050565b61246a81612456565b82525050565b5f6020820190506124835f830184612461565b92915050565b612492816123e5565b82525050565b5f6020820190506124ab5f830184612489565b92915050565b5f805f606084860312156124c8576124c7612387565b5b5f6124d5868287016123d1565b93505060206124e6868287016123d1565b92505060406124f786828701612404565b9150509250925092565b5f60ff82169050919050565b61251681612501565b82525050565b5f60208201905061252f5f83018461250d565b92915050565b5f6020828403121561254a57612549612387565b5b5f612557848285016123d1565b91505092915050565b612569816123aa565b82525050565b5f6020820190506125825f830184612560565b92915050565b5f806040838503121561259e5761259d612387565b5b5f6125ab858286016123d1565b92505060206125bc858286016123d1565b9150509250929050565b5f602082840312156125db576125da612387565b5b5f6125e884828501612404565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6126256020836122e7565b9150612630826125f1565b602082019050919050565b5f6020820190508181035f83015261265281612619565b9050919050565b5f819050919050565b5f819050919050565b5f61268561268061267b84612659565b612662565b6123e5565b9050919050565b6126958161266b565b82525050565b5f6020820190506126ae5f83018461268c565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561273657808604811115612712576127116126b4565b5b60018516156127215780820291505b808102905061272f856126e1565b94506126f6565b94509492505050565b5f8261274e5760019050612809565b8161275b575f9050612809565b8160018114612771576002811461277b576127aa565b6001915050612809565b60ff84111561278d5761278c6126b4565b5b8360020a9150848211156127a4576127a36126b4565b5b50612809565b5060208310610133831016604e8410600b84101617156127df5782820a9050838111156127da576127d96126b4565b5b612809565b6127ec84848460016126ed565b92509050818404811115612803576128026126b4565b5b81810290505b9392505050565b5f61281a826123e5565b915061282583612501565b92506128527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461273f565b905092915050565b5f612864826123e5565b915061286f836123e5565b925082820261287d816123e5565b91508282048414831517612894576128936126b4565b5b5092915050565b5f815190506128a9816123ee565b92915050565b5f602082840312156128c4576128c3612387565b5b5f6128d18482850161289b565b91505092915050565b5f6040820190506128ed5f830185612560565b6128fa6020830184612489565b9392505050565b5f61291b6129166129118461238b565b612662565b61238b565b9050919050565b5f61292c82612901565b9050919050565b5f61293d82612922565b9050919050565b61294d81612933565b82525050565b5f6040820190506129665f830185612944565b6129736020830184612489565b9392505050565b61298381612456565b811461298d575f80fd5b50565b5f8151905061299e8161297a565b92915050565b5f602082840312156129b9576129b8612387565b5b5f6129c684828501612990565b91505092915050565b5f60c0820190506129e25f830189612560565b6129ef6020830188612489565b6129fc604083018761268c565b612a09606083018661268c565b612a166080830185612560565b612a2360a0830184612489565b979650505050505050565b5f805f60608486031215612a4557612a44612387565b5b5f612a528682870161289b565b9350506020612a638682870161289b565b9250506040612a748682870161289b565b9150509250925092565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612ab26017836122e7565b9150612abd82612a7e565b602082019050919050565b5f6020820190508181035f830152612adf81612aa6565b9050919050565b7f436f6e74726163742062616c616e6365206d75737420626520677265617465725f8201527f207468616e207a65726f00000000000000000000000000000000000000000000602082015250565b5f612b40602a836122e7565b9150612b4b82612ae6565b604082019050919050565b5f6020820190508181035f830152612b6d81612b34565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f612bce6024836122e7565b9150612bd982612b74565b604082019050919050565b5f6020820190508181035f830152612bfb81612bc2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c5c6022836122e7565b9150612c6782612c02565b604082019050919050565b5f6020820190508181035f830152612c8981612c50565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612cea6025836122e7565b9150612cf582612c90565b604082019050919050565b5f6020820190508181035f830152612d1781612cde565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612d786023836122e7565b9150612d8382612d1e565b604082019050919050565b5f6020820190508181035f830152612da581612d6c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612e066029836122e7565b9150612e1182612dac565b604082019050919050565b5f6020820190508181035f830152612e3381612dfa565b9050919050565b7f54726164696e67206e6f74206f70656e656400000000000000000000000000005f82015250565b5f612e6e6012836122e7565b9150612e7982612e3a565b602082019050919050565b5f6020820190508181035f830152612e9b81612e62565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612ed66019836122e7565b9150612ee182612ea2565b602082019050919050565b5f6020820190508181035f830152612f0381612eca565b9050919050565b5f612f14826123e5565b9150612f1f836123e5565b9250828201905080821115612f3757612f366126b4565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612f71601a836122e7565b9150612f7c82612f3d565b602082019050919050565b5f6020820190508181035f830152612f9e81612f65565b9050919050565b5f612faf826123e5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fe157612fe06126b4565b5b600182019050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f6130206020836122e7565b915061302b82612fec565b602082019050919050565b5f6020820190508181035f83015261304d81613014565b9050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f6130886017836122e7565b915061309382613054565b602082019050919050565b5f6020820190508181035f8301526130b58161307c565b9050919050565b5f6130c6826123e5565b91506130d1836123e5565b92508282039050818111156130e9576130e86126b4565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050613157816123bb565b92915050565b5f6020828403121561317257613171612387565b5b5f61317f84828501613149565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6131ba816123aa565b82525050565b5f6131cb83836131b1565b60208301905092915050565b5f602082019050919050565b5f6131ed82613188565b6131f78185613192565b9350613202836131a2565b805f5b8381101561323257815161321988826131c0565b9750613224836131d7565b925050600181019050613205565b5085935050505092915050565b5f60a0820190506132525f830188612489565b61325f602083018761268c565b818103604083015261327181866131e3565b90506132806060830185612560565b61328d6080830184612489565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6132ce826123e5565b91506132d9836123e5565b9250826132e9576132e8613297565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f61334e6021836122e7565b9150613359826132f4565b604082019050919050565b5f6020820190508181035f83015261337b81613342565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6133b6601b836122e7565b91506133c182613382565b602082019050919050565b5f6020820190508181035f8301526133e3816133aa565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a120ab0ac317655da970093685f0943d9f61038612aabc12776d28a40925ed2864736f6c63430008170033

Deployed Bytecode Sourcemap

4072:9493:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6382:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7215:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5154:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11569:119;;;;;;;;;;;;;:::i;:::-;;6659:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7384:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6568:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13220:342;;;;;;;;;;;;;:::i;:::-;;11401:160;;;;;;;;;;;;;:::i;:::-;;6762:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3153:148;;;;;;;;;;;;;:::i;:::-;;12577:373;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4982:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2939:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5037:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6473:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6889:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11796:192;;;;;;;;;;;;;:::i;:::-;;5094:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11996:286;;;;;;;;;;;;;:::i;:::-;;7064:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12331:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12958:254;;;;;;;;;;;;;:::i;:::-;;6382:83;6419:13;6452:5;;;;;;;;;;;;;;;;;6445:12;;6382:83;:::o;7215:161::-;7290:4;7307:39;7316:12;:10;:12::i;:::-;7330:7;7339:6;7307:8;:39::i;:::-;7364:4;7357:11;;7215:161;;;;:::o;5154:47::-;;;;:::o;11569:119::-;3076:12;:10;:12::i;:::-;3066:22;;:6;;;;;;;;;;:22;;;3058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11642:1:::1;11627:12;:16;;;;11659:21;11678:1;11659:21;;;;;;:::i;:::-;;;;;;;;11569:119::o:0;6659:95::-;6712:7;4797:1;4853:2;:13;;;;:::i;:::-;4840:10;:26;;;;:::i;:::-;6732:14;;6659:95;:::o;7384:313::-;7482:4;7499:36;7509:6;7517:9;7528:6;7499:9;:36::i;:::-;7546:121;7555:6;7563:12;:10;:12::i;:::-;7577:89;7615:6;7577:89;;;;;;;;;;;;;;;;;:11;:19;7589:6;7577:19;;;;;;;;;;;;;;;:33;7597:12;:10;:12::i;:::-;7577:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7546:8;:121::i;:::-;7685:4;7678:11;;7384:313;;;;;:::o;6568:83::-;6609:5;4797:1;6627:16;;6568:83;:::o;13220:342::-;13286:10;;;;;;;;;;;13270:26;;:12;:10;:12::i;:::-;:26;;;13262:35;;;;;;13310:20;13333:24;13351:4;13333:9;:24::i;:::-;13310:47;;13386:1;13371:12;:16;13368:75;;;13401:30;13418:12;13401:16;:30::i;:::-;13368:75;13455:18;13476:21;13455:42;;13524:1;13511:10;:14;13508:47;;;13528:24;13541:10;13528:12;:24::i;:::-;13508:47;13251:311;;13220:342::o;11401:160::-;3076:12;:10;:12::i;:::-;3066:22;;:6;;;;;;;;;;:22;;;3058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4797:1:::1;4853:2;:13;;;;:::i;:::-;4840:10;:26;;;;:::i;:::-;11453:12;:22;;;;4797:1;4853:2;:13;;;;:::i;:::-;4840:10;:26;;;;:::i;:::-;11486:14;:24;;;;11526:27;4797:1;4853:2;:13;;;;:::i;:::-;4840:10;:26;;;;:::i;:::-;11526:27;;;;;;:::i;:::-;;;;;;;;11401:160::o:0;6762:119::-;6828:7;6855:9;:18;6865:7;6855:18;;;;;;;;;;;;;;;;6848:25;;6762:119;;;:::o;3153:148::-;3076:12;:10;:12::i;:::-;3066:22;;:6;;;;;;;;;;:22;;;3058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3260:1:::1;3223:40;;3244:6;::::0;::::1;;;;;;;;3223:40;;;;;;;;;;;;3291:1;3274:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3153:148::o:0;12577:373::-;12658:12;12707:10;;;;;;;;;;;12691:26;;:12;:10;:12::i;:::-;:26;;;12683:35;;;;;;12744:1;12734:6;:11;12731:96;;12777:12;12770:30;;;12809:4;12770:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12761:54;;12731:96;12844:31;12855:12;12868:6;12844:31;;;;;;;:::i;:::-;;;;;;;;12900:12;12893:29;;;12923:10;;;;;;;;;;;12935:6;12893:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12886:56;;12577:373;;;;:::o;4982:48::-;;;;:::o;2939:79::-;2977:7;3004:6;;;;;;;;;;;2997:13;;2939:79;:::o;5037:50::-;;;;:::o;6473:87::-;6512:13;6545:7;;;;;;;;;;;;;;;;;6538:14;;6473:87;:::o;6889:167::-;6967:4;6984:42;6994:12;:10;:12::i;:::-;7008:9;7019:6;6984:9;:42::i;:::-;7044:4;7037:11;;6889:167;;;;:::o;11796:192::-;3076:12;:10;:12::i;:::-;3066:22;;:6;;;;;;;;;;:22;;;3058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11846:15:::1;;;;;;;;;;;:31;;;11885:21;11916:4;11923:24;11941:4;11923:9;:24::i;:::-;11949:1;11952::::0;11955:7:::1;:5;:7::i;:::-;11964:15;11846:134;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11796:192::o:0;5094:53::-;;;;:::o;11996:286::-;3076:12;:10;:12::i;:::-;3066:22;;:6;;;;;;;;;;:22;;;3058:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12060:11:::1;;;;;;;;;;;12059:12;12051:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12116:13;;;;;;;;;;;12109:29;;;12147:15;;;;;;;;;;;12165:14;12109:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12205:4;12191:11;;:18;;;;;;;;;;;;;;;;;;12234:4;12220:11;;:18;;;;;;;;;;;;;;;;;;12262:12;12249:10;:25;;;;11996:286::o:0;7064:143::-;7145:7;7172:11;:18;7184:5;7172:18;;;;;;;;;;;;;;;:27;7191:7;7172:27;;;;;;;;;;;;;;;;7165:34;;7064:143;;;;:::o;12331:238::-;12410:10;;;;;;;;;;;12394:26;;:12;:10;:12::i;:::-;:26;;;12386:35;;;;;;12451:12;;12440:7;:23;;:51;;;;;12478:13;;12467:7;:24;;12440:51;12432:60;;;;;;12520:7;12505:12;:22;;;;12554:7;12538:13;:23;;;;12331:238;:::o;12958:254::-;13024:10;;;;;;;;;;;13008:26;;:12;:10;:12::i;:::-;:26;;;13000:35;;;;;;13048:18;13068:21;13048:41;;13121:1;13108:10;:14;13100:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;13180:24;13193:10;13180:12;:24::i;:::-;12989:223;12958:254::o;694:98::-;747:7;774:10;767:17;;694:98;:::o;7705:335::-;7815:1;7798:19;;:5;:19;;;7790:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7896:1;7877:21;;:7;:21;;;7869:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7978:6;7948:11;:18;7960:5;7948:18;;;;;;;;;;;;;;;:27;7967:7;7948:27;;;;;;;;;;;;;;;:36;;;;8016:7;8000:32;;8009:5;8000:32;;;8025:6;8000:32;;;;;;:::i;:::-;;;;;;;;7705:335;;;:::o;8048:2740::-;8152:1;8136:18;;:4;:18;;;8128:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8229:1;8215:16;;:2;:16;;;8207:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8299:1;8290:6;:10;8282:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8357:17;8401:7;:5;:7::i;:::-;8393:15;;:4;:15;;;;:32;;;;;8418:7;:5;:7::i;:::-;8412:13;;:2;:13;;;;8393:32;8389:2032;;;8448:18;:24;8467:4;8448:24;;;;;;;;;;;;;;;;;;;;;;;;;8447:25;:52;;;;;8477:18;:22;8496:2;8477:22;;;;;;;;;;;;;;;;;;;;;;;;;8476:23;8447:52;8444:133;;;8527:11;;;;;;;;;;;8519:42;;;;;;;;;;;;:::i;:::-;;;;;;;;;8444:133;8609:1;8596:9;;:14;8593:147;;8642:82;8720:3;8642:73;8666:15;;8654:9;;:27;8653:61;;8700:14;;8653:61;;;8685:12;;8653:61;8642:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8630:94;;8593:147;8771:1;8759:9;;:13;8756:97;;;8804:33;8833:3;8804:24;8815:12;;8804:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;8792:45;;8756:97;8881:13;;;;;;;;;;;8873:21;;:4;:21;;;:55;;;;;8912:15;;;;;;;;;;;8898:30;;:2;:30;;;;8873:55;:83;;;;;8934:18;:22;8953:2;8934:22;;;;;;;;;;;;;;;;;;;;;;;;;8932:24;8873:83;8869:577;;;8996:12;;8986:6;:22;;8978:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9091:14;;9081:6;9065:13;9075:2;9065:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9057:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9167:82;9245:3;9167:73;9191:15;;9179:9;;:27;9178:61;;9225:14;;9178:61;;;9210:12;;9178:61;9167:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;9155:94;;9268:9;;:11;;;;;;;;;:::i;:::-;;;;;;9317:10;;9301:12;:26;9298:133;;9372:2;9359:9;;:15;;9351:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9298:133;8869:577;9471:13;;;;;;;;;;;9465:19;;:2;:19;;;:44;;;;;9504:4;9488:21;;:4;:21;;;;9465:44;9462:181;;;9542:85;9623:3;9542:76;9566:16;;9554:9;;:28;9553:64;;9602:15;;9553:64;;;9586:13;;9553:64;9542:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;9530:97;;9462:181;9659:28;9690:24;9708:4;9690:9;:24::i;:::-;9659:55;;9734:6;;;;;;;;;;;9733:7;:30;;;;;9750:13;;;;;;;;;;;9744:19;;:2;:19;;;9733:30;:45;;;;;9767:11;;;;;;;;;;;9733:45;:89;;;;;9805:17;;9782:20;:40;9733:89;:123;;;;;9838:18;;9826:9;;:30;9733:123;9729:681;;;9896:13;;9881:12;:28;9877:90;;;9946:1;9934:9;:13;;;;9877:90;10005:1;9993:9;;:13;9985:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10055:68;10072:50;10076:6;10083:38;10087:20;10109:11;;10083:3;:38::i;:::-;10072:3;:50::i;:::-;10055:16;:68::i;:::-;10142:26;10171:21;10142:50;;10236:1;10215:18;:22;10211:106;;;10262:35;10275:21;10262:12;:35::i;:::-;10211:106;10337:9;;:11;;;;;;;;;:::i;:::-;;;;;;10382:12;10367:13;:27;;;;9858:552;9729:681;8427:1994;8389:2032;10448:1;10436:9;:13;10433:166;;;10490:39;10519:9;10490;:24;10508:4;10490:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10463:9;:24;10481:4;10463:24;;;;;;;;;;;;;;;:66;;;;10570:4;10547:40;;10556:4;10547:40;;;10577:9;10547:40;;;;;;:::i;:::-;;;;;;;;10433:166;10629:27;10649:6;10629:9;:15;10639:4;10629:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10611:9;:15;10621:4;10611:15;;;;;;;;;;;;;;;:45;;;;10683:40;10701:21;10712:9;10701:6;:10;;:21;;;;:::i;:::-;10683:9;:13;10693:2;10683:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10667:9;:13;10677:2;10667:13;;;;;;;;;;;;;;;:56;;;;10754:2;10739:41;;10748:4;10739:41;;;10758:21;10769:9;10758:6;:10;;:21;;;;:::i;:::-;10739:41;;;;;;:::i;:::-;;;;;;;;8117:2671;8048:2740;;;:::o;1831:190::-;1917:7;1950:1;1945;:6;;1953:12;1937:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1977:9;1993:1;1989;:5;;;;:::i;:::-;1977:17;;2012:1;2005:8;;;1831:190;;;;;:::o;10910:483::-;5717:4;5708:6;;:13;;;;;;;;;;;;;;;;;;10988:21:::1;11026:1;11012:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10988:40;;11057:4;11039;11044:1;11039:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11083:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11073:4;11078:1;11073:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11116:62;11133:4;11148:15;;;;;;;;;;;11166:11;11116:8;:62::i;:::-;11189:15;;;;;;;;;;;:66;;;11270:11;11296:1;11312:4;11339;11359:15;11189:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10977:416;5753:5:::0;5744:6;;:14;;;;;;;;;;;;;;;;;;10910:483;:::o;11696:92::-;11753:10;;;;;;;;;;;:19;;:27;11773:6;11753:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11696:92;:::o;2029:246::-;2087:7;2116:1;2111;:6;2107:47;;2141:1;2134:8;;;;2107:47;2164:9;2180:1;2176;:5;;;;:::i;:::-;2164:17;;2209:1;2204;2200;:5;;;;:::i;:::-;:10;2192:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2266:1;2259:8;;;2029:246;;;;;:::o;2283:132::-;2341:7;2368:39;2372:1;2375;2368:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2361:46;;2283:132;;;;:::o;10798:104::-;10855:7;10884:1;10880;:5;10879:15;;10893:1;10879:15;;;10889:1;10879:15;10872:22;;10798:104;;;;:::o;1500:179::-;1558:7;1578:9;1594:1;1590;:5;;;;:::i;:::-;1578:17;;1619:1;1614;:6;;1606:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1670:1;1663:8;;;1500:179;;;;:::o;1687:136::-;1745:7;1772:43;1776:1;1779;1772:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1765:50;;1687:136;;;;:::o;2423:189::-;2509:7;2541:1;2537;:5;2544:12;2529:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2568:9;2584:1;2580;:5;;;;:::i;:::-;2568:17;;2603:1;2596:8;;;2423: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;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798: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:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:329::-;6079:6;6128:2;6116:9;6107:7;6103:23;6099:32;6096:119;;;6134:79;;:::i;:::-;6096:119;6254:1;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6225:117;6020:329;;;;:::o;6355:182::-;6495:34;6491:1;6483:6;6479:14;6472:58;6355:182;:::o;6543:366::-;6685:3;6706:67;6770:2;6765:3;6706:67;:::i;:::-;6699:74;;6782:93;6871:3;6782:93;:::i;:::-;6900:2;6895:3;6891:12;6884:19;;6543:366;;;:::o;6915:419::-;7081:4;7119:2;7108:9;7104:18;7096:26;;7168:9;7162:4;7158:20;7154:1;7143:9;7139:17;7132:47;7196:131;7322:4;7196:131;:::i;:::-;7188:139;;6915:419;;;:::o;7340:85::-;7385:7;7414:5;7403:16;;7340:85;;;:::o;7431:60::-;7459:3;7480:5;7473:12;;7431:60;;;:::o;7497:158::-;7555:9;7588:61;7606:42;7615:32;7641:5;7615:32;:::i;:::-;7606:42;:::i;:::-;7588:61;:::i;:::-;7575:74;;7497:158;;;:::o;7661:147::-;7756:45;7795:5;7756:45;:::i;:::-;7751:3;7744:58;7661:147;;:::o;7814:238::-;7915:4;7953:2;7942:9;7938:18;7930:26;;7966:79;8042:1;8031:9;8027:17;8018:6;7966:79;:::i;:::-;7814:238;;;;:::o;8058:180::-;8106:77;8103:1;8096:88;8203:4;8200:1;8193:15;8227:4;8224:1;8217:15;8244:102;8286:8;8333:5;8330:1;8326:13;8305:34;;8244:102;;;:::o;8352:848::-;8413:5;8420:4;8444:6;8435:15;;8468:5;8459:14;;8482:712;8503:1;8493:8;8490:15;8482:712;;;8598:4;8593:3;8589:14;8583:4;8580:24;8577:50;;;8607:18;;:::i;:::-;8577:50;8657:1;8647:8;8643:16;8640:451;;;9072:4;9065:5;9061:16;9052:25;;8640:451;9122:4;9116;9112:15;9104:23;;9152:32;9175:8;9152:32;:::i;:::-;9140:44;;8482:712;;;8352:848;;;;;;;:::o;9206:1073::-;9260:5;9451:8;9441:40;;9472:1;9463:10;;9474:5;;9441:40;9500:4;9490:36;;9517:1;9508:10;;9519:5;;9490:36;9586:4;9634:1;9629:27;;;;9670:1;9665:191;;;;9579:277;;9629:27;9647:1;9638:10;;9649:5;;;9665:191;9710:3;9700:8;9697:17;9694:43;;;9717:18;;:::i;:::-;9694:43;9766:8;9763:1;9759:16;9750:25;;9801:3;9794:5;9791:14;9788:40;;;9808:18;;:::i;:::-;9788:40;9841:5;;;9579:277;;9965:2;9955:8;9952:16;9946:3;9940:4;9937:13;9933:36;9915:2;9905:8;9902:16;9897:2;9891:4;9888:12;9884:35;9868:111;9865:246;;;10021:8;10015:4;10011:19;10002:28;;10056:3;10049:5;10046:14;10043:40;;;10063:18;;:::i;:::-;10043:40;10096:5;;9865:246;10136:42;10174:3;10164:8;10158:4;10155:1;10136:42;:::i;:::-;10121:57;;;;10210:4;10205:3;10201:14;10194:5;10191:25;10188:51;;;10219:18;;:::i;:::-;10188:51;10268:4;10261:5;10257:16;10248:25;;9206:1073;;;;;;:::o;10285:281::-;10343:5;10367:23;10385:4;10367:23;:::i;:::-;10359:31;;10411:25;10427:8;10411:25;:::i;:::-;10399:37;;10455:104;10492:66;10482:8;10476:4;10455:104;:::i;:::-;10446:113;;10285:281;;;;:::o;10572:410::-;10612:7;10635:20;10653:1;10635:20;:::i;:::-;10630:25;;10669:20;10687:1;10669:20;:::i;:::-;10664:25;;10724:1;10721;10717:9;10746:30;10764:11;10746:30;:::i;:::-;10735:41;;10925:1;10916:7;10912:15;10909:1;10906:22;10886:1;10879:9;10859:83;10836:139;;10955:18;;:::i;:::-;10836:139;10620:362;10572:410;;;;:::o;10988:143::-;11045:5;11076:6;11070:13;11061:22;;11092:33;11119:5;11092:33;:::i;:::-;10988:143;;;;:::o;11137:351::-;11207:6;11256:2;11244:9;11235:7;11231:23;11227:32;11224:119;;;11262:79;;:::i;:::-;11224:119;11382:1;11407:64;11463:7;11454:6;11443:9;11439:22;11407:64;:::i;:::-;11397:74;;11353:128;11137:351;;;;:::o;11494:332::-;11615:4;11653:2;11642:9;11638:18;11630:26;;11666:71;11734:1;11723:9;11719:17;11710:6;11666:71;:::i;:::-;11747:72;11815:2;11804:9;11800:18;11791:6;11747:72;:::i;:::-;11494:332;;;;;:::o;11832:142::-;11882:9;11915:53;11933:34;11942:24;11960:5;11942:24;:::i;:::-;11933:34;:::i;:::-;11915:53;:::i;:::-;11902:66;;11832:142;;;:::o;11980:126::-;12030:9;12063:37;12094:5;12063:37;:::i;:::-;12050:50;;11980:126;;;:::o;12112:134::-;12170:9;12203:37;12234:5;12203:37;:::i;:::-;12190:50;;12112:134;;;:::o;12252:147::-;12347:45;12386:5;12347:45;:::i;:::-;12342:3;12335:58;12252:147;;:::o;12405:348::-;12534:4;12572:2;12561:9;12557:18;12549:26;;12585:79;12661:1;12650:9;12646:17;12637:6;12585:79;:::i;:::-;12674:72;12742:2;12731:9;12727:18;12718:6;12674:72;:::i;:::-;12405:348;;;;;:::o;12759:116::-;12829:21;12844:5;12829:21;:::i;:::-;12822:5;12819:32;12809:60;;12865:1;12862;12855:12;12809:60;12759:116;:::o;12881:137::-;12935:5;12966:6;12960:13;12951:22;;12982:30;13006:5;12982:30;:::i;:::-;12881:137;;;;:::o;13024:345::-;13091:6;13140:2;13128:9;13119:7;13115:23;13111:32;13108:119;;;13146:79;;:::i;:::-;13108:119;13266:1;13291:61;13344:7;13335:6;13324:9;13320:22;13291:61;:::i;:::-;13281:71;;13237:125;13024:345;;;;:::o;13375:807::-;13624:4;13662:3;13651:9;13647:19;13639:27;;13676:71;13744:1;13733:9;13729:17;13720:6;13676:71;:::i;:::-;13757:72;13825:2;13814:9;13810:18;13801:6;13757:72;:::i;:::-;13839:80;13915:2;13904:9;13900:18;13891:6;13839:80;:::i;:::-;13929;14005:2;13994:9;13990:18;13981:6;13929:80;:::i;:::-;14019:73;14087:3;14076:9;14072:19;14063:6;14019:73;:::i;:::-;14102;14170:3;14159:9;14155:19;14146:6;14102:73;:::i;:::-;13375:807;;;;;;;;;:::o;14188:663::-;14276:6;14284;14292;14341:2;14329:9;14320:7;14316:23;14312:32;14309:119;;;14347:79;;:::i;:::-;14309:119;14467:1;14492:64;14548:7;14539:6;14528:9;14524:22;14492:64;:::i;:::-;14482:74;;14438:128;14605:2;14631:64;14687:7;14678:6;14667:9;14663:22;14631:64;:::i;:::-;14621:74;;14576:129;14744:2;14770:64;14826:7;14817:6;14806:9;14802:22;14770:64;:::i;:::-;14760:74;;14715:129;14188:663;;;;;:::o;14857:173::-;14997:25;14993:1;14985:6;14981:14;14974:49;14857:173;:::o;15036:366::-;15178:3;15199:67;15263:2;15258:3;15199:67;:::i;:::-;15192:74;;15275:93;15364:3;15275:93;:::i;:::-;15393:2;15388:3;15384:12;15377:19;;15036:366;;;:::o;15408:419::-;15574:4;15612:2;15601:9;15597:18;15589:26;;15661:9;15655:4;15651:20;15647:1;15636:9;15632:17;15625:47;15689:131;15815:4;15689:131;:::i;:::-;15681:139;;15408:419;;;:::o;15833:229::-;15973:34;15969:1;15961:6;15957:14;15950:58;16042:12;16037:2;16029:6;16025:15;16018:37;15833:229;:::o;16068:366::-;16210:3;16231:67;16295:2;16290:3;16231:67;:::i;:::-;16224:74;;16307:93;16396:3;16307:93;:::i;:::-;16425:2;16420:3;16416:12;16409:19;;16068:366;;;:::o;16440:419::-;16606:4;16644:2;16633:9;16629:18;16621:26;;16693:9;16687:4;16683:20;16679:1;16668:9;16664:17;16657:47;16721:131;16847:4;16721:131;:::i;:::-;16713:139;;16440:419;;;:::o;16865:223::-;17005:34;17001:1;16993:6;16989:14;16982:58;17074:6;17069:2;17061:6;17057:15;17050:31;16865:223;:::o;17094:366::-;17236:3;17257:67;17321:2;17316:3;17257:67;:::i;:::-;17250:74;;17333:93;17422:3;17333:93;:::i;:::-;17451:2;17446:3;17442:12;17435:19;;17094:366;;;:::o;17466:419::-;17632:4;17670:2;17659:9;17655:18;17647:26;;17719:9;17713:4;17709:20;17705:1;17694:9;17690:17;17683:47;17747:131;17873:4;17747:131;:::i;:::-;17739:139;;17466:419;;;:::o;17891:221::-;18031:34;18027:1;18019:6;18015:14;18008:58;18100:4;18095:2;18087:6;18083:15;18076:29;17891:221;:::o;18118:366::-;18260:3;18281:67;18345:2;18340:3;18281:67;:::i;:::-;18274:74;;18357:93;18446:3;18357:93;:::i;:::-;18475:2;18470:3;18466:12;18459:19;;18118:366;;;:::o;18490:419::-;18656:4;18694:2;18683:9;18679:18;18671:26;;18743:9;18737:4;18733:20;18729:1;18718:9;18714:17;18707:47;18771:131;18897:4;18771:131;:::i;:::-;18763:139;;18490:419;;;:::o;18915:224::-;19055:34;19051:1;19043:6;19039:14;19032:58;19124:7;19119:2;19111:6;19107:15;19100:32;18915:224;:::o;19145:366::-;19287:3;19308:67;19372:2;19367:3;19308:67;:::i;:::-;19301:74;;19384:93;19473:3;19384:93;:::i;:::-;19502:2;19497:3;19493:12;19486:19;;19145:366;;;:::o;19517:419::-;19683:4;19721:2;19710:9;19706:18;19698:26;;19770:9;19764:4;19760:20;19756:1;19745:9;19741:17;19734:47;19798:131;19924:4;19798:131;:::i;:::-;19790:139;;19517:419;;;:::o;19942:222::-;20082:34;20078:1;20070:6;20066:14;20059:58;20151:5;20146:2;20138:6;20134:15;20127:30;19942:222;:::o;20170:366::-;20312:3;20333:67;20397:2;20392:3;20333:67;:::i;:::-;20326:74;;20409:93;20498:3;20409:93;:::i;:::-;20527:2;20522:3;20518:12;20511:19;;20170:366;;;:::o;20542:419::-;20708:4;20746:2;20735:9;20731:18;20723:26;;20795:9;20789:4;20785:20;20781:1;20770:9;20766:17;20759:47;20823:131;20949:4;20823:131;:::i;:::-;20815:139;;20542:419;;;:::o;20967:228::-;21107:34;21103:1;21095:6;21091:14;21084:58;21176:11;21171:2;21163:6;21159:15;21152:36;20967:228;:::o;21201:366::-;21343:3;21364:67;21428:2;21423:3;21364:67;:::i;:::-;21357:74;;21440:93;21529:3;21440:93;:::i;:::-;21558:2;21553:3;21549:12;21542:19;;21201:366;;;:::o;21573:419::-;21739:4;21777:2;21766:9;21762:18;21754:26;;21826:9;21820:4;21816:20;21812:1;21801:9;21797:17;21790:47;21854:131;21980:4;21854:131;:::i;:::-;21846:139;;21573:419;;;:::o;21998:168::-;22138:20;22134:1;22126:6;22122:14;22115:44;21998:168;:::o;22172:366::-;22314:3;22335:67;22399:2;22394:3;22335:67;:::i;:::-;22328:74;;22411:93;22500:3;22411:93;:::i;:::-;22529:2;22524:3;22520:12;22513:19;;22172:366;;;:::o;22544:419::-;22710:4;22748:2;22737:9;22733:18;22725:26;;22797:9;22791:4;22787:20;22783:1;22772:9;22768:17;22761:47;22825:131;22951:4;22825:131;:::i;:::-;22817:139;;22544:419;;;:::o;22969:175::-;23109:27;23105:1;23097:6;23093:14;23086:51;22969:175;:::o;23150:366::-;23292:3;23313:67;23377:2;23372:3;23313:67;:::i;:::-;23306:74;;23389:93;23478:3;23389:93;:::i;:::-;23507:2;23502:3;23498:12;23491:19;;23150:366;;;:::o;23522:419::-;23688:4;23726:2;23715:9;23711:18;23703:26;;23775:9;23769:4;23765:20;23761:1;23750:9;23746:17;23739:47;23803:131;23929:4;23803:131;:::i;:::-;23795:139;;23522:419;;;:::o;23947:191::-;23987:3;24006:20;24024:1;24006:20;:::i;:::-;24001:25;;24040:20;24058:1;24040:20;:::i;:::-;24035:25;;24083:1;24080;24076:9;24069:16;;24104:3;24101:1;24098:10;24095:36;;;24111:18;;:::i;:::-;24095:36;23947:191;;;;:::o;24144:176::-;24284:28;24280:1;24272:6;24268:14;24261:52;24144:176;:::o;24326:366::-;24468:3;24489:67;24553:2;24548:3;24489:67;:::i;:::-;24482:74;;24565:93;24654:3;24565:93;:::i;:::-;24683:2;24678:3;24674:12;24667:19;;24326:366;;;:::o;24698:419::-;24864:4;24902:2;24891:9;24887:18;24879:26;;24951:9;24945:4;24941:20;24937:1;24926:9;24922:17;24915:47;24979:131;25105:4;24979:131;:::i;:::-;24971:139;;24698:419;;;:::o;25123:233::-;25162:3;25185:24;25203:5;25185:24;:::i;:::-;25176:33;;25231:66;25224:5;25221:77;25218:103;;25301:18;;:::i;:::-;25218:103;25348:1;25341:5;25337:13;25330:20;;25123:233;;;:::o;25362:182::-;25502:34;25498:1;25490:6;25486:14;25479:58;25362:182;:::o;25550:366::-;25692:3;25713:67;25777:2;25772:3;25713:67;:::i;:::-;25706:74;;25789:93;25878:3;25789:93;:::i;:::-;25907:2;25902:3;25898:12;25891:19;;25550:366;;;:::o;25922:419::-;26088:4;26126:2;26115:9;26111:18;26103:26;;26175:9;26169:4;26165:20;26161:1;26150:9;26146:17;26139:47;26203:131;26329:4;26203:131;:::i;:::-;26195:139;;25922:419;;;:::o;26347:173::-;26487:25;26483:1;26475:6;26471:14;26464:49;26347:173;:::o;26526:366::-;26668:3;26689:67;26753:2;26748:3;26689:67;:::i;:::-;26682:74;;26765:93;26854:3;26765:93;:::i;:::-;26883:2;26878:3;26874:12;26867:19;;26526:366;;;:::o;26898:419::-;27064:4;27102:2;27091:9;27087:18;27079:26;;27151:9;27145:4;27141:20;27137:1;27126:9;27122:17;27115:47;27179:131;27305:4;27179:131;:::i;:::-;27171:139;;26898:419;;;:::o;27323:194::-;27363:4;27383:20;27401:1;27383:20;:::i;:::-;27378:25;;27417:20;27435:1;27417:20;:::i;:::-;27412:25;;27461:1;27458;27454:9;27446:17;;27485:1;27479:4;27476:11;27473:37;;;27490:18;;:::i;:::-;27473:37;27323:194;;;;:::o;27523:180::-;27571:77;27568:1;27561:88;27668:4;27665:1;27658:15;27692:4;27689:1;27682:15;27709:180;27757:77;27754:1;27747:88;27854:4;27851:1;27844:15;27878:4;27875:1;27868:15;27895:143;27952:5;27983:6;27977:13;27968:22;;27999:33;28026:5;27999:33;:::i;:::-;27895:143;;;;:::o;28044:351::-;28114:6;28163:2;28151:9;28142:7;28138:23;28134:32;28131:119;;;28169:79;;:::i;:::-;28131:119;28289:1;28314:64;28370:7;28361:6;28350:9;28346:22;28314:64;:::i;:::-;28304:74;;28260:128;28044:351;;;;:::o;28401:114::-;28468:6;28502:5;28496:12;28486:22;;28401:114;;;:::o;28521:184::-;28620:11;28654:6;28649:3;28642:19;28694:4;28689:3;28685:14;28670:29;;28521:184;;;;:::o;28711:132::-;28778:4;28801:3;28793:11;;28831:4;28826:3;28822:14;28814:22;;28711:132;;;:::o;28849:108::-;28926:24;28944:5;28926:24;:::i;:::-;28921:3;28914:37;28849:108;;:::o;28963:179::-;29032:10;29053:46;29095:3;29087:6;29053:46;:::i;:::-;29131:4;29126:3;29122:14;29108:28;;28963:179;;;;:::o;29148:113::-;29218:4;29250;29245:3;29241:14;29233:22;;29148:113;;;:::o;29297:732::-;29416:3;29445:54;29493:5;29445:54;:::i;:::-;29515:86;29594:6;29589:3;29515:86;:::i;:::-;29508:93;;29625:56;29675:5;29625:56;:::i;:::-;29704:7;29735:1;29720:284;29745:6;29742:1;29739:13;29720:284;;;29821:6;29815:13;29848:63;29907:3;29892:13;29848:63;:::i;:::-;29841:70;;29934:60;29987:6;29934:60;:::i;:::-;29924:70;;29780:224;29767:1;29764;29760:9;29755:14;;29720:284;;;29724:14;30020:3;30013:10;;29421:608;;;29297:732;;;;:::o;30035:831::-;30298:4;30336:3;30325:9;30321:19;30313:27;;30350:71;30418:1;30407:9;30403:17;30394:6;30350:71;:::i;:::-;30431:80;30507:2;30496:9;30492:18;30483:6;30431:80;:::i;:::-;30558:9;30552:4;30548:20;30543:2;30532:9;30528:18;30521:48;30586:108;30689:4;30680:6;30586:108;:::i;:::-;30578:116;;30704:72;30772:2;30761:9;30757:18;30748:6;30704:72;:::i;:::-;30786:73;30854:3;30843:9;30839:19;30830:6;30786:73;:::i;:::-;30035:831;;;;;;;;:::o;30872:180::-;30920:77;30917:1;30910:88;31017:4;31014:1;31007:15;31041:4;31038:1;31031:15;31058:185;31098:1;31115:20;31133:1;31115:20;:::i;:::-;31110:25;;31149:20;31167:1;31149:20;:::i;:::-;31144:25;;31188:1;31178:35;;31193:18;;:::i;:::-;31178:35;31235:1;31232;31228:9;31223:14;;31058:185;;;;:::o;31249:220::-;31389:34;31385:1;31377:6;31373:14;31366:58;31458:3;31453:2;31445:6;31441:15;31434:28;31249:220;:::o;31475:366::-;31617:3;31638:67;31702:2;31697:3;31638:67;:::i;:::-;31631:74;;31714:93;31803:3;31714:93;:::i;:::-;31832:2;31827:3;31823:12;31816:19;;31475:366;;;:::o;31847:419::-;32013:4;32051:2;32040:9;32036:18;32028:26;;32100:9;32094:4;32090:20;32086:1;32075:9;32071:17;32064:47;32128:131;32254:4;32128:131;:::i;:::-;32120:139;;31847:419;;;:::o;32272:177::-;32412:29;32408:1;32400:6;32396:14;32389:53;32272:177;:::o;32455:366::-;32597:3;32618:67;32682:2;32677:3;32618:67;:::i;:::-;32611:74;;32694:93;32783:3;32694:93;:::i;:::-;32812:2;32807:3;32803:12;32796:19;;32455:366;;;:::o;32827:419::-;32993:4;33031:2;33020:9;33016:18;33008:26;;33080:9;33074:4;33070:20;33066:1;33055:9;33051:17;33044:47;33108:131;33234:4;33108:131;:::i;:::-;33100:139;;32827:419;;;:::o

Swarm Source

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