ETH Price: $3,490.65 (+2.23%)
Gas: 3 Gwei

Token

Oddy Ai (ODDY)
 

Overview

Max Total Supply

10,000,000 ODDY

Holders

23

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
80,000 ODDY

Value
$0.00
0x0180327bba0ec4fc2875b71a4ab9dc15078fd7b5
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:
OddyAi

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-02-08
*/

// SPDX-License-Identifier: MIT

/*

Oddy AI, the cutting-edge decentralized betting platform built on the Ethereum blockchain. 
Seamlessly integrated with Telegram, Oddy AI offers a secure and transparent betting experience. 
With various kinds of games.

Bot : https://t.me/OddyAi_Bot
Web : https://oddyai.bet/
Telegram : https://t.me/oddyai
X : https://x.com/oddyaiofficial/
Medium : https://medium.com/@oddyai
Docs : https://docs.oddyai.bet/

*/

pragma solidity 0.8.19;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

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

contract OddyAi is Context , IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;
    address private constant deadAddress = address(0xdead);

    uint256 private _initialBuyTax=20;
    uint256 private _initialSellTax=22;
    uint256 private _finalBuyTax=10;
    uint256 private _finalSellTax=15;
    uint256 private _reduceBuyTaxAt=30;
    uint256 private _reduceSellTaxAt=45;
    uint256 private _preventSwapBefore=30;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 10000000 * 10**_decimals;
    string private constant _name = unicode"Oddy Ai";
    string private constant _symbol = unicode"ODDY";
    uint256 public _maxTxAmount = 100000 * 10**_decimals;
    uint256 public _maxWalletSize = 100000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 10000 * 10**_decimals;
    uint256 public _maxTaxSwap= 100000 * 10**_decimals;

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

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(0xd5A6Fe4882d3829d84d226b6214f08ae68d69eC5);
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[deadAddress]= true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;

        if (from != owner() && to != owner()) { 

            if (!tradingOpen) {
                require( 
                  _isExcludedFromFee[from] || _isExcludedFromFee[to],
                  "trading is not yet open"
                );
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                if (limitEffect) {
                    require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                    require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                } 
                _buyCount++;
            }
            
            if ( to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul 
                ((_buyCount>_reduceSellTaxAt)
                    ?_finalSellTax:_initialSellTax).div(100
                );
            } else if (from == uniswapV2Pair && to!= address(this) ){
                taxAmount = amount.mul
                ((_buyCount>_reduceBuyTaxAt)
                    ?_finalBuyTax:_initialBuyTax).div(100
                );
            }

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

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

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

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

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function AddLiquidity() external onlyOwner() {
        require(!tradingOpen,"initialize is already added");
        uint256 tokenAmount = balanceOf(address(this)).sub(_tTotal.mul(_initialBuyTax).div(100));
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(
            address(this), 
            uniswapV2Router.WETH()
        );
        uniswapV2Router.addLiquidityETH{value: address(this).balance} (
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max); 
    }

    function removeLimits () external onlyOwner returns (bool){
        limitEffect = false;
        return true;
    }
    
    function setTax (uint256 _value) external onlyOwner returns (bool) {
        _finalBuyTax = _value;
        _finalSellTax = _value;
        require(_value <= 50);
        return true;
    }

    function openTrade() external onlyOwner returns (bool) {
        require(!tradingOpen,"trading is already open");
        swapEnabled = true;
        tradingOpen = true;
        return true;
    }

    function manualSwap() external{
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }

    function clearstuckETH() external returns (bool) {
        require(tradingOpen,"trading is not yet open");
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          _taxWallet.transfer(ethBalance);
        }
        return true;
    }
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AddLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"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":"clearstuckETH","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_value","type":"uint256"}],"name":"setTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405260146005556016600655600a600755600f600855601e600955602d600a55601e600b556000600c556009600a6200003c919062000687565b620186a06200004c9190620006d8565b600d556009600a6200005f919062000687565b620186a06200006f9190620006d8565b600e556009600a62000082919062000687565b612710620000919190620006d8565b600f556009600a620000a4919062000687565b620186a0620000b49190620006d8565b6010556001601260156101000a81548160ff0219169083151502179055506000601260166101000a81548160ff0219169083151502179055506000601260176101000a81548160ff0219169083151502179055503480156200011557600080fd5b50600062000128620004bc60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073d5a6fe4882d3829d84d226b6214f08ae68d69ec5600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200022b919062000687565b629896806200023b9190620006d8565b600160006200024f620004bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600160036000620002a3620004c460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016003600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000430620004bc60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200048f919062000687565b629896806200049f9190620006d8565b604051620004ae919062000734565b60405180910390a362000751565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200057b57808604811115620005535762000552620004ed565b5b6001851615620005635780820291505b808102905062000573856200051c565b945062000533565b94509492505050565b60008262000596576001905062000669565b81620005a6576000905062000669565b8160018114620005bf5760028114620005ca5762000600565b600191505062000669565b60ff841115620005df57620005de620004ed565b5b8360020a915084821115620005f957620005f8620004ed565b5b5062000669565b5060208310610133831016604e8410600b84101617156200063a5782820a905083811115620006345762000633620004ed565b5b62000669565b62000649848484600162000529565b92509050818404811115620006635762000662620004ed565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620006948262000670565b9150620006a1836200067a565b9250620006d07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000584565b905092915050565b6000620006e58262000670565b9150620006f28362000670565b9250828202620007028162000670565b915082820484148315176200071c576200071b620004ed565b5b5092915050565b6200072e8162000670565b82525050565b60006020820190506200074b600083018462000723565b92915050565b61332480620007616000396000f3fe60806040526004361061012e5760003560e01c8063715018a6116100ab57806395d89b411161006f57806395d89b41146103cb578063a9059cbb146103f6578063a92d4a9214610433578063bf474bed1461045e578063dd62ed3e14610489578063fb201b1d146104c657610135565b8063715018a614610308578063751039fc1461031f5780637d1db4a51461034a5780638da5cb5b146103755780638f9a55c0146103a057610135565b806323b872dd116100f257806323b872dd1461020f5780632e5bb6ff1461024c578063313ce5671461028957806351bc3c85146102b457806370a08231146102cb57610135565b806306fdde031461013a578063095ea7b3146101655780630bc488c5146101a25780630faee56f146101b957806318160ddd146101e457610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104f1565b60405161015c919061234d565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612408565b61052e565b6040516101999190612463565b60405180910390f35b3480156101ae57600080fd5b506101b761054c565b005b3480156101c557600080fd5b506101ce610aa7565b6040516101db919061248d565b60405180910390f35b3480156101f057600080fd5b506101f9610aad565b604051610206919061248d565b60405180910390f35b34801561021b57600080fd5b50610236600480360381019061023191906124a8565b610ad0565b6040516102439190612463565b60405180910390f35b34801561025857600080fd5b50610273600480360381019061026e91906124fb565b610ba9565b6040516102809190612463565b60405180910390f35b34801561029557600080fd5b5061029e610c65565b6040516102ab9190612544565b60405180910390f35b3480156102c057600080fd5b506102c9610c6e565b005b3480156102d757600080fd5b506102f260048036038101906102ed919061255f565b610caa565b6040516102ff919061248d565b60405180910390f35b34801561031457600080fd5b5061031d610cf3565b005b34801561032b57600080fd5b50610334610e46565b6040516103419190612463565b60405180910390f35b34801561035657600080fd5b5061035f610eff565b60405161036c919061248d565b60405180910390f35b34801561038157600080fd5b5061038a610f05565b604051610397919061259b565b60405180910390f35b3480156103ac57600080fd5b506103b5610f2e565b6040516103c2919061248d565b60405180910390f35b3480156103d757600080fd5b506103e0610f34565b6040516103ed919061234d565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190612408565b610f71565b60405161042a9190612463565b60405180910390f35b34801561043f57600080fd5b50610448610f8f565b6040516104559190612463565b60405180910390f35b34801561046a57600080fd5b50610473611060565b604051610480919061248d565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab91906125b6565b611066565b6040516104bd919061248d565b60405180910390f35b3480156104d257600080fd5b506104db6110ed565b6040516104e89190612463565b60405180910390f35b60606040518060400160405280600781526020017f4f64647920416900000000000000000000000000000000000000000000000000815250905090565b600061054261053b611211565b8484611219565b6001905092915050565b610554611211565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d890612642565b60405180910390fd5b601260149054906101000a900460ff1615610631576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610628906126ae565b60405180910390fd5b6000610690610679606461066b6005546009600a61064f9190612830565b6298968061065d919061287b565b6113e290919063ffffffff16565b61145c90919063ffffffff16565b61068230610caa565b6114a690919063ffffffff16565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061072f30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61071c9190612830565b6298968061072a919061287b565b611219565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c091906128d2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086d91906128d2565b6040518363ffffffff1660e01b815260040161088a9291906128ff565b6020604051808303816000875af11580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd91906128d2565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473084600080610959610f05565b426040518863ffffffff1660e01b815260040161097b9695949392919061296d565b60606040518083038185885af1158015610999573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109be91906129e3565b505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610a60929190612a36565b6020604051808303816000875af1158015610a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa39190612a8b565b5050565b60105481565b60006009600a610abd9190612830565b62989680610acb919061287b565b905090565b6000610add8484846114f0565b610b9e84610ae9611211565b610b99856040518060600160405280602881526020016132c760289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b4f611211565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9a9092919063ffffffff16565b611219565b600190509392505050565b6000610bb3611211565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3790612642565b60405180910390fd5b81600781905550816008819055506032821115610c5c57600080fd5b60019050919050565b60006009905090565b6000610c7930610caa565b90506000811115610c8e57610c8d81611efe565b5b60004790506000811115610ca657610ca581612177565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cfb611211565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7f90612642565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610e50611211565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490612642565b60405180910390fd5b6000601260156101000a81548160ff0219169083151502179055506001905090565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606040518060400160405280600481526020017f4f44445900000000000000000000000000000000000000000000000000000000815250905090565b6000610f85610f7e611211565b84846114f0565b6001905092915050565b6000601260149054906101000a900460ff16610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd790612b04565b60405180910390fd5b6000479050600081111561105857600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611056573d6000803e3d6000fd5b505b600191505090565b600f5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006110f7611211565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b90612642565b60405180910390fd5b601260149054906101000a900460ff16156111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90612b70565b60405180910390fd5b6001601260176101000a81548160ff0219169083151502179055506001601260146101000a81548160ff0219169083151502179055506001905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127f90612c02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90612c94565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113d5919061248d565b60405180910390a3505050565b60008083036113f45760009050611456565b60008284611402919061287b565b90508284826114119190612ce3565b14611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890612d86565b60405180910390fd5b809150505b92915050565b600061149e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121e3565b905092915050565b60006114e883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e9a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361155f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155690612e18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590612eaa565b60405180910390fd5b60008111611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890612f3c565b60405180910390fd5b600061161b610f05565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156116895750611659610f05565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bdd57601260149054906101000a900460ff1661178357600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117435750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990612b04565b60405180910390fd5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561182e5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118845750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561195557601260159054906101000a900460ff161561193c57600d548211156118e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118da90612fa8565b60405180910390fd5b600e54826118f085610caa565b6118fa9190612fc8565b111561193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290613048565b60405180910390fd5b5b600c600081548092919061194f90613068565b91905055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119de57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a2657611a1f6064611a11600a54600c54116119fe57600654611a02565b6008545b856113e290919063ffffffff16565b61145c90919063ffffffff16565b9050611af4565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611aaf57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611af357611af06064611ae2600954600c5411611acf57600554611ad3565b6007545b856113e290919063ffffffff16565b61145c90919063ffffffff16565b90505b5b6000611aff30610caa565b9050601260169054906101000a900460ff16158015611b6b5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b835750601260179054906101000a900460ff165b8015611b905750600f5481115b8015611b9f5750600b54600c54115b15611bdb57611bc1611bbc84611bb784601054612246565b612246565b611efe565b60004790506000811115611bd957611bd847612177565b5b505b505b6000811115611ce157611c3881600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225f90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cd8919061248d565b60405180910390a35b611d3382600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dda611d8c82846114a690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225f90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e7f84866114a690919063ffffffff16565b604051611e8c919061248d565b60405180910390a350505050565b6000838311158290611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed9919061234d565b60405180910390fd5b5060008385611ef191906130b0565b9050809150509392505050565b6001601260166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f3657611f356130e4565b5b604051908082528060200260200182016040528015611f645781602001602082028036833780820191505090505b5090503081600081518110611f7c57611f7b613113565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906128d2565b8160018151811061205b5761205a613113565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120c230601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611219565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612126959493929190613200565b600060405180830381600087803b15801561214057600080fd5b505af1158015612154573d6000803e3d6000fd5b50505050506000601260166101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121df573d6000803e3d6000fd5b5050565b6000808311829061222a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612221919061234d565b60405180910390fd5b50600083856122399190612ce3565b9050809150509392505050565b60008183116122555782612257565b815b905092915050565b600080828461226e9190612fc8565b9050838110156122b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122aa906132a6565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122f75780820151818401526020810190506122dc565b60008484015250505050565b6000601f19601f8301169050919050565b600061231f826122bd565b61232981856122c8565b93506123398185602086016122d9565b61234281612303565b840191505092915050565b600060208201905081810360008301526123678184612314565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061239f82612374565b9050919050565b6123af81612394565b81146123ba57600080fd5b50565b6000813590506123cc816123a6565b92915050565b6000819050919050565b6123e5816123d2565b81146123f057600080fd5b50565b600081359050612402816123dc565b92915050565b6000806040838503121561241f5761241e61236f565b5b600061242d858286016123bd565b925050602061243e858286016123f3565b9150509250929050565b60008115159050919050565b61245d81612448565b82525050565b60006020820190506124786000830184612454565b92915050565b612487816123d2565b82525050565b60006020820190506124a2600083018461247e565b92915050565b6000806000606084860312156124c1576124c061236f565b5b60006124cf868287016123bd565b93505060206124e0868287016123bd565b92505060406124f1868287016123f3565b9150509250925092565b6000602082840312156125115761251061236f565b5b600061251f848285016123f3565b91505092915050565b600060ff82169050919050565b61253e81612528565b82525050565b60006020820190506125596000830184612535565b92915050565b6000602082840312156125755761257461236f565b5b6000612583848285016123bd565b91505092915050565b61259581612394565b82525050565b60006020820190506125b0600083018461258c565b92915050565b600080604083850312156125cd576125cc61236f565b5b60006125db858286016123bd565b92505060206125ec858286016123bd565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061262c6020836122c8565b9150612637826125f6565b602082019050919050565b6000602082019050818103600083015261265b8161261f565b9050919050565b7f696e697469616c697a6520697320616c72656164792061646465640000000000600082015250565b6000612698601b836122c8565b91506126a382612662565b602082019050919050565b600060208201905081810360008301526126c78161268b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612754578086048111156127305761272f6126ce565b5b600185161561273f5780820291505b808102905061274d856126fd565b9450612714565b94509492505050565b60008261276d5760019050612829565b8161277b5760009050612829565b8160018114612791576002811461279b576127ca565b6001915050612829565b60ff8411156127ad576127ac6126ce565b5b8360020a9150848211156127c4576127c36126ce565b5b50612829565b5060208310610133831016604e8410600b84101617156127ff5782820a9050838111156127fa576127f96126ce565b5b612829565b61280c848484600161270a565b92509050818404811115612823576128226126ce565b5b81810290505b9392505050565b600061283b826123d2565b915061284683612528565b92506128737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461275d565b905092915050565b6000612886826123d2565b9150612891836123d2565b925082820261289f816123d2565b915082820484148315176128b6576128b56126ce565b5b5092915050565b6000815190506128cc816123a6565b92915050565b6000602082840312156128e8576128e761236f565b5b60006128f6848285016128bd565b91505092915050565b6000604082019050612914600083018561258c565b612921602083018461258c565b9392505050565b6000819050919050565b6000819050919050565b600061295761295261294d84612928565b612932565b6123d2565b9050919050565b6129678161293c565b82525050565b600060c082019050612982600083018961258c565b61298f602083018861247e565b61299c604083018761295e565b6129a9606083018661295e565b6129b6608083018561258c565b6129c360a083018461247e565b979650505050505050565b6000815190506129dd816123dc565b92915050565b6000806000606084860312156129fc576129fb61236f565b5b6000612a0a868287016129ce565b9350506020612a1b868287016129ce565b9250506040612a2c868287016129ce565b9150509250925092565b6000604082019050612a4b600083018561258c565b612a58602083018461247e565b9392505050565b612a6881612448565b8114612a7357600080fd5b50565b600081519050612a8581612a5f565b92915050565b600060208284031215612aa157612aa061236f565b5b6000612aaf84828501612a76565b91505092915050565b7f74726164696e67206973206e6f7420796574206f70656e000000000000000000600082015250565b6000612aee6017836122c8565b9150612af982612ab8565b602082019050919050565b60006020820190508181036000830152612b1d81612ae1565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612b5a6017836122c8565b9150612b6582612b24565b602082019050919050565b60006020820190508181036000830152612b8981612b4d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bec6024836122c8565b9150612bf782612b90565b604082019050919050565b60006020820190508181036000830152612c1b81612bdf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c7e6022836122c8565b9150612c8982612c22565b604082019050919050565b60006020820190508181036000830152612cad81612c71565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612cee826123d2565b9150612cf9836123d2565b925082612d0957612d08612cb4565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d706021836122c8565b9150612d7b82612d14565b604082019050919050565b60006020820190508181036000830152612d9f81612d63565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e026025836122c8565b9150612e0d82612da6565b604082019050919050565b60006020820190508181036000830152612e3181612df5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e946023836122c8565b9150612e9f82612e38565b604082019050919050565b60006020820190508181036000830152612ec381612e87565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f266029836122c8565b9150612f3182612eca565b604082019050919050565b60006020820190508181036000830152612f5581612f19565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612f926019836122c8565b9150612f9d82612f5c565b602082019050919050565b60006020820190508181036000830152612fc181612f85565b9050919050565b6000612fd3826123d2565b9150612fde836123d2565b9250828201905080821115612ff657612ff56126ce565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613032601a836122c8565b915061303d82612ffc565b602082019050919050565b6000602082019050818103600083015261306181613025565b9050919050565b6000613073826123d2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130a5576130a46126ce565b5b600182019050919050565b60006130bb826123d2565b91506130c6836123d2565b92508282039050818111156130de576130dd6126ce565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61317781612394565b82525050565b6000613189838361316e565b60208301905092915050565b6000602082019050919050565b60006131ad82613142565b6131b7818561314d565b93506131c28361315e565b8060005b838110156131f35781516131da888261317d565b97506131e583613195565b9250506001810190506131c6565b5085935050505092915050565b600060a082019050613215600083018861247e565b613222602083018761295e565b818103604083015261323481866131a2565b9050613243606083018561258c565b613250608083018461247e565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613290601b836122c8565b915061329b8261325a565b602082019050919050565b600060208201905081810360008301526132bf81613283565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220904d7c73e5ebc2add477d310c85f2f1a0e53dc4e8b92c2cccf2b9dd7c234779564736f6c63430008130033

