ETH Price: $2,360.21 (+2.05%)
 

Overview

Max Total Supply

1,000,000,000 LMESH

Holders

27

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 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:
LayerMesh

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2025-06-10
*/

// SPDX-License-Identifier: MIT

/*

LayerMesh
Decentralized Intelligence. Modular Autonomy.

Build, Deploy, and Scale AI Agents on LayerMesh.

Telegram : https://t.me/LayerMesh
Website  : https://layermesh.xyz
Twitter  : https://twitter.com/LayerMesh_

*/

pragma solidity 0.8.26;

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 LayerMesh is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _amountHolding;
    mapping (address => mapping (address => uint256)) private _approvedSpender;
    mapping (address => bool) private _isFeeExempt;

    address private _taxMarketing;

    address payable private _taxFunding = payable(0x3AF896D3084DBD791a2565ae95d4d08573504243);
    
    uint256 private _buyFeePercent = 25;
    uint256 private _sellFeePercent = 25;
    
    uint8 private constant _decimals = 18;
    uint256 private constant _tSupply = 1000000000 * (10 ** _decimals);
    string private constant _name = unicode"LayerMesh";
    string private constant _symbol = unicode"LMESH";
    uint256 public walletHoldingSize = 10000000 * (10 ** _decimals);
    uint256 public txLimitAmount = 10000000 * (10 ** _decimals);
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwapProcess = false;
    
    modifier swapLock {
        inSwapProcess = true;
        _;
        inSwapProcess = false;
    }
    
    event TxLimitAmountUpdated(uint256 txLimitAmount);
    
    constructor () {
        _taxMarketing = _taxFunding;
        _amountHolding[_msgSender()] = _tSupply;
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tSupply);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
    
        emit Transfer(address(0), _msgSender(), _tSupply);
    }
    
    function name() public pure returns (string memory) {
        return _name;
    }
    
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
    
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
    
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _approvedSpender[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    
    function totalSupply() public pure override returns (uint256) {
        return _tSupply;
    }
    
    function balanceOf(address account) public view override returns (uint256) {
        return _amountHolding[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 _approvedSpender[owner][spender];
    }
    
    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");
        _approvedSpender[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
    
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            require(tradingOpen, "Trading is not started");
            require(amount <= txLimitAmount, "Transfer amount exceeds maxTxSize");
            if (from == uniswapV2Pair && to != address(uniswapV2Router)) {
                require(balanceOf(to) + amount <= walletHoldingSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul(_buyFeePercent).div(100);
            } else if (to == uniswapV2Pair) {
                taxAmount = amount.mul(_sellFeePercent).div(100);
                uint256 contractTokenBalance = balanceOf(address(this));
                if (!inSwapProcess && to == uniswapV2Pair) {
                    exchangeTokensForERC20(contractTokenBalance);
                }
            } else {
                taxAmount = 0;
            }
        }
    
        if(taxAmount > 0){
          _amountHolding[address(this)] = _amountHolding[address(this)].add(taxAmount);
          emit Transfer(from, address(this), taxAmount);
        }
        _amountHolding[from] = _amountHolding[from].sub(amount);
        _amountHolding[to] = _amountHolding[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }
    
    function findSmaller(uint256 a, uint256 b) private pure returns (uint256){
      return (a > b) ? b : a;
    }
    
    function exchangeTokensForERC20(uint256 tokenAmount) private swapLock {
        if(tokenAmount == 0){ return; }
        if(tokenAmount > txLimitAmount) {
            tokenAmount = txLimitAmount;
        }
        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,
            _taxMarketing,
            block.timestamp
        );
    }
    
    function distributeERC20ForFees(uint256 amount) private {
        payable(_taxMarketing).transfer(amount);
    }

    function updateBuyFeePercent(uint256 newBuyFeePercent) external onlyOwner {
        _buyFeePercent = newBuyFeePercent;
    }

    function updateSellFeePercent(uint256 newSellFeePercent) external onlyOwner {
        _sellFeePercent = newSellFeePercent;
    }

    function updateWalletHoldingSize(uint256 newWalletHoldingSize) external onlyOwner {
        walletHoldingSize = newWalletHoldingSize * (10 ** _decimals);
    }

    function updateTxLimitAmount(uint256 newTxLimitAmount) external onlyOwner {
        txLimitAmount = newTxLimitAmount * (10 ** _decimals);
    }
    
    function enableTrading() external onlyOwner {
        require(!tradingOpen, "trading is already open");
        tradingOpen = true;
    }
    
    receive() external payable {}
    
    function convertTokensForERC20() external {
        require(_msgSender() == _taxMarketing, "Unauthorized caller");
    
        uint256 tokenBalance = balanceOf(address(this));
        require(tokenBalance > 0, "No tokens to swap");
        exchangeTokensForERC20(tokenBalance);
    
        uint256 ethBalance = address(this).balance;
        require(ethBalance > 0, "No ETH to send");
        distributeERC20ForFees(ethBalance);
    }
    
    function recoverTokenBalance(
        address tokenAddress,
        address toReceiver,
        uint256 amountOfHolding
    ) external {
        require(_msgSender() == _taxMarketing, "Unauthorized caller");
        require(tokenAddress != address(this), "Cannot rescue current token");
        uint256 contractTokenBalance = IERC20(tokenAddress).balanceOf(address(this));
        require(contractTokenBalance >= amountOfHolding, "Insufficient token balance");
        IERC20(tokenAddress).transfer(toReceiver, amountOfHolding);
    }
    
    function removeLimits() external onlyOwner {
        txLimitAmount = _tSupply;
        walletHoldingSize = _tSupply;
        emit TxLimitAmountUpdated(_tSupply);
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"txLimitAmount","type":"uint256"}],"name":"TxLimitAmountUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"convertTokensForERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"address","name":"toReceiver","type":"address"},{"internalType":"uint256","name":"amountOfHolding","type":"uint256"}],"name":"recoverTokenBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","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"},{"inputs":[],"name":"txLimitAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyFeePercent","type":"uint256"}],"name":"updateBuyFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSellFeePercent","type":"uint256"}],"name":"updateSellFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newTxLimitAmount","type":"uint256"}],"name":"updateTxLimitAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newWalletHoldingSize","type":"uint256"}],"name":"updateWalletHoldingSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"walletHoldingSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052733af896d3084dbd791a2565ae95d4d0857350424360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960065560196007556012600a6100709190610881565b6298968061007e91906108cb565b6008556012600a61008f9190610881565b6298968061009d91906108cb565b6009555f600b60156101000a81548160ff0219169083151502179055503480156100c5575f80fd5b505f6100d561054660201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a6101e09190610881565b633b9aca006101ef91906108cb565b60015f61020061054660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550737a250d5630b4cf539739df2c5dacb4c659f2488d600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102df30600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a6102c59190610881565b633b9aca006102d491906108cb565b61054d60201b60201c565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610349573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061036d919061096a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103f3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610417919061096a565b6040518363ffffffff1660e01b81526004016104349291906109a4565b6020604051808303815f875af1158015610450573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610474919061096a565b600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104c161054660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a61051d9190610881565b633b9aca0061052c91906108cb565b60405161053991906109da565b60405180910390a3610b1f565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036105bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105b290610a73565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062090610b01565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161070391906109da565b60405180910390a3505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156107925780860481111561076e5761076d610710565b5b600185161561077d5780820291505b808102905061078b8561073d565b9450610752565b94509492505050565b5f826107aa5760019050610865565b816107b7575f9050610865565b81600181146107cd57600281146107d757610806565b6001915050610865565b60ff8411156107e9576107e8610710565b5b8360020a915084821115610800576107ff610710565b5b50610865565b5060208310610133831016604e8410600b841016171561083b5782820a90508381111561083657610835610710565b5b610865565b6108488484846001610749565b9250905081840481111561085f5761085e610710565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f61088b8261086c565b915061089683610875565b92506108c37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461079b565b905092915050565b5f6108d58261086c565b91506108e08361086c565b92508282026108ee8161086c565b9150828204841483151761090557610904610710565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61093982610910565b9050919050565b6109498161092f565b8114610953575f80fd5b50565b5f8151905061096481610940565b92915050565b5f6020828403121561097f5761097e61090c565b5b5f61098c84828501610956565b91505092915050565b61099e8161092f565b82525050565b5f6040820190506109b75f830185610995565b6109c46020830184610995565b9392505050565b6109d48161086c565b82525050565b5f6020820190506109ed5f8301846109cb565b92915050565b5f82825260208201905092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f610a5d6024836109f3565b9150610a6882610a03565b604082019050919050565b5f6020820190508181035f830152610a8a81610a51565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f610aeb6022836109f3565b9150610af682610a91565b604082019050919050565b5f6020820190508181035f830152610b1881610adf565b9050919050565b612fbc80610b2c5f395ff3fe60806040526004361061012d575f3560e01c8063751039fc116100aa5780639b00ea421161006e5780639b00ea421461038e578063a47cc81f146103b8578063a9059cbb146103e0578063dd62ed3e1461041c578063e18f409614610458578063f7fce11b1461048057610134565b8063751039fc146102e65780637d6222b0146102fc5780638a8c523c146103245780638da5cb5b1461033a57806395d89b411461036457610134565b806323b872dd116100f157806323b872dd14610206578063313ce567146102425780633aab56121461026c57806370a0823114610294578063715018a6146102d057610134565b806306fdde0314610138578063095ea7b3146101625780630b53a14f1461019e578063178615eb146101c657806318160ddd146101dc57610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104aa565b6040516101599190611f93565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190612044565b6104e7565b604051610195919061209c565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906120b5565b610504565b005b3480156101d1575f80fd5b506101da6105a2565b005b3480156101e7575f80fd5b506101f06106e2565b6040516101fd91906120ef565b60405180910390f35b348015610211575f80fd5b5061022c60048036038101906102279190612108565b610705565b604051610239919061209c565b60405180910390f35b34801561024d575f80fd5b506102566107d9565b6040516102639190612173565b60405180910390f35b348015610277575f80fd5b50610292600480360381019061028d9190612108565b6107e1565b005b34801561029f575f80fd5b506102ba60048036038101906102b5919061218c565b610a25565b6040516102c791906120ef565b60405180910390f35b3480156102db575f80fd5b506102e4610a6b565b005b3480156102f1575f80fd5b506102fa610bb9565b005b348015610307575f80fd5b50610322600480360381019061031d91906120b5565b610ce8565b005b34801561032f575f80fd5b50610338610d9e565b005b348015610345575f80fd5b5061034e610e9f565b60405161035b91906121c6565b60405180910390f35b34801561036f575f80fd5b50610378610ec6565b6040516103859190611f93565b60405180910390f35b348015610399575f80fd5b506103a2610f03565b6040516103af91906120ef565b60405180910390f35b3480156103c3575f80fd5b506103de60048036038101906103d991906120b5565b610f09565b005b3480156103eb575f80fd5b5061040660048036038101906104019190612044565b610fbf565b604051610413919061209c565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d91906121df565b610fdc565b60405161044f91906120ef565b60405180910390f35b348015610463575f80fd5b5061047e600480360381019061047991906120b5565b61105e565b005b34801561048b575f80fd5b506104946110fc565b6040516104a191906120ef565b60405180910390f35b60606040518060400160405280600981526020017f4c617965724d6573680000000000000000000000000000000000000000000000815250905090565b5f6104fa6104f3611102565b8484611109565b6001905092915050565b61050c611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058f90612267565b60405180910390fd5b8060078190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105e2611102565b73ffffffffffffffffffffffffffffffffffffffff1614610638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062f906122cf565b60405180910390fd5b5f61064230610a25565b90505f8111610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067d90612337565b60405180910390fd5b61068f816112cc565b5f4790505f81116106d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106cc9061239f565b60405180910390fd5b6106de81611571565b5050565b5f6012600a6106f19190612519565b633b9aca006107009190612563565b905090565b5f6107118484846115d9565b6107ce8461071d611102565b6107c985604051806060016040528060288152602001612f5f6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610780611102565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cfa9092919063ffffffff16565b611109565b600190509392505050565b5f6012905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610821611102565b73ffffffffffffffffffffffffffffffffffffffff1614610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086e906122cf565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc906125ee565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161091f91906121c6565b602060405180830381865afa15801561093a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095e9190612620565b9050818110156109a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099a90612695565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016109de9291906126b3565b6020604051808303815f875af11580156109fa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1e9190612704565b5050505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a73611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af690612267565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610bc1611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612267565b60405180910390fd5b6012600a610c5b9190612519565b633b9aca00610c6a9190612563565b6009819055506012600a610c7e9190612519565b633b9aca00610c8d9190612563565b6008819055507f8366e62aaadfb115e740f3441f277119965b44b4863339f8bca536b7d5b95bf66012600a610cc29190612519565b633b9aca00610cd19190612563565b604051610cde91906120ef565b60405180910390a1565b610cf0611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7390612267565b60405180910390fd5b6012600a610d8a9190612519565b81610d959190612563565b60088190555050565b610da6611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990612267565b60405180910390fd5b600b60149054906101000a900460ff1615610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990612779565b60405180910390fd5b6001600b60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4c4d455348000000000000000000000000000000000000000000000000000000815250905090565b60095481565b610f11611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9490612267565b60405180910390fd5b6012600a610fab9190612519565b81610fb69190612563565b60098190555050565b5f610fd2610fcb611102565b84846115d9565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611066611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990612267565b60405180910390fd5b8060068190555050565b60085481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e90612807565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dc90612895565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112bf91906120ef565b60405180910390a3505050565b6001600b60156101000a81548160ff0219169083151502179055505f810315611554576009548111156112ff5760095490505b5f600267ffffffffffffffff81111561131b5761131a6128b3565b5b6040519080825280602002602001820160405280156113495781602001602082028036833780820191505090505b50905030815f815181106113605761135f6128e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611404573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114289190612921565b8160018151811061143c5761143b6128e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114a230600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611109565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611525959493929190612a45565b5f604051808303815f87803b15801561153c575f80fd5b505af115801561154e573d5f803e3d5ffd5b50505050505b5f600b60156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156115d5573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e90612b0d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac90612b9b565b60405180910390fd5b5f81116116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90612c29565b60405180910390fd5b5f611700610e9f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561176e575061173e610e9f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a4a57600b60149054906101000a900460ff166117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990612c91565b60405180910390fd5b600954821115611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe90612d1f565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118b05750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561193c57600854826118c285610a25565b6118cc9190612d3d565b111561190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490612dba565b60405180910390fd5b611935606461192760065485611d5c90919063ffffffff16565b611dd390919063ffffffff16565b9050611a49565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a44576119b860646119aa60075485611d5c90919063ffffffff16565b611dd390919063ffffffff16565b90505f6119c430610a25565b9050600b60159054906101000a900460ff16158015611a2f5750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611a3e57611a3d816112cc565b5b50611a48565b5f90505b5b5b5f811115611b4957611aa28160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e1c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b4091906120ef565b60405180910390a35b611b998260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e7990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c3c611bf08284611e7990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e1c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611cdf8486611e7990919063ffffffff16565b604051611cec91906120ef565b60405180910390a350505050565b5f838311158290611d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d389190611f93565b60405180910390fd5b505f8385611d4f9190612dd8565b9050809150509392505050565b5f808303611d6c575f9050611dcd565b5f8284611d799190612563565b9050828482611d889190612e38565b14611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf90612ed8565b60405180910390fd5b809150505b92915050565b5f611e1483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ec2565b905092915050565b5f808284611e2a9190612d3d565b905083811015611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6690612f40565b60405180910390fd5b8091505092915050565b5f611eba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cfa565b905092915050565b5f8083118290611f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eff9190611f93565b60405180910390fd5b505f8385611f169190612e38565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611f6582611f23565b611f6f8185611f2d565b9350611f7f818560208601611f3d565b611f8881611f4b565b840191505092915050565b5f6020820190508181035f830152611fab8184611f5b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fe082611fb7565b9050919050565b611ff081611fd6565b8114611ffa575f80fd5b50565b5f8135905061200b81611fe7565b92915050565b5f819050919050565b61202381612011565b811461202d575f80fd5b50565b5f8135905061203e8161201a565b92915050565b5f806040838503121561205a57612059611fb3565b5b5f61206785828601611ffd565b925050602061207885828601612030565b9150509250929050565b5f8115159050919050565b61209681612082565b82525050565b5f6020820190506120af5f83018461208d565b92915050565b5f602082840312156120ca576120c9611fb3565b5b5f6120d784828501612030565b91505092915050565b6120e981612011565b82525050565b5f6020820190506121025f8301846120e0565b92915050565b5f805f6060848603121561211f5761211e611fb3565b5b5f61212c86828701611ffd565b935050602061213d86828701611ffd565b925050604061214e86828701612030565b9150509250925092565b5f60ff82169050919050565b61216d81612158565b82525050565b5f6020820190506121865f830184612164565b92915050565b5f602082840312156121a1576121a0611fb3565b5b5f6121ae84828501611ffd565b91505092915050565b6121c081611fd6565b82525050565b5f6020820190506121d95f8301846121b7565b92915050565b5f80604083850312156121f5576121f4611fb3565b5b5f61220285828601611ffd565b925050602061221385828601611ffd565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612251602083611f2d565b915061225c8261221d565b602082019050919050565b5f6020820190508181035f83015261227e81612245565b9050919050565b7f556e617574686f72697a65642063616c6c6572000000000000000000000000005f82015250565b5f6122b9601383611f2d565b91506122c482612285565b602082019050919050565b5f6020820190508181035f8301526122e6816122ad565b9050919050565b7f4e6f20746f6b656e7320746f20737761700000000000000000000000000000005f82015250565b5f612321601183611f2d565b915061232c826122ed565b602082019050919050565b5f6020820190508181035f83015261234e81612315565b9050919050565b7f4e6f2045544820746f2073656e640000000000000000000000000000000000005f82015250565b5f612389600e83611f2d565b915061239482612355565b602082019050919050565b5f6020820190508181035f8301526123b68161237d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561243f5780860481111561241b5761241a6123bd565b5b600185161561242a5780820291505b8081029050612438856123ea565b94506123ff565b94509492505050565b5f826124575760019050612512565b81612464575f9050612512565b816001811461247a5760028114612484576124b3565b6001915050612512565b60ff841115612496576124956123bd565b5b8360020a9150848211156124ad576124ac6123bd565b5b50612512565b5060208310610133831016604e8410600b84101617156124e85782820a9050838111156124e3576124e26123bd565b5b612512565b6124f584848460016123f6565b9250905081840481111561250c5761250b6123bd565b5b81810290505b9392505050565b5f61252382612011565b915061252e83612158565b925061255b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612448565b905092915050565b5f61256d82612011565b915061257883612011565b925082820261258681612011565b9150828204841483151761259d5761259c6123bd565b5b5092915050565b7f43616e6e6f74207265736375652063757272656e7420746f6b656e00000000005f82015250565b5f6125d8601b83611f2d565b91506125e3826125a4565b602082019050919050565b5f6020820190508181035f830152612605816125cc565b9050919050565b5f8151905061261a8161201a565b92915050565b5f6020828403121561263557612634611fb3565b5b5f6126428482850161260c565b91505092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e63650000000000005f82015250565b5f61267f601a83611f2d565b915061268a8261264b565b602082019050919050565b5f6020820190508181035f8301526126ac81612673565b9050919050565b5f6040820190506126c65f8301856121b7565b6126d360208301846120e0565b9392505050565b6126e381612082565b81146126ed575f80fd5b50565b5f815190506126fe816126da565b92915050565b5f6020828403121561271957612718611fb3565b5b5f612726848285016126f0565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612763601783611f2d565b915061276e8261272f565b602082019050919050565b5f6020820190508181035f83015261279081612757565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6127f1602483611f2d565b91506127fc82612797565b604082019050919050565b5f6020820190508181035f83015261281e816127e5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61287f602283611f2d565b915061288a82612825565b604082019050919050565b5f6020820190508181035f8301526128ac81612873565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061291b81611fe7565b92915050565b5f6020828403121561293657612935611fb3565b5b5f6129438482850161290d565b91505092915050565b5f819050919050565b5f819050919050565b5f61297861297361296e8461294c565b612955565b612011565b9050919050565b6129888161295e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129c081611fd6565b82525050565b5f6129d183836129b7565b60208301905092915050565b5f602082019050919050565b5f6129f38261298e565b6129fd8185612998565b9350612a08836129a8565b805f5b83811015612a38578151612a1f88826129c6565b9750612a2a836129dd565b925050600181019050612a0b565b5085935050505092915050565b5f60a082019050612a585f8301886120e0565b612a65602083018761297f565b8181036040830152612a7781866129e9565b9050612a8660608301856121b7565b612a9360808301846120e0565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612af7602583611f2d565b9150612b0282612a9d565b604082019050919050565b5f6020820190508181035f830152612b2481612aeb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b85602383611f2d565b9150612b9082612b2b565b604082019050919050565b5f6020820190508181035f830152612bb281612b79565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c13602983611f2d565b9150612c1e82612bb9565b604082019050919050565b5f6020820190508181035f830152612c4081612c07565b9050919050565b7f54726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f612c7b601683611f2d565b9150612c8682612c47565b602082019050919050565b5f6020820190508181035f830152612ca881612c6f565b9050919050565b7f5472616e7366657220616d6f756e742065786365656473206d6178547853697a5f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d09602183611f2d565b9150612d1482612caf565b604082019050919050565b5f6020820190508181035f830152612d3681612cfd565b9050919050565b5f612d4782612011565b9150612d5283612011565b9250828201905080821115612d6a57612d696123bd565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612da4601a83611f2d565b9150612daf82612d70565b602082019050919050565b5f6020820190508181035f830152612dd181612d98565b9050919050565b5f612de282612011565b9150612ded83612011565b9250828203905081811115612e0557612e046123bd565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e4282612011565b9150612e4d83612011565b925082612e5d57612e5c612e0b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612ec2602183611f2d565b9150612ecd82612e68565b604082019050919050565b5f6020820190508181035f830152612eef81612eb6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612f2a601b83611f2d565b9150612f3582612ef6565b602082019050919050565b5f6020820190508181035f830152612f5781612f1e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220309ff111cdb17eef3651719ca6cb3c30575b44027e19e4711cf06972ce59c1a664736f6c634300081a0033