Deployed Bytecode

0x60806040526004361061012e5760003560e01c8063715018a6116100ab57806395d89b411161006f57806395d89b41146103cb578063a9059cbb146103f6578063a92d4a9214610433578063bf474bed1461045e578063dd62ed3e14610489578063fb201b1d146104c657610135565b8063715018a614610308578063751039fc1461031f5780637d1db4a51461034a5780638da5cb5b146103755780638f9a55c0146103a057610135565b806323b872dd116100f257806323b872dd1461020f5780632e5bb6ff1461024c578063313ce5671461028957806351bc3c85146102b457806370a08231146102cb57610135565b806306fdde031461013a578063095ea7b3146101655780630bc488c5146101a25780630faee56f146101b957806318160ddd146101e457610135565b3661013557005b600080fd5b34801561014657600080fd5b5061014f6104f1565b60405161015c919061234d565b60405180910390f35b34801561017157600080fd5b5061018c60048036038101906101879190612408565b61052e565b6040516101999190612463565b60405180910390f35b3480156101ae57600080fd5b506101b761054c565b005b3480156101c557600080fd5b506101ce610aa7565b6040516101db919061248d565b60405180910390f35b3480156101f057600080fd5b506101f9610aad565b604051610206919061248d565b60405180910390f35b34801561021b57600080fd5b50610236600480360381019061023191906124a8565b610ad0565b6040516102439190612463565b60405180910390f35b34801561025857600080fd5b50610273600480360381019061026e91906124fb565b610ba9565b6040516102809190612463565b60405180910390f35b34801561029557600080fd5b5061029e610c65565b6040516102ab9190612544565b60405180910390f35b3480156102c057600080fd5b506102c9610c6e565b005b3480156102d757600080fd5b506102f260048036038101906102ed919061255f565b610caa565b6040516102ff919061248d565b60405180910390f35b34801561031457600080fd5b5061031d610cf3565b005b34801561032b57600080fd5b50610334610e46565b6040516103419190612463565b60405180910390f35b34801561035657600080fd5b5061035f610eff565b60405161036c919061248d565b60405180910390f35b34801561038157600080fd5b5061038a610f05565b604051610397919061259b565b60405180910390f35b3480156103ac57600080fd5b506103b5610f2e565b6040516103c2919061248d565b60405180910390f35b3480156103d757600080fd5b506103e0610f34565b6040516103ed919061234d565b60405180910390f35b34801561040257600080fd5b5061041d60048036038101906104189190612408565b610f71565b60405161042a9190612463565b60405180910390f35b34801561043f57600080fd5b50610448610f8f565b6040516104559190612463565b60405180910390f35b34801561046a57600080fd5b50610473611060565b604051610480919061248d565b60405180910390f35b34801561049557600080fd5b506104b060048036038101906104ab91906125b6565b611066565b6040516104bd919061248d565b60405180910390f35b3480156104d257600080fd5b506104db6110ed565b6040516104e89190612463565b60405180910390f35b60606040518060400160405280600781526020017f4f64647920416900000000000000000000000000000000000000000000000000815250905090565b600061054261053b611211565b8484611219565b6001905092915050565b610554611211565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146105e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d890612642565b60405180910390fd5b601260149054906101000a900460ff1615610631576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610628906126ae565b60405180910390fd5b6000610690610679606461066b6005546009600a61064f9190612830565b6298968061065d919061287b565b6113e290919063ffffffff16565b61145c90919063ffffffff16565b61068230610caa565b6114a690919063ffffffff16565b9050737a250d5630b4cf539739df2c5dacb4c659f2488d601160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061072f30601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61071c9190612830565b6298968061072a919061287b565b611219565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561079c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107c091906128d2565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610849573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061086d91906128d2565b6040518363ffffffff1660e01b815260040161088a9291906128ff565b6020604051808303816000875af11580156108a9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108cd91906128d2565b601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473084600080610959610f05565b426040518863ffffffff1660e01b815260040161097b9695949392919061296d565b60606040518083038185885af1158015610999573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906109be91906129e3565b505050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610a60929190612a36565b6020604051808303816000875af1158015610a7f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610aa39190612a8b565b5050565b60105481565b60006009600a610abd9190612830565b62989680610acb919061287b565b905090565b6000610add8484846114f0565b610b9e84610ae9611211565b610b99856040518060600160405280602881526020016132c760289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610b4f611211565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e9a9092919063ffffffff16565b611219565b600190509392505050565b6000610bb3611211565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3790612642565b60405180910390fd5b81600781905550816008819055506032821115610c5c57600080fd5b60019050919050565b60006009905090565b6000610c7930610caa565b90506000811115610c8e57610c8d81611efe565b5b60004790506000811115610ca657610ca581612177565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610cfb611211565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7f90612642565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000610e50611211565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610edd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ed490612642565b60405180910390fd5b6000601260156101000a81548160ff0219169083151502179055506001905090565b600d5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600e5481565b60606040518060400160405280600481526020017f4f44445900000000000000000000000000000000000000000000000000000000815250905090565b6000610f85610f7e611211565b84846114f0565b6001905092915050565b6000601260149054906101000a900460ff16610fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd790612b04565b60405180910390fd5b6000479050600081111561105857600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611056573d6000803e3d6000fd5b505b600191505090565b600f5481565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60006110f7611211565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611184576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117b90612642565b60405180910390fd5b601260149054906101000a900460ff16156111d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111cb90612b70565b60405180910390fd5b6001601260176101000a81548160ff0219169083151502179055506001601260146101000a81548160ff0219169083151502179055506001905090565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161127f90612c02565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90612c94565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113d5919061248d565b60405180910390a3505050565b60008083036113f45760009050611456565b60008284611402919061287b565b90508284826114119190612ce3565b14611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890612d86565b60405180910390fd5b809150505b92915050565b600061149e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506121e3565b905092915050565b60006114e883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611e9a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361155f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155690612e18565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c590612eaa565b60405180910390fd5b60008111611611576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160890612f3c565b60405180910390fd5b600061161b610f05565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156116895750611659610f05565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611bdd57601260149054906101000a900460ff1661178357600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117435750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611782576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177990612b04565b60405180910390fd5b5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614801561182e5750601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156118845750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561195557601260159054906101000a900460ff161561193c57600d548211156118e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118da90612fa8565b60405180910390fd5b600e54826118f085610caa565b6118fa9190612fc8565b111561193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290613048565b60405180910390fd5b5b600c600081548092919061194f90613068565b91905055505b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156119de57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a2657611a1f6064611a11600a54600c54116119fe57600654611a02565b6008545b856113e290919063ffffffff16565b61145c90919063ffffffff16565b9050611af4565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611aaf57503073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611af357611af06064611ae2600954600c5411611acf57600554611ad3565b6007545b856113e290919063ffffffff16565b61145c90919063ffffffff16565b90505b5b6000611aff30610caa565b9050601260169054906101000a900460ff16158015611b6b5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611b835750601260179054906101000a900460ff165b8015611b905750600f5481115b8015611b9f5750600b54600c54115b15611bdb57611bc1611bbc84611bb784601054612246565b612246565b611efe565b60004790506000811115611bd957611bd847612177565b5b505b505b6000811115611ce157611c3881600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225f90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cd8919061248d565b60405180910390a35b611d3382600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114a690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611dda611d8c82846114a690919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461225f90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611e7f84866114a690919063ffffffff16565b604051611e8c919061248d565b60405180910390a350505050565b6000838311158290611ee2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed9919061234d565b60405180910390fd5b5060008385611ef191906130b0565b9050809150509392505050565b6001601260166101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611f3657611f356130e4565b5b604051908082528060200260200182016040528015611f645781602001602082028036833780820191505090505b5090503081600081518110611f7c57611f7b613113565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612023573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061204791906128d2565b8160018151811061205b5761205a613113565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506120c230601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611219565b601160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612126959493929190613200565b600060405180830381600087803b15801561214057600080fd5b505af1158015612154573d6000803e3d6000fd5b50505050506000601260166101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121df573d6000803e3d6000fd5b5050565b6000808311829061222a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612221919061234d565b60405180910390fd5b50600083856122399190612ce3565b9050809150509392505050565b60008183116122555782612257565b815b905092915050565b600080828461226e9190612fc8565b9050838110156122b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122aa906132a6565b60405180910390fd5b8091505092915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122f75780820151818401526020810190506122dc565b60008484015250505050565b6000601f19601f8301169050919050565b600061231f826122bd565b61232981856122c8565b93506123398185602086016122d9565b61234281612303565b840191505092915050565b600060208201905081810360008301526123678184612314565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061239f82612374565b9050919050565b6123af81612394565b81146123ba57600080fd5b50565b6000813590506123cc816123a6565b92915050565b6000819050919050565b6123e5816123d2565b81146123f057600080fd5b50565b600081359050612402816123dc565b92915050565b6000806040838503121561241f5761241e61236f565b5b600061242d858286016123bd565b925050602061243e858286016123f3565b9150509250929050565b60008115159050919050565b61245d81612448565b82525050565b60006020820190506124786000830184612454565b92915050565b612487816123d2565b82525050565b60006020820190506124a2600083018461247e565b92915050565b6000806000606084860312156124c1576124c061236f565b5b60006124cf868287016123bd565b93505060206124e0868287016123bd565b92505060406124f1868287016123f3565b9150509250925092565b6000602082840312156125115761251061236f565b5b600061251f848285016123f3565b91505092915050565b600060ff82169050919050565b61253e81612528565b82525050565b60006020820190506125596000830184612535565b92915050565b6000602082840312156125755761257461236f565b5b6000612583848285016123bd565b91505092915050565b61259581612394565b82525050565b60006020820190506125b0600083018461258c565b92915050565b600080604083850312156125cd576125cc61236f565b5b60006125db858286016123bd565b92505060206125ec858286016123bd565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061262c6020836122c8565b9150612637826125f6565b602082019050919050565b6000602082019050818103600083015261265b8161261f565b9050919050565b7f696e697469616c697a6520697320616c72656164792061646465640000000000600082015250565b6000612698601b836122c8565b91506126a382612662565b602082019050919050565b600060208201905081810360008301526126c78161268b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612754578086048111156127305761272f6126ce565b5b600185161561273f5780820291505b808102905061274d856126fd565b9450612714565b94509492505050565b60008261276d5760019050612829565b8161277b5760009050612829565b8160018114612791576002811461279b576127ca565b6001915050612829565b60ff8411156127ad576127ac6126ce565b5b8360020a9150848211156127c4576127c36126ce565b5b50612829565b5060208310610133831016604e8410600b84101617156127ff5782820a9050838111156127fa576127f96126ce565b5b612829565b61280c848484600161270a565b92509050818404811115612823576128226126ce565b5b81810290505b9392505050565b600061283b826123d2565b915061284683612528565b92506128737fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461275d565b905092915050565b6000612886826123d2565b9150612891836123d2565b925082820261289f816123d2565b915082820484148315176128b6576128b56126ce565b5b5092915050565b6000815190506128cc816123a6565b92915050565b6000602082840312156128e8576128e761236f565b5b60006128f6848285016128bd565b91505092915050565b6000604082019050612914600083018561258c565b612921602083018461258c565b9392505050565b6000819050919050565b6000819050919050565b600061295761295261294d84612928565b612932565b6123d2565b9050919050565b6129678161293c565b82525050565b600060c082019050612982600083018961258c565b61298f602083018861247e565b61299c604083018761295e565b6129a9606083018661295e565b6129b6608083018561258c565b6129c360a083018461247e565b979650505050505050565b6000815190506129dd816123dc565b92915050565b6000806000606084860312156129fc576129fb61236f565b5b6000612a0a868287016129ce565b9350506020612a1b868287016129ce565b9250506040612a2c868287016129ce565b9150509250925092565b6000604082019050612a4b600083018561258c565b612a58602083018461247e565b9392505050565b612a6881612448565b8114612a7357600080fd5b50565b600081519050612a8581612a5f565b92915050565b600060208284031215612aa157612aa061236f565b5b6000612aaf84828501612a76565b91505092915050565b7f74726164696e67206973206e6f7420796574206f70656e000000000000000000600082015250565b6000612aee6017836122c8565b9150612af982612ab8565b602082019050919050565b60006020820190508181036000830152612b1d81612ae1565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b6000612b5a6017836122c8565b9150612b6582612b24565b602082019050919050565b60006020820190508181036000830152612b8981612b4d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612bec6024836122c8565b9150612bf782612b90565b604082019050919050565b60006020820190508181036000830152612c1b81612bdf565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c7e6022836122c8565b9150612c8982612c22565b604082019050919050565b60006020820190508181036000830152612cad81612c71565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612cee826123d2565b9150612cf9836123d2565b925082612d0957612d08612cb4565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d706021836122c8565b9150612d7b82612d14565b604082019050919050565b60006020820190508181036000830152612d9f81612d63565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612e026025836122c8565b9150612e0d82612da6565b604082019050919050565b60006020820190508181036000830152612e3181612df5565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612e946023836122c8565b9150612e9f82612e38565b604082019050919050565b60006020820190508181036000830152612ec381612e87565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612f266029836122c8565b9150612f3182612eca565b604082019050919050565b60006020820190508181036000830152612f5581612f19565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612f926019836122c8565b9150612f9d82612f5c565b602082019050919050565b60006020820190508181036000830152612fc181612f85565b9050919050565b6000612fd3826123d2565b9150612fde836123d2565b9250828201905080821115612ff657612ff56126ce565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000613032601a836122c8565b915061303d82612ffc565b602082019050919050565b6000602082019050818103600083015261306181613025565b9050919050565b6000613073826123d2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036130a5576130a46126ce565b5b600182019050919050565b60006130bb826123d2565b91506130c6836123d2565b92508282039050818111156130de576130dd6126ce565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61317781612394565b82525050565b6000613189838361316e565b60208301905092915050565b6000602082019050919050565b60006131ad82613142565b6131b7818561314d565b93506131c28361315e565b8060005b838110156131f35781516131da888261317d565b97506131e583613195565b9250506001810190506131c6565b5085935050505092915050565b600060a082019050613215600083018861247e565b613222602083018761295e565b818103604083015261323481866131a2565b9050613243606083018561258c565b613250608083018461247e565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613290601b836122c8565b915061329b8261325a565b602082019050919050565b600060208201905081810360008301526132bf81613283565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220904d7c73e5ebc2add477d310c85f2f1a0e53dc4e8b92c2cccf2b9dd7c234779564736f6c63430008130033