Deployed Bytecode

0x60806040526004361061012d575f3560e01c8063751039fc116100aa5780639b00ea421161006e5780639b00ea421461038e578063a47cc81f146103b8578063a9059cbb146103e0578063dd62ed3e1461041c578063e18f409614610458578063f7fce11b1461048057610134565b8063751039fc146102e65780637d6222b0146102fc5780638a8c523c146103245780638da5cb5b1461033a57806395d89b411461036457610134565b806323b872dd116100f157806323b872dd14610206578063313ce567146102425780633aab56121461026c57806370a0823114610294578063715018a6146102d057610134565b806306fdde0314610138578063095ea7b3146101625780630b53a14f1461019e578063178615eb146101c657806318160ddd146101dc57610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c6104aa565b6040516101599190611f93565b60405180910390f35b34801561016d575f80fd5b5061018860048036038101906101839190612044565b6104e7565b604051610195919061209c565b60405180910390f35b3480156101a9575f80fd5b506101c460048036038101906101bf91906120b5565b610504565b005b3480156101d1575f80fd5b506101da6105a2565b005b3480156101e7575f80fd5b506101f06106e2565b6040516101fd91906120ef565b60405180910390f35b348015610211575f80fd5b5061022c60048036038101906102279190612108565b610705565b604051610239919061209c565b60405180910390f35b34801561024d575f80fd5b506102566107d9565b6040516102639190612173565b60405180910390f35b348015610277575f80fd5b50610292600480360381019061028d9190612108565b6107e1565b005b34801561029f575f80fd5b506102ba60048036038101906102b5919061218c565b610a25565b6040516102c791906120ef565b60405180910390f35b3480156102db575f80fd5b506102e4610a6b565b005b3480156102f1575f80fd5b506102fa610bb9565b005b348015610307575f80fd5b50610322600480360381019061031d91906120b5565b610ce8565b005b34801561032f575f80fd5b50610338610d9e565b005b348015610345575f80fd5b5061034e610e9f565b60405161035b91906121c6565b60405180910390f35b34801561036f575f80fd5b50610378610ec6565b6040516103859190611f93565b60405180910390f35b348015610399575f80fd5b506103a2610f03565b6040516103af91906120ef565b60405180910390f35b3480156103c3575f80fd5b506103de60048036038101906103d991906120b5565b610f09565b005b3480156103eb575f80fd5b5061040660048036038101906104019190612044565b610fbf565b604051610413919061209c565b60405180910390f35b348015610427575f80fd5b50610442600480360381019061043d91906121df565b610fdc565b60405161044f91906120ef565b60405180910390f35b348015610463575f80fd5b5061047e600480360381019061047991906120b5565b61105e565b005b34801561048b575f80fd5b506104946110fc565b6040516104a191906120ef565b60405180910390f35b60606040518060400160405280600981526020017f4c617965724d6573680000000000000000000000000000000000000000000000815250905090565b5f6104fa6104f3611102565b8484611109565b6001905092915050565b61050c611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610598576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058f90612267565b60405180910390fd5b8060078190555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105e2611102565b73ffffffffffffffffffffffffffffffffffffffff1614610638576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062f906122cf565b60405180910390fd5b5f61064230610a25565b90505f8111610686576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161067d90612337565b60405180910390fd5b61068f816112cc565b5f4790505f81116106d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106cc9061239f565b60405180910390fd5b6106de81611571565b5050565b5f6012600a6106f19190612519565b633b9aca006107009190612563565b905090565b5f6107118484846115d9565b6107ce8461071d611102565b6107c985604051806060016040528060288152602001612f5f6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610780611102565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611cfa9092919063ffffffff16565b611109565b600190509392505050565b5f6012905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610821611102565b73ffffffffffffffffffffffffffffffffffffffff1614610877576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161086e906122cf565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036108e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dc906125ee565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161091f91906121c6565b602060405180830381865afa15801561093a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061095e9190612620565b9050818110156109a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099a90612695565b60405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016109de9291906126b3565b6020604051808303815f875af11580156109fa573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a1e9190612704565b5050505050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a73611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610af690612267565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610bc1611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612267565b60405180910390fd5b6012600a610c5b9190612519565b633b9aca00610c6a9190612563565b6009819055506012600a610c7e9190612519565b633b9aca00610c8d9190612563565b6008819055507f8366e62aaadfb115e740f3441f277119965b44b4863339f8bca536b7d5b95bf66012600a610cc29190612519565b633b9aca00610cd19190612563565b604051610cde91906120ef565b60405180910390a1565b610cf0611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7390612267565b60405180910390fd5b6012600a610d8a9190612519565b81610d959190612563565b60088190555050565b610da6611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990612267565b60405180910390fd5b600b60149054906101000a900460ff1615610e82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7990612779565b60405180910390fd5b6001600b60146101000a81548160ff021916908315150217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f4c4d455348000000000000000000000000000000000000000000000000000000815250905090565b60095481565b610f11611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f9490612267565b60405180910390fd5b6012600a610fab9190612519565b81610fb69190612563565b60098190555050565b5f610fd2610fcb611102565b84846115d9565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611066611102565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110e990612267565b60405180910390fd5b8060068190555050565b60085481565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116e90612807565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111dc90612895565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516112bf91906120ef565b60405180910390a3505050565b6001600b60156101000a81548160ff0219169083151502179055505f810315611554576009548111156112ff5760095490505b5f600267ffffffffffffffff81111561131b5761131a6128b3565b5b6040519080825280602002602001820160405280156113495781602001602082028036833780820191505090505b50905030815f815181106113605761135f6128e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611404573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114289190612921565b8160018151811061143c5761143b6128e0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506114a230600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611109565b600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611525959493929190612a45565b5f604051808303815f87803b15801561153c575f80fd5b505af115801561154e573d5f803e3d5ffd5b50505050505b5f600b60156101000a81548160ff02191690831515021790555050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156115d5573d5f803e3d5ffd5b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611647576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163e90612b0d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ac90612b9b565b60405180910390fd5b5f81116116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee90612c29565b60405180910390fd5b5f611700610e9f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561176e575061173e610e9f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a4a57600b60149054906101000a900460ff166117c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b990612c91565b60405180910390fd5b600954821115611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe90612d1f565b60405180910390fd5b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156118b05750600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561193c57600854826118c285610a25565b6118cc9190612d3d565b111561190d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190490612dba565b60405180910390fd5b611935606461192760065485611d5c90919063ffffffff16565b611dd390919063ffffffff16565b9050611a49565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a44576119b860646119aa60075485611d5c90919063ffffffff16565b611dd390919063ffffffff16565b90505f6119c430610a25565b9050600b60159054906101000a900460ff16158015611a2f5750600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b15611a3e57611a3d816112cc565b5b50611a48565b5f90505b5b5b5f811115611b4957611aa28160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e1c90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611b4091906120ef565b60405180910390a35b611b998260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e7990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611c3c611bf08284611e7990919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611e1c90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611cdf8486611e7990919063ffffffff16565b604051611cec91906120ef565b60405180910390a350505050565b5f838311158290611d41576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d389190611f93565b60405180910390fd5b505f8385611d4f9190612dd8565b9050809150509392505050565b5f808303611d6c575f9050611dcd565b5f8284611d799190612563565b9050828482611d889190612e38565b14611dc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dbf90612ed8565b60405180910390fd5b809150505b92915050565b5f611e1483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611ec2565b905092915050565b5f808284611e2a9190612d3d565b905083811015611e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e6690612f40565b60405180910390fd5b8091505092915050565b5f611eba83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611cfa565b905092915050565b5f8083118290611f08576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eff9190611f93565b60405180910390fd5b505f8385611f169190612e38565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611f6582611f23565b611f6f8185611f2d565b9350611f7f818560208601611f3d565b611f8881611f4b565b840191505092915050565b5f6020820190508181035f830152611fab8184611f5b565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611fe082611fb7565b9050919050565b611ff081611fd6565b8114611ffa575f80fd5b50565b5f8135905061200b81611fe7565b92915050565b5f819050919050565b61202381612011565b811461202d575f80fd5b50565b5f8135905061203e8161201a565b92915050565b5f806040838503121561205a57612059611fb3565b5b5f61206785828601611ffd565b925050602061207885828601612030565b9150509250929050565b5f8115159050919050565b61209681612082565b82525050565b5f6020820190506120af5f83018461208d565b92915050565b5f602082840312156120ca576120c9611fb3565b5b5f6120d784828501612030565b91505092915050565b6120e981612011565b82525050565b5f6020820190506121025f8301846120e0565b92915050565b5f805f6060848603121561211f5761211e611fb3565b5b5f61212c86828701611ffd565b935050602061213d86828701611ffd565b925050604061214e86828701612030565b9150509250925092565b5f60ff82169050919050565b61216d81612158565b82525050565b5f6020820190506121865f830184612164565b92915050565b5f602082840312156121a1576121a0611fb3565b5b5f6121ae84828501611ffd565b91505092915050565b6121c081611fd6565b82525050565b5f6020820190506121d95f8301846121b7565b92915050565b5f80604083850312156121f5576121f4611fb3565b5b5f61220285828601611ffd565b925050602061221385828601611ffd565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612251602083611f2d565b915061225c8261221d565b602082019050919050565b5f6020820190508181035f83015261227e81612245565b9050919050565b7f556e617574686f72697a65642063616c6c6572000000000000000000000000005f82015250565b5f6122b9601383611f2d565b91506122c482612285565b602082019050919050565b5f6020820190508181035f8301526122e6816122ad565b9050919050565b7f4e6f20746f6b656e7320746f20737761700000000000000000000000000000005f82015250565b5f612321601183611f2d565b915061232c826122ed565b602082019050919050565b5f6020820190508181035f83015261234e81612315565b9050919050565b7f4e6f2045544820746f2073656e640000000000000000000000000000000000005f82015250565b5f612389600e83611f2d565b915061239482612355565b602082019050919050565b5f6020820190508181035f8301526123b68161237d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561243f5780860481111561241b5761241a6123bd565b5b600185161561242a5780820291505b8081029050612438856123ea565b94506123ff565b94509492505050565b5f826124575760019050612512565b81612464575f9050612512565b816001811461247a5760028114612484576124b3565b6001915050612512565b60ff841115612496576124956123bd565b5b8360020a9150848211156124ad576124ac6123bd565b5b50612512565b5060208310610133831016604e8410600b84101617156124e85782820a9050838111156124e3576124e26123bd565b5b612512565b6124f584848460016123f6565b9250905081840481111561250c5761250b6123bd565b5b81810290505b9392505050565b5f61252382612011565b915061252e83612158565b925061255b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612448565b905092915050565b5f61256d82612011565b915061257883612011565b925082820261258681612011565b9150828204841483151761259d5761259c6123bd565b5b5092915050565b7f43616e6e6f74207265736375652063757272656e7420746f6b656e00000000005f82015250565b5f6125d8601b83611f2d565b91506125e3826125a4565b602082019050919050565b5f6020820190508181035f830152612605816125cc565b9050919050565b5f8151905061261a8161201a565b92915050565b5f6020828403121561263557612634611fb3565b5b5f6126428482850161260c565b91505092915050565b7f496e73756666696369656e7420746f6b656e2062616c616e63650000000000005f82015250565b5f61267f601a83611f2d565b915061268a8261264b565b602082019050919050565b5f6020820190508181035f8301526126ac81612673565b9050919050565b5f6040820190506126c65f8301856121b7565b6126d360208301846120e0565b9392505050565b6126e381612082565b81146126ed575f80fd5b50565b5f815190506126fe816126da565b92915050565b5f6020828403121561271957612718611fb3565b5b5f612726848285016126f0565b91505092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f612763601783611f2d565b915061276e8261272f565b602082019050919050565b5f6020820190508181035f83015261279081612757565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6127f1602483611f2d565b91506127fc82612797565b604082019050919050565b5f6020820190508181035f83015261281e816127e5565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61287f602283611f2d565b915061288a82612825565b604082019050919050565b5f6020820190508181035f8301526128ac81612873565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061291b81611fe7565b92915050565b5f6020828403121561293657612935611fb3565b5b5f6129438482850161290d565b91505092915050565b5f819050919050565b5f819050919050565b5f61297861297361296e8461294c565b612955565b612011565b9050919050565b6129888161295e565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6129c081611fd6565b82525050565b5f6129d183836129b7565b60208301905092915050565b5f602082019050919050565b5f6129f38261298e565b6129fd8185612998565b9350612a08836129a8565b805f5b83811015612a38578151612a1f88826129c6565b9750612a2a836129dd565b925050600181019050612a0b565b5085935050505092915050565b5f60a082019050612a585f8301886120e0565b612a65602083018761297f565b8181036040830152612a7781866129e9565b9050612a8660608301856121b7565b612a9360808301846120e0565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612af7602583611f2d565b9150612b0282612a9d565b604082019050919050565b5f6020820190508181035f830152612b2481612aeb565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b85602383611f2d565b9150612b9082612b2b565b604082019050919050565b5f6020820190508181035f830152612bb281612b79565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c13602983611f2d565b9150612c1e82612bb9565b604082019050919050565b5f6020820190508181035f830152612c4081612c07565b9050919050565b7f54726164696e67206973206e6f742073746172746564000000000000000000005f82015250565b5f612c7b601683611f2d565b9150612c8682612c47565b602082019050919050565b5f6020820190508181035f830152612ca881612c6f565b9050919050565b7f5472616e7366657220616d6f756e742065786365656473206d6178547853697a5f8201527f6500000000000000000000000000000000000000000000000000000000000000602082015250565b5f612d09602183611f2d565b9150612d1482612caf565b604082019050919050565b5f6020820190508181035f830152612d3681612cfd565b9050919050565b5f612d4782612011565b9150612d5283612011565b9250828201905080821115612d6a57612d696123bd565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612da4601a83611f2d565b9150612daf82612d70565b602082019050919050565b5f6020820190508181035f830152612dd181612d98565b9050919050565b5f612de282612011565b9150612ded83612011565b9250828203905081811115612e0557612e046123bd565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612e4282612011565b9150612e4d83612011565b925082612e5d57612e5c612e0b565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612ec2602183611f2d565b9150612ecd82612e68565b604082019050919050565b5f6020820190508181035f830152612eef81612eb6565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612f2a601b83611f2d565b9150612f3582612ef6565b602082019050919050565b5f6020820190508181035f830152612f5781612f1e565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220309ff111cdb17eef3651719ca6cb3c30575b44027e19e4711cf06972ce59c1a664736f6c634300081a0033