Deployed Bytecode Sourcemap

3906:8732:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5801:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6634:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10633:838;;;;;;;;;;;;;:::i;:::-;;5004:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6078:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6803:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11609:194;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5987:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12020:303;;;;;;;;;;;;;:::i;:::-;;6181:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2987:148;;;;;;;;;;;;;:::i;:::-;;11479:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4822:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2773:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4881:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5892:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6308:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12331:269;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4942:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6483:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11811:201;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5801:83;5838:13;5871:5;;;;;;;;;;;;;;;;;5864:12;;5801:83;:::o;6634:161::-;6709:4;6726:39;6735:12;:10;:12::i;:::-;6749:7;6758:6;6726:8;:39::i;:::-;6783:4;6776:11;;6634:161;;;;:::o;10633:838::-;2910:12;:10;:12::i;:::-;2900:22;;:6;;;;;;;;;;:22;;;2892:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10698:11:::1;;;;;;;;;;;10697:12;10689:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;10751:19;10773:66;10802:36;10834:3;10802:27;10814:14;;4639:1;4693:2;:13;;;;:::i;:::-;4682:8;:24;;;;:::i;:::-;10802:11;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;10773:24;10791:4;10773:9;:24::i;:::-;:28;;:66;;;;:::i;:::-;10751:88;;10887:42;10850:15;;:80;;;;;;;;;;;;;;;;;;10941:58;10958:4;10973:15;;;;;;;;;;;4639:1;4693:2;:13;;;;:::i;:::-;4682:8;:24;;;;:::i;:::-;10941:8;:58::i;:::-;11044:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11026:55;;;11104:4;11125:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11026:132;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11010:13;;:148;;;;;;;;;;;;;;;;;;11169:15;;;;;;;;;;;:31;;;11208:21;11254:4;11274:11;11300:1;11316::::0;11332:7:::1;:5;:7::i;:::-;11354:15;11169:211;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11398:13;;;;;;;;;;;11391:29;;;11429:15;;;;;;;;;;;11447:14;11391:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10678:793;10633:838::o:0;5004:50::-;;;;:::o;6078:95::-;6131:7;4639:1;4693:2;:13;;;;:::i;:::-;4682:8;:24;;;;:::i;:::-;6151:14;;6078:95;:::o;6803:313::-;6901:4;6918:36;6928:6;6936:9;6947:6;6918:9;:36::i;:::-;6965:121;6974:6;6982:12;:10;:12::i;:::-;6996:89;7034:6;6996:89;;;;;;;;;;;;;;;;;:11;:19;7008:6;6996:19;;;;;;;;;;;;;;;:33;7016:12;:10;:12::i;:::-;6996:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6965:8;:121::i;:::-;7104:4;7097:11;;6803:313;;;;;:::o;11609:194::-;11670:4;2910:12;:10;:12::i;:::-;2900:22;;:6;;;;;;;;;;:22;;;2892:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11702:6:::1;11687:12;:21;;;;11735:6;11719:13;:22;;;;11770:2;11760:6;:12;;11752:21;;;::::0;::::1;;11791:4;11784:11;;11609:194:::0;;;:::o;5987:83::-;6028:5;4639:1;6046:16;;5987:83;:::o;12020:303::-;12061:20;12082:24;12100:4;12082:9;:24::i;:::-;12061:45;;12133:1;12120:12;:14;12117:73;;;12148:30;12165:12;12148:16;:30::i;:::-;12117:73;12200:18;12219:21;12200:40;;12265:1;12254:10;:12;12251:65;;;12280:24;12293:10;12280:12;:24::i;:::-;12251:65;12050:273;;12020:303::o;6181:119::-;6247:7;6274:9;:18;6284:7;6274:18;;;;;;;;;;;;;;;;6267:25;;6181:119;;;:::o;2987:148::-;2910:12;:10;:12::i;:::-;2900:22;;:6;;;;;;;;;;:22;;;2892:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3094:1:::1;3057:40;;3078:6;::::0;::::1;;;;;;;;3057:40;;;;;;;;;;;;3125:1;3108:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2987:148::o:0;11479:118::-;11532:4;2910:12;:10;:12::i;:::-;2900:22;;:6;;;;;;;;;;:22;;;2892:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11562:5:::1;11548:11;;:19;;;;;;;;;;;;;;;;;;11585:4;11578:11;;11479:118:::0;:::o;4822:52::-;;;;:::o;2773:79::-;2811:7;2838:6;;;;;;;;;;;2831:13;;2773:79;:::o;4881:54::-;;;;:::o;5892:87::-;5931:13;5964:7;;;;;;;;;;;;;;;;;5957:14;;5892:87;:::o;6308:167::-;6386:4;6403:42;6413:12;:10;:12::i;:::-;6427:9;6438:6;6403:9;:42::i;:::-;6463:4;6456:11;;6308:167;;;;:::o;12331:269::-;12374:4;12399:11;;;;;;;;;;;12391:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;12448:18;12467:21;12448:40;;12513:1;12502:10;:12;12499:72;;;12528:10;;;;;;;;;;;:19;;:31;12548:10;12528:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12499:72;12588:4;12581:11;;;12331:269;:::o;4942:55::-;;;;:::o;6483:143::-;6564:7;6591:11;:18;6603:5;6591:18;;;;;;;;;;;;;;;:27;6610:7;6591:27;;;;;;;;;;;;;;;;6584:34;;6483:143;;;;:::o;11811:201::-;11860:4;2910:12;:10;:12::i;:::-;2900:22;;:6;;;;;;;;;;:22;;;2892:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11886:11:::1;;;;;;;;;;;11885:12;11877:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11949:4;11935:11;;:18;;;;;;;;;;;;;;;;;;11978:4;11964:11;;:18;;;;;;;;;;;;;;;;;;12000:4;11993:11;;11811:201:::0;:::o;528:98::-;581:7;608:10;601:17;;528:98;:::o;7124:335::-;7234:1;7217:19;;:5;:19;;;7209:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7315:1;7296:21;;:7;:21;;;7288:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7397:6;7367:11;:18;7379:5;7367:18;;;;;;;;;;;;;;;:27;7386:7;7367:27;;;;;;;;;;;;;;;:36;;;;7435:7;7419:32;;7428:5;7419:32;;;7444:6;7419:32;;;;;;:::i;:::-;;;;;;;;7124:335;;;:::o;1863:246::-;1921:7;1950:1;1945;:6;1941:47;;1975:1;1968:8;;;;1941:47;1998:9;2014:1;2010;:5;;;;:::i;:::-;1998:17;;2043:1;2038;2034;:5;;;;:::i;:::-;:10;2026:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2100:1;2093:8;;;1863:246;;;;;:::o;2117:132::-;2175:7;2202:39;2206:1;2209;2202:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2195:46;;2117:132;;;;:::o;1521:136::-;1579:7;1606:43;1610:1;1613;1606:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1599:50;;1521:136;;;;:::o;7467:2461::-;7571:1;7555:18;;:4;:18;;;7547:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7648:1;7634:16;;:2;:16;;;7626:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7718:1;7709:6;:10;7701:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7776:17;7820:7;:5;:7::i;:::-;7812:15;;:4;:15;;;;:32;;;;;7837:7;:5;:7::i;:::-;7831:13;;:2;:13;;;;7812:32;7808:1764;;;7869:11;;;;;;;;;;;7864:197;;7930:18;:24;7949:4;7930:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;7958:18;:22;7977:2;7958:22;;;;;;;;;;;;;;;;;;;;;;;;;7930:50;7901:144;;;;;;;;;;;;:::i;:::-;;;;;;;;;7864:197;8089:13;;;;;;;;;;;8081:21;;:4;:21;;;:55;;;;;8120:15;;;;;;;;;;;8106:30;;:2;:30;;;;8081:55;:83;;;;;8142:18;:22;8161:2;8142:22;;;;;;;;;;;;;;;;;;;;;;;;;8140:24;8081:83;8077:377;;;8190:11;;;;;;;;;;;8186:222;;;8244:12;;8234:6;:22;;8226:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8343:14;;8333:6;8317:13;8327:2;8317:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8309:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8186:222;8427:9;;:11;;;;;;;;;:::i;:::-;;;;;;8077:377;8493:13;;;;;;;;;;;8487:19;;:2;:19;;;:43;;;;;8525:4;8510:20;;:4;:20;;;;8487:43;8482:471;;;8563:138;8679:3;8563:111;8604:16;;8594:9;;:26;8593:80;;8658:15;;8593:80;;;8644:13;;8593:80;8563:6;:10;;:111;;;;:::i;:::-;:115;;:138;;;;:::i;:::-;8551:150;;8482:471;;;8735:13;;;;;;;;;;;8727:21;;:4;:21;;;:43;;;;;8765:4;8752:18;;:2;:18;;;;8727:43;8723:230;;;8803:134;8915:3;8803:107;8843:15;;8833:9;;:25;8832:77;;8895:14;;8832:77;;;8882:12;;8832:77;8803:6;:10;;:107;;;;:::i;:::-;:111;;:134;;;;:::i;:::-;8791:146;;8723:230;8482:471;8969:28;9000:24;9018:4;9000:9;:24::i;:::-;8969:55;;9062:6;;;;;;;;;;;9061:7;:48;;;;;9096:13;;;;;;;;;;;9090:19;;:2;:19;;;9061:48;:81;;;;;9131:11;;;;;;;;;;;9061:81;:141;;;;;9185:17;;9164:20;:38;9061:141;:191;;;;;9234:18;;9224:9;;:28;9061:191;9039:522;;;9286:67;9303:49;9307:6;9314:37;9318:20;9339:11;;9314:3;:37::i;:::-;9303:3;:49::i;:::-;9286:16;:67::i;:::-;9372:26;9401:21;9372:50;;9465:1;9444:18;:22;9441:105;;;9491:35;9504:21;9491:12;:35::i;:::-;9441:105;9267:294;9039:522;7846:1726;7808:1764;9597:1;9587:9;:11;9584:161;;;9637:39;9666:9;9637;:24;9655:4;9637:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9612:9;:24;9630:4;9612:24;;;;;;;;;;;;;;;:64;;;;9717:4;9694:39;;9703:4;9694:39;;;9723:9;9694:39;;;;;;:::i;:::-;;;;;;;;9584:161;9771:27;9791:6;9771:9;:15;9781:4;9771:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9755:9;:15;9765:4;9755:15;;;;;;;;;;;;;;;:43;;;;9823:40;9841:21;9852:9;9841:6;:10;;:21;;;;:::i;:::-;9823:9;:13;9833:2;9823:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9809:9;:13;9819:2;9809:13;;;;;;;;;;;;;;;:54;;;;9894:2;9879:41;;9888:4;9879:41;;;9898:21;9909:9;9898:6;:10;;:21;;;;:::i;:::-;9879:41;;;;;;:::i;:::-;;;;;;;;7536:2392;7467:2461;;;:::o;1665:190::-;1751:7;1784:1;1779;:6;;1787:12;1771:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1811:9;1827:1;1823;:5;;;;:::i;:::-;1811:17;;1846:1;1839:8;;;1665:190;;;;;:::o;10142:483::-;5333:4;5324:6;;:13;;;;;;;;;;;;;;;;;;10220:21:::1;10258:1;10244:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10220:40;;10289:4;10271;10276:1;10271:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10315:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10305:4;10310:1;10305:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10348:62;10365:4;10380:15;;;;;;;;;;;10398:11;10348:8;:62::i;:::-;10421:15;;;;;;;;;;;:66;;;10502:11;10528:1;10544:4;10571;10591:15;10421:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10209:416;5369:5:::0;5360:6;;:14;;;;;;;;;;;;;;;;;;10142:483;:::o;9936:92::-;9993:10;;;;;;;;;;;:19;;:27;10013:6;9993:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9936:92;:::o;2257:189::-;2343:7;2375:1;2371;:5;2378:12;2363:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2402:9;2418:1;2414;:5;;;;:::i;:::-;2402:17;;2437:1;2430:8;;;2257:189;;;;;:::o;10036:98::-;10093:7;10120:1;10118;:3;10117:9;;10125:1;10117:9;;;10123:1;10117:9;10110:16;;10036:98;;;;:::o;1334:179::-;1392:7;1412:9;1428:1;1424;:5;;;;:::i;:::-;1412:17;;1453:1;1448;:6;;1440:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1504:1;1497:8;;;1334:179;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:329::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:182::-;6495:34;6491:1;6483:6;6479:14;6472:58;6355:182;:::o;6543:366::-;6685:3;6706:67;6770:2;6765:3;6706:67;:::i;:::-;6699:74;;6782:93;6871:3;6782:93;:::i;:::-;6900:2;6895:3;6891:12;6884:19;;6543:366;;;:::o;6915:419::-;7081:4;7119:2;7108:9;7104:18;7096:26;;7168:9;7162:4;7158:20;7154:1;7143:9;7139:17;7132:47;7196:131;7322:4;7196:131;:::i;:::-;7188:139;;6915:419;;;:::o;7340:177::-;7480:29;7476:1;7468:6;7464:14;7457:53;7340:177;:::o;7523:366::-;7665:3;7686:67;7750:2;7745:3;7686:67;:::i;:::-;7679:74;;7762:93;7851:3;7762:93;:::i;:::-;7880:2;7875:3;7871:12;7864:19;;7523:366;;;:::o;7895:419::-;8061:4;8099:2;8088:9;8084:18;8076:26;;8148:9;8142:4;8138:20;8134:1;8123:9;8119:17;8112:47;8176:131;8302:4;8176:131;:::i;:::-;8168:139;;7895:419;;;:::o;8320:180::-;8368:77;8365:1;8358:88;8465:4;8462:1;8455:15;8489:4;8486:1;8479:15;8506:102;8548:8;8595:5;8592:1;8588:13;8567:34;;8506:102;;;:::o;8614:848::-;8675:5;8682:4;8706:6;8697:15;;8730:5;8721:14;;8744:712;8765:1;8755:8;8752:15;8744:712;;;8860:4;8855:3;8851:14;8845:4;8842:24;8839:50;;;8869:18;;:::i;:::-;8839:50;8919:1;8909:8;8905:16;8902:451;;;9334:4;9327:5;9323:16;9314:25;;8902:451;9384:4;9378;9374:15;9366:23;;9414:32;9437:8;9414:32;:::i;:::-;9402:44;;8744:712;;;8614:848;;;;;;;:::o;9468:1073::-;9522:5;9713:8;9703:40;;9734:1;9725:10;;9736:5;;9703:40;9762:4;9752:36;;9779:1;9770:10;;9781:5;;9752:36;9848:4;9896:1;9891:27;;;;9932:1;9927:191;;;;9841:277;;9891:27;9909:1;9900:10;;9911:5;;;9927:191;9972:3;9962:8;9959:17;9956:43;;;9979:18;;:::i;:::-;9956:43;10028:8;10025:1;10021:16;10012:25;;10063:3;10056:5;10053:14;10050:40;;;10070:18;;:::i;:::-;10050:40;10103:5;;;9841:277;;10227:2;10217:8;10214:16;10208:3;10202:4;10199:13;10195:36;10177:2;10167:8;10164:16;10159:2;10153:4;10150:12;10146:35;10130:111;10127:246;;;10283:8;10277:4;10273:19;10264:28;;10318:3;10311:5;10308:14;10305:40;;;10325:18;;:::i;:::-;10305:40;10358:5;;10127:246;10398:42;10436:3;10426:8;10420:4;10417:1;10398:42;:::i;:::-;10383:57;;;;10472:4;10467:3;10463:14;10456:5;10453:25;10450:51;;;10481:18;;:::i;:::-;10450:51;10530:4;10523:5;10519:16;10510:25;;9468:1073;;;;;;:::o;10547:281::-;10605:5;10629:23;10647:4;10629:23;:::i;:::-;10621:31;;10673:25;10689:8;10673:25;:::i;:::-;10661:37;;10717:104;10754:66;10744:8;10738:4;10717:104;:::i;:::-;10708:113;;10547:281;;;;:::o;10834:410::-;10874:7;10897:20;10915:1;10897:20;:::i;:::-;10892:25;;10931:20;10949:1;10931:20;:::i;:::-;10926:25;;10986:1;10983;10979:9;11008:30;11026:11;11008:30;:::i;:::-;10997:41;;11187:1;11178:7;11174:15;11171:1;11168:22;11148:1;11141:9;11121:83;11098:139;;11217:18;;:::i;:::-;11098:139;10882:362;10834:410;;;;:::o;11250:143::-;11307:5;11338:6;11332:13;11323:22;;11354:33;11381:5;11354:33;:::i;:::-;11250:143;;;;:::o;11399:351::-;11469:6;11518:2;11506:9;11497:7;11493:23;11489:32;11486:119;;;11524:79;;:::i;:::-;11486:119;11644:1;11669:64;11725:7;11716:6;11705:9;11701:22;11669:64;:::i;:::-;11659:74;;11615:128;11399:351;;;;:::o;11756:332::-;11877:4;11915:2;11904:9;11900:18;11892:26;;11928:71;11996:1;11985:9;11981:17;11972:6;11928:71;:::i;:::-;12009:72;12077:2;12066:9;12062:18;12053:6;12009:72;:::i;:::-;11756:332;;;;;:::o;12094:85::-;12139:7;12168:5;12157:16;;12094:85;;;:::o;12185:60::-;12213:3;12234:5;12227:12;;12185:60;;;:::o;12251:158::-;12309:9;12342:61;12360:42;12369:32;12395:5;12369:32;:::i;:::-;12360:42;:::i;:::-;12342:61;:::i;:::-;12329:74;;12251:158;;;:::o;12415:147::-;12510:45;12549:5;12510:45;:::i;:::-;12505:3;12498:58;12415:147;;:::o;12568:807::-;12817:4;12855:3;12844:9;12840:19;12832:27;;12869:71;12937:1;12926:9;12922:17;12913:6;12869:71;:::i;:::-;12950:72;13018:2;13007:9;13003:18;12994:6;12950:72;:::i;:::-;13032:80;13108:2;13097:9;13093:18;13084:6;13032:80;:::i;:::-;13122;13198:2;13187:9;13183:18;13174:6;13122:80;:::i;:::-;13212:73;13280:3;13269:9;13265:19;13256:6;13212:73;:::i;:::-;13295;13363:3;13352:9;13348:19;13339:6;13295:73;:::i;:::-;12568:807;;;;;;;;;:::o;13381:143::-;13438:5;13469:6;13463:13;13454:22;;13485:33;13512:5;13485:33;:::i;:::-;13381:143;;;;:::o;13530:663::-;13618:6;13626;13634;13683:2;13671:9;13662:7;13658:23;13654:32;13651:119;;;13689:79;;:::i;:::-;13651:119;13809:1;13834:64;13890:7;13881:6;13870:9;13866:22;13834:64;:::i;:::-;13824:74;;13780:128;13947:2;13973:64;14029:7;14020:6;14009:9;14005:22;13973:64;:::i;:::-;13963:74;;13918:129;14086:2;14112:64;14168:7;14159:6;14148:9;14144:22;14112:64;:::i;:::-;14102:74;;14057:129;13530:663;;;;;:::o;14199:332::-;14320:4;14358:2;14347:9;14343:18;14335:26;;14371:71;14439:1;14428:9;14424:17;14415:6;14371:71;:::i;:::-;14452:72;14520:2;14509:9;14505:18;14496:6;14452:72;:::i;:::-;14199:332;;;;;:::o;14537:116::-;14607:21;14622:5;14607:21;:::i;:::-;14600:5;14597:32;14587:60;;14643:1;14640;14633:12;14587:60;14537:116;:::o;14659:137::-;14713:5;14744:6;14738:13;14729:22;;14760:30;14784:5;14760:30;:::i;:::-;14659:137;;;;:::o;14802:345::-;14869:6;14918:2;14906:9;14897:7;14893:23;14889:32;14886:119;;;14924:79;;:::i;:::-;14886:119;15044:1;15069:61;15122:7;15113:6;15102:9;15098:22;15069:61;:::i;:::-;15059:71;;15015:125;14802:345;;;;:::o;15153:173::-;15293:25;15289:1;15281:6;15277:14;15270:49;15153:173;:::o;15332:366::-;15474:3;15495:67;15559:2;15554:3;15495:67;:::i;:::-;15488:74;;15571:93;15660:3;15571:93;:::i;:::-;15689:2;15684:3;15680:12;15673:19;;15332:366;;;:::o;15704:419::-;15870:4;15908:2;15897:9;15893:18;15885:26;;15957:9;15951:4;15947:20;15943:1;15932:9;15928:17;15921:47;15985:131;16111:4;15985:131;:::i;:::-;15977:139;;15704:419;;;:::o;16129:173::-;16269:25;16265:1;16257:6;16253:14;16246:49;16129:173;:::o;16308:366::-;16450:3;16471:67;16535:2;16530:3;16471:67;:::i;:::-;16464:74;;16547:93;16636:3;16547:93;:::i;:::-;16665:2;16660:3;16656:12;16649:19;;16308:366;;;:::o;16680:419::-;16846:4;16884:2;16873:9;16869:18;16861:26;;16933:9;16927:4;16923:20;16919:1;16908:9;16904:17;16897:47;16961:131;17087:4;16961:131;:::i;:::-;16953:139;;16680:419;;;:::o;17105:223::-;17245:34;17241:1;17233:6;17229:14;17222:58;17314:6;17309:2;17301:6;17297:15;17290:31;17105:223;:::o;17334:366::-;17476:3;17497:67;17561:2;17556:3;17497:67;:::i;:::-;17490:74;;17573:93;17662:3;17573:93;:::i;:::-;17691:2;17686:3;17682:12;17675:19;;17334:366;;;:::o;17706:419::-;17872:4;17910:2;17899:9;17895:18;17887:26;;17959:9;17953:4;17949:20;17945:1;17934:9;17930:17;17923:47;17987:131;18113:4;17987:131;:::i;:::-;17979:139;;17706:419;;;:::o;18131:221::-;18271:34;18267:1;18259:6;18255:14;18248:58;18340:4;18335:2;18327:6;18323:15;18316:29;18131:221;:::o;18358:366::-;18500:3;18521:67;18585:2;18580:3;18521:67;:::i;:::-;18514:74;;18597:93;18686:3;18597:93;:::i;:::-;18715:2;18710:3;18706:12;18699:19;;18358:366;;;:::o;18730:419::-;18896:4;18934:2;18923:9;18919:18;18911:26;;18983:9;18977:4;18973:20;18969:1;18958:9;18954:17;18947:47;19011:131;19137:4;19011:131;:::i;:::-;19003:139;;18730:419;;;:::o;19155:180::-;19203:77;19200:1;19193:88;19300:4;19297:1;19290:15;19324:4;19321:1;19314:15;19341:185;19381:1;19398:20;19416:1;19398:20;:::i;:::-;19393:25;;19432:20;19450:1;19432:20;:::i;:::-;19427:25;;19471:1;19461:35;;19476:18;;:::i;:::-;19461:35;19518:1;19515;19511:9;19506:14;;19341:185;;;;:::o;19532:220::-;19672:34;19668:1;19660:6;19656:14;19649:58;19741:3;19736:2;19728:6;19724:15;19717:28;19532:220;:::o;19758:366::-;19900:3;19921:67;19985:2;19980:3;19921:67;:::i;:::-;19914:74;;19997:93;20086:3;19997:93;:::i;:::-;20115:2;20110:3;20106:12;20099:19;;19758:366;;;:::o;20130:419::-;20296:4;20334:2;20323:9;20319:18;20311:26;;20383:9;20377:4;20373:20;20369:1;20358:9;20354:17;20347:47;20411:131;20537:4;20411:131;:::i;:::-;20403:139;;20130:419;;;:::o;20555:224::-;20695:34;20691:1;20683:6;20679:14;20672:58;20764:7;20759:2;20751:6;20747:15;20740:32;20555:224;:::o;20785:366::-;20927:3;20948:67;21012:2;21007:3;20948:67;:::i;:::-;20941:74;;21024:93;21113:3;21024:93;:::i;:::-;21142:2;21137:3;21133:12;21126:19;;20785:366;;;:::o;21157:419::-;21323:4;21361:2;21350:9;21346:18;21338:26;;21410:9;21404:4;21400:20;21396:1;21385:9;21381:17;21374:47;21438:131;21564:4;21438:131;:::i;:::-;21430:139;;21157:419;;;:::o;21582:222::-;21722:34;21718:1;21710:6;21706:14;21699:58;21791:5;21786:2;21778:6;21774:15;21767:30;21582:222;:::o;21810:366::-;21952:3;21973:67;22037:2;22032:3;21973:67;:::i;:::-;21966:74;;22049:93;22138:3;22049:93;:::i;:::-;22167:2;22162:3;22158:12;22151:19;;21810:366;;;:::o;22182:419::-;22348:4;22386:2;22375:9;22371:18;22363:26;;22435:9;22429:4;22425:20;22421:1;22410:9;22406:17;22399:47;22463:131;22589:4;22463:131;:::i;:::-;22455:139;;22182:419;;;:::o;22607:228::-;22747:34;22743:1;22735:6;22731:14;22724:58;22816:11;22811:2;22803:6;22799:15;22792:36;22607:228;:::o;22841:366::-;22983:3;23004:67;23068:2;23063:3;23004:67;:::i;:::-;22997:74;;23080:93;23169:3;23080:93;:::i;:::-;23198:2;23193:3;23189:12;23182:19;;22841:366;;;:::o;23213:419::-;23379:4;23417:2;23406:9;23402:18;23394:26;;23466:9;23460:4;23456:20;23452:1;23441:9;23437:17;23430:47;23494:131;23620:4;23494:131;:::i;:::-;23486:139;;23213:419;;;:::o;23638:175::-;23778:27;23774:1;23766:6;23762:14;23755:51;23638:175;:::o;23819:366::-;23961:3;23982:67;24046:2;24041:3;23982:67;:::i;:::-;23975:74;;24058:93;24147:3;24058:93;:::i;:::-;24176:2;24171:3;24167:12;24160:19;;23819:366;;;:::o;24191:419::-;24357:4;24395:2;24384:9;24380:18;24372:26;;24444:9;24438:4;24434:20;24430:1;24419:9;24415:17;24408:47;24472:131;24598:4;24472:131;:::i;:::-;24464:139;;24191:419;;;:::o;24616:191::-;24656:3;24675:20;24693:1;24675:20;:::i;:::-;24670:25;;24709:20;24727:1;24709:20;:::i;:::-;24704:25;;24752:1;24749;24745:9;24738:16;;24773:3;24770:1;24767:10;24764:36;;;24780:18;;:::i;:::-;24764:36;24616:191;;;;:::o;24813:176::-;24953:28;24949:1;24941:6;24937:14;24930:52;24813:176;:::o;24995:366::-;25137:3;25158:67;25222:2;25217:3;25158:67;:::i;:::-;25151:74;;25234:93;25323:3;25234:93;:::i;:::-;25352:2;25347:3;25343:12;25336:19;;24995:366;;;:::o;25367:419::-;25533:4;25571:2;25560:9;25556:18;25548:26;;25620:9;25614:4;25610:20;25606:1;25595:9;25591:17;25584:47;25648:131;25774:4;25648:131;:::i;:::-;25640:139;;25367:419;;;:::o;25792:233::-;25831:3;25854:24;25872:5;25854:24;:::i;:::-;25845:33;;25900:66;25893:5;25890:77;25887:103;;25970:18;;:::i;:::-;25887:103;26017:1;26010:5;26006:13;25999:20;;25792:233;;;:::o;26031:194::-;26071:4;26091:20;26109:1;26091:20;:::i;:::-;26086:25;;26125:20;26143:1;26125:20;:::i;:::-;26120:25;;26169:1;26166;26162:9;26154:17;;26193:1;26187:4;26184:11;26181:37;;;26198:18;;:::i;:::-;26181:37;26031:194;;;;:::o;26231:180::-;26279:77;26276:1;26269:88;26376:4;26373:1;26366:15;26400:4;26397:1;26390:15;26417:180;26465:77;26462:1;26455:88;26562:4;26559:1;26552:15;26586:4;26583:1;26576:15;26603:114;26670:6;26704:5;26698:12;26688:22;;26603:114;;;:::o;26723:184::-;26822:11;26856:6;26851:3;26844:19;26896:4;26891:3;26887:14;26872:29;;26723:184;;;;:::o;26913:132::-;26980:4;27003:3;26995:11;;27033:4;27028:3;27024:14;27016:22;;26913:132;;;:::o;27051:108::-;27128:24;27146:5;27128:24;:::i;:::-;27123:3;27116:37;27051:108;;:::o;27165:179::-;27234:10;27255:46;27297:3;27289:6;27255:46;:::i;:::-;27333:4;27328:3;27324:14;27310:28;;27165:179;;;;:::o;27350:113::-;27420:4;27452;27447:3;27443:14;27435:22;;27350:113;;;:::o;27499:732::-;27618:3;27647:54;27695:5;27647:54;:::i;:::-;27717:86;27796:6;27791:3;27717:86;:::i;:::-;27710:93;;27827:56;27877:5;27827:56;:::i;:::-;27906:7;27937:1;27922:284;27947:6;27944:1;27941:13;27922:284;;;28023:6;28017:13;28050:63;28109:3;28094:13;28050:63;:::i;:::-;28043:70;;28136:60;28189:6;28136:60;:::i;:::-;28126:70;;27982:224;27969:1;27966;27962:9;27957:14;;27922:284;;;27926:14;28222:3;28215:10;;27623:608;;;27499:732;;;;:::o;28237:831::-;28500:4;28538:3;28527:9;28523:19;28515:27;;28552:71;28620:1;28609:9;28605:17;28596:6;28552:71;:::i;:::-;28633:80;28709:2;28698:9;28694:18;28685:6;28633:80;:::i;:::-;28760:9;28754:4;28750:20;28745:2;28734:9;28730:18;28723:48;28788:108;28891:4;28882:6;28788:108;:::i;:::-;28780:116;;28906:72;28974:2;28963:9;28959:18;28950:6;28906:72;:::i;:::-;28988:73;29056:3;29045:9;29041:19;29032:6;28988:73;:::i;:::-;28237:831;;;;;;;;:::o;29074:177::-;29214:29;29210:1;29202:6;29198:14;29191:53;29074:177;:::o;29257:366::-;29399:3;29420:67;29484:2;29479:3;29420:67;:::i;:::-;29413:74;;29496:93;29585:3;29496:93;:::i;:::-;29614:2;29609:3;29605:12;29598:19;;29257:366;;;:::o;29629:419::-;29795:4;29833:2;29822:9;29818:18;29810:26;;29882:9;29876:4;29872:20;29868:1;29857:9;29853:17;29846:47;29910:131;30036:4;29910:131;:::i;:::-;29902:139;;29629:419;;;:::o

Swarm Source

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