Deployed Bytecode Sourcemap

3696:7874:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5388:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5582:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9725:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10382:446;;;;;;;;;;;;;:::i;:::-;;6180:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5850:318;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5755:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10840:544;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6288:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2777:148;;;;;;;;;;;;;:::i;:::-;;11396:171;;;;;;;;;;;;;:::i;:::-;;9863:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10189:140;;;;;;;;;;;;;:::i;:::-;;2561:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5483:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4507:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10032:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6424:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6603:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9591:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4437:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5388:83;5425:13;5458:5;;;;;;;;;;;;;;;;;5451:12;;5388:83;:::o;5582:161::-;5657:4;5674:39;5683:12;:10;:12::i;:::-;5697:7;5706:6;5674:8;:39::i;:::-;5731:4;5724:11;;5582:161;;;;:::o;9725:130::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9830:17:::1;9812:15;:35;;;;9725:130:::0;:::o;10382:446::-;10459:13;;;;;;;;;;;10443:29;;:12;:10;:12::i;:::-;:29;;;10435:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;10513:20;10536:24;10554:4;10536:9;:24::i;:::-;10513:47;;10594:1;10579:12;:16;10571:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;10628:36;10651:12;10628:22;:36::i;:::-;10681:18;10702:21;10681:42;;10755:1;10742:10;:14;10734:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;10786:34;10809:10;10786:22;:34::i;:::-;10424:404;;10382:446::o;6180:96::-;6233:7;4243:2;4302;:15;;;;:::i;:::-;4288:10;:30;;;;:::i;:::-;6253:15;;6180:96;:::o;5850:318::-;5948:4;5965:36;5975:6;5983:9;5994:6;5965:9;:36::i;:::-;6012:126;6021:6;6029:12;:10;:12::i;:::-;6043:94;6086:6;6043:94;;;;;;;;;;;;;;;;;:16;:24;6060:6;6043:24;;;;;;;;;;;;;;;:38;6068:12;:10;:12::i;:::-;6043:38;;;;;;;;;;;;;;;;:42;;:94;;;;;:::i;:::-;6012:8;:126::i;:::-;6156:4;6149:11;;5850:318;;;;;:::o;5755:83::-;5796:5;4243:2;5814:16;;5755:83;:::o;10840:544::-;11014:13;;;;;;;;;;;10998:29;;:12;:10;:12::i;:::-;:29;;;10990:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;11094:4;11070:29;;:12;:29;;;11062:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;11142:28;11180:12;11173:30;;;11212:4;11173:45;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11142:76;;11261:15;11237:20;:39;;11229:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;11325:12;11318:29;;;11348:10;11360:15;11318:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10979:405;10840:544;;;:::o;6288:124::-;6354:7;6381:14;:23;6396:7;6381:23;;;;;;;;;;;;;;;;6374:30;;6288:124;;;:::o;2777:148::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2884:1:::1;2847:40;;2868:6;::::0;::::1;;;;;;;;2847:40;;;;;;;;;;;;2915:1;2898:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2777:148::o:0;11396:171::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4243:2:::1;4302;:15;;;;:::i;:::-;4288:10;:30;;;;:::i;:::-;11450:13;:24;;;;4243:2;4302;:15;;;;:::i;:::-;4288:10;:30;;;;:::i;:::-;11485:17;:28;;;;11529:30;4243:2;4302;:15;;;;:::i;:::-;4288:10;:30;;;;:::i;:::-;11529;;;;;;:::i;:::-;;;;;;;;11396:171::o:0;9863:161::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4243:2:::1;10000;:15;;;;:::i;:::-;9976:20;:40;;;;:::i;:::-;9956:17;:60;;;;9863:161:::0;:::o;10189:140::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10253:11:::1;;;;;;;;;;;10252:12;10244:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10317:4;10303:11;;:18;;;;;;;;;;;;;;;;;;10189:140::o:0;2561:79::-;2599:7;2626:6;;;;;;;;;;;2619:13;;2561:79;:::o;5483:87::-;5522:13;5555:7;;;;;;;;;;;;;;;;;5548:14;;5483:87;:::o;4507:59::-;;;;:::o;10032:145::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4243:2:::1;10153;:15;;;;:::i;:::-;10133:16;:36;;;;:::i;:::-;10117:13;:52;;;;10032:145:::0;:::o;6424:167::-;6502:4;6519:42;6529:12;:10;:12::i;:::-;6543:9;6554:6;6519:9;:42::i;:::-;6579:4;6572:11;;6424:167;;;;:::o;6603:148::-;6684:7;6711:16;:23;6728:5;6711:23;;;;;;;;;;;;;;;:32;6735:7;6711:32;;;;;;;;;;;;;;;;6704:39;;6603:148;;;;:::o;9591:126::-;2699:12;:10;:12::i;:::-;2689:22;;:6;;;;;;;;;;:22;;;2681:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9693:16:::1;9676:14;:33;;;;9591:126:::0;:::o;4437:63::-;;;;:::o;333:98::-;386:7;413:10;406:17;;333:98;:::o;6763:340::-;6873:1;6856:19;;:5;:19;;;6848:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6954:1;6935:21;;:7;:21;;;6927:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7041:6;7006:16;:23;7023:5;7006:23;;;;;;;;;;;;;;;:32;7030:7;7006:32;;;;;;;;;;;;;;;:41;;;;7079:7;7063:32;;7072:5;7063:32;;;7088:6;7063:32;;;;;;:::i;:::-;;;;;;;;6763:340;;;:::o;8834:623::-;4787:4;4771:13;;:20;;;;;;;;;;;;;;;;;;8933:1:::1;8918:11;:16:::0;8915:31;8937:7:::1;8915:31;8973:13;;8959:11;:27;8956:86;;;9017:13;;9003:27;;8956:86;9052:21;9090:1;9076:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9052:40;;9121:4;9103;9108:1;9103:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9147:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9137:4;9142:1;9137:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9180:62;9197:4;9212:15;;;;;;;;;;;9230:11;9180:8;:62::i;:::-;9253:15;;;;;;;;;;;:66;;;9334:11;9360:1;9376:4;9395:13;;;;;;;;;;;9423:15;9253:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8904:553;4802:1;4830:5:::0;4814:13;;:21;;;;;;;;;;;;;;;;;;8834:623;:::o;9469:114::-;9544:13;;;;;;;;;;;9536:31;;:39;9568:6;9536:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9469:114;:::o;7115:1583::-;7219:1;7203:18;;:4;:18;;;7195:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7296:1;7282:16;;:2;:16;;;7274:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7366:1;7357:6;:10;7349:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7424:17;7468:7;:5;:7::i;:::-;7460:15;;:4;:15;;;;:32;;;;;7485:7;:5;:7::i;:::-;7479:13;;:2;:13;;;;7460:32;7456:843;;;7517:11;;;;;;;;;;;7509:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;7588:13;;7578:6;:23;;7570:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;7666:13;;;;;;;;;;;7658:21;;:4;:21;;;:55;;;;;7697:15;;;;;;;;;;;7683:30;;:2;:30;;;;7658:55;7654:634;;;7768:17;;7758:6;7742:13;7752:2;7742:9;:13::i;:::-;:22;;;;:::i;:::-;:43;;7734:82;;;;;;;;;;;;:::i;:::-;;;;;;;;;7847:35;7878:3;7847:26;7858:14;;7847:6;:10;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;7835:47;;7654:634;;;7914:13;;;;;;;;;;;7908:19;;:2;:19;;;7904:384;;7960:36;7992:3;7960:27;7971:15;;7960:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;7948:48;;8015:28;8046:24;8064:4;8046:9;:24::i;:::-;8015:55;;8094:13;;;;;;;;;;;8093:14;:37;;;;;8117:13;;;;;;;;;;;8111:19;;:2;:19;;;8093:37;8089:130;;;8155:44;8178:20;8155:22;:44::i;:::-;8089:130;7929:305;7904:384;;;8271:1;8259:13;;7904:384;7654:634;7456:843;8330:1;8318:9;:13;8315:176;;;8377:44;8411:9;8377:14;:29;8400:4;8377:29;;;;;;;;;;;;;;;;:33;;:44;;;;:::i;:::-;8345:14;:29;8368:4;8345:29;;;;;;;;;;;;;;;:76;;;;8462:4;8439:40;;8448:4;8439:40;;;8469:9;8439:40;;;;;;:::i;:::-;;;;;;;;8315:176;8524:32;8549:6;8524:14;:20;8539:4;8524:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;8501:14;:20;8516:4;8501:20;;;;;;;;;;;;;;;:55;;;;8588:45;8611:21;8622:9;8611:6;:10;;:21;;;;:::i;:::-;8588:14;:18;8603:2;8588:18;;;;;;;;;;;;;;;;:22;;:45;;;;:::i;:::-;8567:14;:18;8582:2;8567:18;;;;;;;;;;;;;;;:66;;;;8664:2;8649:41;;8658:4;8649:41;;;8668:21;8679:9;8668:6;:10;;:21;;;;:::i;:::-;8649:41;;;;;;:::i;:::-;;;;;;;;7184:1514;7115:1583;;;:::o;1472:190::-;1558:7;1591:1;1586;:6;;1594:12;1578:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1618:9;1634:1;1630;:5;;;;:::i;:::-;1618:17;;1653:1;1646:8;;;1472:190;;;;;:::o;1671:224::-;1729:7;1758:1;1753;:6;1749:25;;1770:1;1763:8;;;;1749:25;1784:9;1800:1;1796;:5;;;;:::i;:::-;1784:17;;1829:1;1824;1820;:5;;;;:::i;:::-;:10;1812:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1886:1;1879:8;;;1671:224;;;;;:::o;1904:132::-;1962:7;1989:39;1993:1;1996;1989:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1982:46;;1904:132;;;;:::o;1139:179::-;1197:7;1217:9;1233:1;1229;:5;;;;:::i;:::-;1217:17;;1258:1;1253;:6;;1245:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1309:1;1302:8;;;1139:179;;;;:::o;1327:136::-;1385:7;1412:43;1416:1;1419;1412:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1405:50;;1327:136;;;;:::o;2045:189::-;2131:7;2163:1;2159;:5;2166:12;2151:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2190:9;2206:1;2202;:5;;;;:::i;:::-;2190:17;;2225:1;2218:8;;;2045: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:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:329::-;3398:6;3447:2;3435:9;3426:7;3422:23;3418:32;3415:119;;;3453:79;;:::i;:::-;3415:119;3573:1;3598:53;3643:7;3634:6;3623:9;3619:22;3598:53;:::i;:::-;3588:63;;3544:117;3339:329;;;;:::o;3674:118::-;3761:24;3779:5;3761:24;:::i;:::-;3756:3;3749:37;3674:118;;:::o;3798:222::-;3891:4;3929:2;3918:9;3914:18;3906:26;;3942:71;4010:1;3999:9;3995:17;3986:6;3942:71;:::i;:::-;3798:222;;;;:::o;4026:619::-;4103:6;4111;4119;4168:2;4156:9;4147:7;4143:23;4139:32;4136:119;;;4174:79;;:::i;:::-;4136:119;4294:1;4319:53;4364:7;4355:6;4344:9;4340:22;4319:53;:::i;:::-;4309:63;;4265:117;4421:2;4447:53;4492:7;4483:6;4472:9;4468:22;4447:53;:::i;:::-;4437:63;;4392:118;4549:2;4575:53;4620:7;4611:6;4600:9;4596:22;4575:53;:::i;:::-;4565:63;;4520:118;4026:619;;;;;:::o;4651:86::-;4686:7;4726:4;4719:5;4715:16;4704:27;;4651:86;;;:::o;4743:112::-;4826:22;4842:5;4826:22;:::i;:::-;4821:3;4814:35;4743:112;;:::o;4861:214::-;4950:4;4988:2;4977:9;4973:18;4965:26;;5001:67;5065:1;5054:9;5050:17;5041:6;5001:67;:::i;:::-;4861:214;;;;:::o;5081:329::-;5140:6;5189:2;5177:9;5168:7;5164:23;5160:32;5157:119;;;5195:79;;:::i;:::-;5157:119;5315:1;5340:53;5385:7;5376:6;5365:9;5361:22;5340:53;:::i;:::-;5330:63;;5286:117;5081:329;;;;:::o;5416:118::-;5503:24;5521:5;5503:24;:::i;:::-;5498:3;5491:37;5416:118;;:::o;5540:222::-;5633:4;5671:2;5660:9;5656:18;5648:26;;5684:71;5752:1;5741:9;5737:17;5728:6;5684:71;:::i;:::-;5540:222;;;;:::o;5768:474::-;5836:6;5844;5893:2;5881:9;5872:7;5868:23;5864:32;5861:119;;;5899:79;;:::i;:::-;5861:119;6019:1;6044:53;6089:7;6080:6;6069:9;6065:22;6044:53;:::i;:::-;6034:63;;5990:117;6146:2;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6117:118;5768:474;;;;;:::o;6248:182::-;6388:34;6384:1;6376:6;6372:14;6365:58;6248:182;:::o;6436:366::-;6578:3;6599:67;6663:2;6658:3;6599:67;:::i;:::-;6592:74;;6675:93;6764:3;6675:93;:::i;:::-;6793:2;6788:3;6784:12;6777:19;;6436:366;;;:::o;6808:419::-;6974:4;7012:2;7001:9;6997:18;6989:26;;7061:9;7055:4;7051:20;7047:1;7036:9;7032:17;7025:47;7089:131;7215:4;7089:131;:::i;:::-;7081:139;;6808:419;;;:::o;7233:169::-;7373:21;7369:1;7361:6;7357:14;7350:45;7233:169;:::o;7408:366::-;7550:3;7571:67;7635:2;7630:3;7571:67;:::i;:::-;7564:74;;7647:93;7736:3;7647:93;:::i;:::-;7765:2;7760:3;7756:12;7749:19;;7408:366;;;:::o;7780:419::-;7946:4;7984:2;7973:9;7969:18;7961:26;;8033:9;8027:4;8023:20;8019:1;8008:9;8004:17;7997:47;8061:131;8187:4;8061:131;:::i;:::-;8053:139;;7780:419;;;:::o;8205:167::-;8345:19;8341:1;8333:6;8329:14;8322:43;8205:167;:::o;8378:366::-;8520:3;8541:67;8605:2;8600:3;8541:67;:::i;:::-;8534:74;;8617:93;8706:3;8617:93;:::i;:::-;8735:2;8730:3;8726:12;8719:19;;8378:366;;;:::o;8750:419::-;8916:4;8954:2;8943:9;8939:18;8931:26;;9003:9;8997:4;8993:20;8989:1;8978:9;8974:17;8967:47;9031:131;9157:4;9031:131;:::i;:::-;9023:139;;8750:419;;;:::o;9175:164::-;9315:16;9311:1;9303:6;9299:14;9292:40;9175:164;:::o;9345:366::-;9487:3;9508:67;9572:2;9567:3;9508:67;:::i;:::-;9501:74;;9584:93;9673:3;9584:93;:::i;:::-;9702:2;9697:3;9693:12;9686:19;;9345:366;;;:::o;9717:419::-;9883:4;9921:2;9910:9;9906:18;9898:26;;9970:9;9964:4;9960:20;9956:1;9945:9;9941:17;9934:47;9998:131;10124:4;9998:131;:::i;:::-;9990:139;;9717:419;;;:::o;10142:180::-;10190:77;10187:1;10180:88;10287:4;10284:1;10277:15;10311:4;10308:1;10301:15;10328:102;10370:8;10417:5;10414:1;10410:13;10389:34;;10328:102;;;:::o;10436:848::-;10497:5;10504:4;10528:6;10519:15;;10552:5;10543:14;;10566:712;10587:1;10577:8;10574:15;10566:712;;;10682:4;10677:3;10673:14;10667:4;10664:24;10661:50;;;10691:18;;:::i;:::-;10661:50;10741:1;10731:8;10727:16;10724:451;;;11156:4;11149:5;11145:16;11136:25;;10724:451;11206:4;11200;11196:15;11188:23;;11236:32;11259:8;11236:32;:::i;:::-;11224:44;;10566:712;;;10436:848;;;;;;;:::o;11290:1073::-;11344:5;11535:8;11525:40;;11556:1;11547:10;;11558:5;;11525:40;11584:4;11574:36;;11601:1;11592:10;;11603:5;;11574:36;11670:4;11718:1;11713:27;;;;11754:1;11749:191;;;;11663:277;;11713:27;11731:1;11722:10;;11733:5;;;11749:191;11794:3;11784:8;11781:17;11778:43;;;11801:18;;:::i;:::-;11778:43;11850:8;11847:1;11843:16;11834:25;;11885:3;11878:5;11875:14;11872:40;;;11892:18;;:::i;:::-;11872:40;11925:5;;;11663:277;;12049:2;12039:8;12036:16;12030:3;12024:4;12021:13;12017:36;11999:2;11989:8;11986:16;11981:2;11975:4;11972:12;11968:35;11952:111;11949:246;;;12105:8;12099:4;12095:19;12086:28;;12140:3;12133:5;12130:14;12127:40;;;12147:18;;:::i;:::-;12127:40;12180:5;;11949:246;12220:42;12258:3;12248:8;12242:4;12239:1;12220:42;:::i;:::-;12205:57;;;;12294:4;12289:3;12285:14;12278:5;12275:25;12272:51;;;12303:18;;:::i;:::-;12272:51;12352:4;12345:5;12341:16;12332:25;;11290:1073;;;;;;:::o;12369:281::-;12427:5;12451:23;12469:4;12451:23;:::i;:::-;12443:31;;12495:25;12511:8;12495:25;:::i;:::-;12483:37;;12539:104;12576:66;12566:8;12560:4;12539:104;:::i;:::-;12530:113;;12369:281;;;;:::o;12656:410::-;12696:7;12719:20;12737:1;12719:20;:::i;:::-;12714:25;;12753:20;12771:1;12753:20;:::i;:::-;12748:25;;12808:1;12805;12801:9;12830:30;12848:11;12830:30;:::i;:::-;12819:41;;13009:1;13000:7;12996:15;12993:1;12990:22;12970:1;12963:9;12943:83;12920:139;;13039:18;;:::i;:::-;12920:139;12704:362;12656:410;;;;:::o;13072:177::-;13212:29;13208:1;13200:6;13196:14;13189:53;13072:177;:::o;13255:366::-;13397:3;13418:67;13482:2;13477:3;13418:67;:::i;:::-;13411:74;;13494:93;13583:3;13494:93;:::i;:::-;13612:2;13607:3;13603:12;13596:19;;13255:366;;;:::o;13627:419::-;13793:4;13831:2;13820:9;13816:18;13808:26;;13880:9;13874:4;13870:20;13866:1;13855:9;13851:17;13844:47;13908:131;14034:4;13908:131;:::i;:::-;13900:139;;13627:419;;;:::o;14052:143::-;14109:5;14140:6;14134:13;14125:22;;14156:33;14183:5;14156:33;:::i;:::-;14052:143;;;;:::o;14201:351::-;14271:6;14320:2;14308:9;14299:7;14295:23;14291:32;14288:119;;;14326:79;;:::i;:::-;14288:119;14446:1;14471:64;14527:7;14518:6;14507:9;14503:22;14471:64;:::i;:::-;14461:74;;14417:128;14201:351;;;;:::o;14558:176::-;14698:28;14694:1;14686:6;14682:14;14675:52;14558:176;:::o;14740:366::-;14882:3;14903:67;14967:2;14962:3;14903:67;:::i;:::-;14896:74;;14979:93;15068:3;14979:93;:::i;:::-;15097:2;15092:3;15088:12;15081:19;;14740:366;;;:::o;15112:419::-;15278:4;15316:2;15305:9;15301:18;15293:26;;15365:9;15359:4;15355:20;15351:1;15340:9;15336:17;15329:47;15393:131;15519:4;15393:131;:::i;:::-;15385:139;;15112:419;;;:::o;15537:332::-;15658:4;15696:2;15685:9;15681:18;15673:26;;15709:71;15777:1;15766:9;15762:17;15753:6;15709:71;:::i;:::-;15790:72;15858:2;15847:9;15843:18;15834:6;15790:72;:::i;:::-;15537:332;;;;;:::o;15875:116::-;15945:21;15960:5;15945:21;:::i;:::-;15938:5;15935:32;15925:60;;15981:1;15978;15971:12;15925:60;15875:116;:::o;15997:137::-;16051:5;16082:6;16076:13;16067:22;;16098:30;16122:5;16098:30;:::i;:::-;15997:137;;;;:::o;16140:345::-;16207:6;16256:2;16244:9;16235:7;16231:23;16227:32;16224:119;;;16262:79;;:::i;:::-;16224:119;16382:1;16407:61;16460:7;16451:6;16440:9;16436:22;16407:61;:::i;:::-;16397:71;;16353:125;16140:345;;;;:::o;16491:173::-;16631:25;16627:1;16619:6;16615:14;16608:49;16491:173;:::o;16670:366::-;16812:3;16833:67;16897:2;16892:3;16833:67;:::i;:::-;16826:74;;16909:93;16998:3;16909:93;:::i;:::-;17027:2;17022:3;17018:12;17011:19;;16670:366;;;:::o;17042:419::-;17208:4;17246:2;17235:9;17231:18;17223:26;;17295:9;17289:4;17285:20;17281:1;17270:9;17266:17;17259:47;17323:131;17449:4;17323:131;:::i;:::-;17315:139;;17042:419;;;:::o;17467:223::-;17607:34;17603:1;17595:6;17591:14;17584:58;17676:6;17671:2;17663:6;17659:15;17652:31;17467:223;:::o;17696:366::-;17838:3;17859:67;17923:2;17918:3;17859:67;:::i;:::-;17852:74;;17935:93;18024:3;17935:93;:::i;:::-;18053:2;18048:3;18044:12;18037:19;;17696:366;;;:::o;18068:419::-;18234:4;18272:2;18261:9;18257:18;18249:26;;18321:9;18315:4;18311:20;18307:1;18296:9;18292:17;18285:47;18349:131;18475:4;18349:131;:::i;:::-;18341:139;;18068:419;;;:::o;18493:221::-;18633:34;18629:1;18621:6;18617:14;18610:58;18702:4;18697:2;18689:6;18685:15;18678:29;18493:221;:::o;18720:366::-;18862:3;18883:67;18947:2;18942:3;18883:67;:::i;:::-;18876:74;;18959:93;19048:3;18959:93;:::i;:::-;19077:2;19072:3;19068:12;19061:19;;18720:366;;;:::o;19092:419::-;19258:4;19296:2;19285:9;19281:18;19273:26;;19345:9;19339:4;19335:20;19331:1;19320:9;19316:17;19309:47;19373:131;19499:4;19373:131;:::i;:::-;19365:139;;19092:419;;;:::o;19517:180::-;19565:77;19562:1;19555:88;19662:4;19659:1;19652:15;19686:4;19683:1;19676:15;19703:180;19751:77;19748:1;19741:88;19848:4;19845:1;19838:15;19872:4;19869:1;19862:15;19889:143;19946:5;19977:6;19971:13;19962:22;;19993:33;20020:5;19993:33;:::i;:::-;19889:143;;;;:::o;20038:351::-;20108:6;20157:2;20145:9;20136:7;20132:23;20128:32;20125:119;;;20163:79;;:::i;:::-;20125:119;20283:1;20308:64;20364:7;20355:6;20344:9;20340:22;20308:64;:::i;:::-;20298:74;;20254:128;20038:351;;;;:::o;20395:85::-;20440:7;20469:5;20458:16;;20395:85;;;:::o;20486:60::-;20514:3;20535:5;20528:12;;20486:60;;;:::o;20552:158::-;20610:9;20643:61;20661:42;20670:32;20696:5;20670:32;:::i;:::-;20661:42;:::i;:::-;20643:61;:::i;:::-;20630:74;;20552:158;;;:::o;20716:147::-;20811:45;20850:5;20811:45;:::i;:::-;20806:3;20799:58;20716:147;;:::o;20869:114::-;20936:6;20970:5;20964:12;20954:22;;20869:114;;;:::o;20989:184::-;21088:11;21122:6;21117:3;21110:19;21162:4;21157:3;21153:14;21138:29;;20989:184;;;;:::o;21179:132::-;21246:4;21269:3;21261:11;;21299:4;21294:3;21290:14;21282:22;;21179:132;;;:::o;21317:108::-;21394:24;21412:5;21394:24;:::i;:::-;21389:3;21382:37;21317:108;;:::o;21431:179::-;21500:10;21521:46;21563:3;21555:6;21521:46;:::i;:::-;21599:4;21594:3;21590:14;21576:28;;21431:179;;;;:::o;21616:113::-;21686:4;21718;21713:3;21709:14;21701:22;;21616:113;;;:::o;21765:732::-;21884:3;21913:54;21961:5;21913:54;:::i;:::-;21983:86;22062:6;22057:3;21983:86;:::i;:::-;21976:93;;22093:56;22143:5;22093:56;:::i;:::-;22172:7;22203:1;22188:284;22213:6;22210:1;22207:13;22188:284;;;22289:6;22283:13;22316:63;22375:3;22360:13;22316:63;:::i;:::-;22309:70;;22402:60;22455:6;22402:60;:::i;:::-;22392:70;;22248:224;22235:1;22232;22228:9;22223:14;;22188:284;;;22192:14;22488:3;22481:10;;21889:608;;;21765:732;;;;:::o;22503:831::-;22766:4;22804:3;22793:9;22789:19;22781:27;;22818:71;22886:1;22875:9;22871:17;22862:6;22818:71;:::i;:::-;22899:80;22975:2;22964:9;22960:18;22951:6;22899:80;:::i;:::-;23026:9;23020:4;23016:20;23011:2;23000:9;22996:18;22989:48;23054:108;23157:4;23148:6;23054:108;:::i;:::-;23046:116;;23172:72;23240:2;23229:9;23225:18;23216:6;23172:72;:::i;:::-;23254:73;23322:3;23311:9;23307:19;23298:6;23254:73;:::i;:::-;22503:831;;;;;;;;:::o;23340:224::-;23480:34;23476:1;23468:6;23464:14;23457:58;23549:7;23544:2;23536:6;23532:15;23525:32;23340:224;:::o;23570:366::-;23712:3;23733:67;23797:2;23792:3;23733:67;:::i;:::-;23726:74;;23809:93;23898:3;23809:93;:::i;:::-;23927:2;23922:3;23918:12;23911:19;;23570:366;;;:::o;23942:419::-;24108:4;24146:2;24135:9;24131:18;24123:26;;24195:9;24189:4;24185:20;24181:1;24170:9;24166:17;24159:47;24223:131;24349:4;24223:131;:::i;:::-;24215:139;;23942:419;;;:::o;24367:222::-;24507:34;24503:1;24495:6;24491:14;24484:58;24576:5;24571:2;24563:6;24559:15;24552:30;24367:222;:::o;24595:366::-;24737:3;24758:67;24822:2;24817:3;24758:67;:::i;:::-;24751:74;;24834:93;24923:3;24834:93;:::i;:::-;24952:2;24947:3;24943:12;24936:19;;24595:366;;;:::o;24967:419::-;25133:4;25171:2;25160:9;25156:18;25148:26;;25220:9;25214:4;25210:20;25206:1;25195:9;25191:17;25184:47;25248:131;25374:4;25248:131;:::i;:::-;25240:139;;24967:419;;;:::o;25392:228::-;25532:34;25528:1;25520:6;25516:14;25509:58;25601:11;25596:2;25588:6;25584:15;25577:36;25392:228;:::o;25626:366::-;25768:3;25789:67;25853:2;25848:3;25789:67;:::i;:::-;25782:74;;25865:93;25954:3;25865:93;:::i;:::-;25983:2;25978:3;25974:12;25967:19;;25626:366;;;:::o;25998:419::-;26164:4;26202:2;26191:9;26187:18;26179:26;;26251:9;26245:4;26241:20;26237:1;26226:9;26222:17;26215:47;26279:131;26405:4;26279:131;:::i;:::-;26271:139;;25998:419;;;:::o;26423:172::-;26563:24;26559:1;26551:6;26547:14;26540:48;26423:172;:::o;26601:366::-;26743:3;26764:67;26828:2;26823:3;26764:67;:::i;:::-;26757:74;;26840:93;26929:3;26840:93;:::i;:::-;26958:2;26953:3;26949:12;26942:19;;26601:366;;;:::o;26973:419::-;27139:4;27177:2;27166:9;27162:18;27154:26;;27226:9;27220:4;27216:20;27212:1;27201:9;27197:17;27190:47;27254:131;27380:4;27254:131;:::i;:::-;27246:139;;26973:419;;;:::o;27398:220::-;27538:34;27534:1;27526:6;27522:14;27515:58;27607:3;27602:2;27594:6;27590:15;27583:28;27398:220;:::o;27624:366::-;27766:3;27787:67;27851:2;27846:3;27787:67;:::i;:::-;27780:74;;27863:93;27952:3;27863:93;:::i;:::-;27981:2;27976:3;27972:12;27965:19;;27624:366;;;:::o;27996:419::-;28162:4;28200:2;28189:9;28185:18;28177:26;;28249:9;28243:4;28239:20;28235:1;28224:9;28220:17;28213:47;28277:131;28403:4;28277:131;:::i;:::-;28269:139;;27996:419;;;:::o;28421:191::-;28461:3;28480:20;28498:1;28480:20;:::i;:::-;28475:25;;28514:20;28532:1;28514:20;:::i;:::-;28509:25;;28557:1;28554;28550:9;28543:16;;28578:3;28575:1;28572:10;28569:36;;;28585:18;;:::i;:::-;28569:36;28421:191;;;;:::o;28618:176::-;28758:28;28754:1;28746:6;28742:14;28735:52;28618:176;:::o;28800:366::-;28942:3;28963:67;29027:2;29022:3;28963:67;:::i;:::-;28956:74;;29039:93;29128:3;29039:93;:::i;:::-;29157:2;29152:3;29148:12;29141:19;;28800:366;;;:::o;29172:419::-;29338:4;29376:2;29365:9;29361:18;29353:26;;29425:9;29419:4;29415:20;29411:1;29400:9;29396:17;29389:47;29453:131;29579:4;29453:131;:::i;:::-;29445:139;;29172:419;;;:::o;29597:194::-;29637:4;29657:20;29675:1;29657:20;:::i;:::-;29652:25;;29691:20;29709:1;29691:20;:::i;:::-;29686:25;;29735:1;29732;29728:9;29720:17;;29759:1;29753:4;29750:11;29747:37;;;29764:18;;:::i;:::-;29747:37;29597:194;;;;:::o;29797:180::-;29845:77;29842:1;29835:88;29942:4;29939:1;29932:15;29966:4;29963:1;29956:15;29983:185;30023:1;30040:20;30058:1;30040:20;:::i;:::-;30035:25;;30074:20;30092:1;30074:20;:::i;:::-;30069:25;;30113:1;30103:35;;30118:18;;:::i;:::-;30103:35;30160:1;30157;30153:9;30148:14;;29983:185;;;;:::o;30174:220::-;30314:34;30310:1;30302:6;30298:14;30291:58;30383:3;30378:2;30370:6;30366:15;30359:28;30174:220;:::o;30400:366::-;30542:3;30563:67;30627:2;30622:3;30563:67;:::i;:::-;30556:74;;30639:93;30728:3;30639:93;:::i;:::-;30757:2;30752:3;30748:12;30741:19;;30400:366;;;:::o;30772:419::-;30938:4;30976:2;30965:9;30961:18;30953:26;;31025:9;31019:4;31015:20;31011:1;31000:9;30996:17;30989:47;31053:131;31179:4;31053:131;:::i;:::-;31045:139;;30772:419;;;:::o;31197:177::-;31337:29;31333:1;31325:6;31321:14;31314:53;31197:177;:::o;31380:366::-;31522:3;31543:67;31607:2;31602:3;31543:67;:::i;:::-;31536:74;;31619:93;31708:3;31619:93;:::i;:::-;31737:2;31732:3;31728:12;31721:19;;31380:366;;;:::o;31752:419::-;31918:4;31956:2;31945:9;31941:18;31933:26;;32005:9;31999:4;31995:20;31991:1;31980:9;31976:17;31969:47;32033:131;32159:4;32033:131;:::i;:::-;32025:139;;31752:419;;;:::o

Swarm Source

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