ETH Price: $1,821.34 (-4.90%)
 

Overview

Max Total Supply

1,000,000,000 BUTERION

Holders

86

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Buterion

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

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

// SPDX-License-Identifier: UNLICENSE

/*
TG: https://t.me/ButerionEth
X: https://x.com/buteriononeth
Website: https://buterion.xyz/
*/

pragma solidity 0.8.23;

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

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

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

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

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

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

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

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

}

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

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

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

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

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

}

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

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

contract Buterion is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=23;
    uint256 private _initialSellTax=10;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=3;
    uint256 private _reduceSellTaxAt=3;
    uint256 private _preventSwapBefore=20;
    uint256 private _transferTax=0;
    uint256 private _buyCount=0;

    uint8 private constant _decimals = 18;
    uint256 private constant _tTotal = 1000000000 * 10**_decimals;
    string private constant _name = "Buterion";
    string private constant _symbol = "BUTERION";
    uint256 public _maxTxAmount = 20000000 * 10**_decimals;
    uint256 public _maxWalletSize = 20000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 20000000 * 10**_decimals;
    
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;
    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

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

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

    function 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()) {
            require(!bots[from] && !bots[to]);

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

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

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

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

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


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

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

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

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

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


    function openTrading() external onlyOwner() {
        require(!tradingOpen, "Trading is already open");
        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),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

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

    receive() external payable {}

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

    function manualsend() external {
        require(_msgSender()==_taxWallet);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }
}

Contract Security Audit

Contract ABI

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

60806040526017600655600a6007555f6008555f6009556003600a556003600b556014600c555f600d555f600e556012600a6200003d9190620005fd565b6301312d006200004e91906200064d565b600f556012600a620000619190620005fd565b6301312d006200007291906200064d565b6010556012600a620000859190620005fd565b620f42406200009591906200064d565b6011556012600a620000a89190620005fd565b6301312d00620000b991906200064d565b6012555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff0219169083151502179055505f6015555f60165534801562000104575f80fd5b505f620001166200043d60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001c26200043d60201b60201c565b60055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620002119190620005fd565b633b9aca006200022291906200064d565b60015f620002356200043d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002876200044460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003b16200043d60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200040f9190620005fd565b633b9aca006200042091906200064d565b6040516200042f9190620006a8565b60405180910390a3620006c3565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620004f557808604811115620004cd57620004cc6200046b565b5b6001851615620004dd5780820291505b8081029050620004ed8562000498565b9450620004ad565b94509492505050565b5f826200050f5760019050620005e1565b816200051e575f9050620005e1565b8160018114620005375760028114620005425762000578565b6001915050620005e1565b60ff8411156200055757620005566200046b565b5b8360020a9150848211156200057157620005706200046b565b5b50620005e1565b5060208310610133831016604e8410600b8410161715620005b25782820a905083811115620005ac57620005ab6200046b565b5b620005e1565b620005c18484846001620004a4565b92509050818404811115620005db57620005da6200046b565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200060982620005e8565b91506200061683620005f1565b9250620006457fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004fe565b905092915050565b5f6200065982620005e8565b91506200066683620005e8565b92508282026200067681620005e8565b9150828204841483151762000690576200068f6200046b565b5b5092915050565b620006a281620005e8565b82525050565b5f602082019050620006bd5f83018462000697565b92915050565b61313b80620006d15f395ff3fe60806040526004361061012d575f3560e01c8063715018a6116100aa57806395d89b411161006e57806395d89b4114610380578063a9059cbb146103aa578063bf474bed146103e6578063c9567bf914610410578063dd62ed3e14610426578063ec1f3f631461046257610134565b8063715018a6146102d6578063751039fc146102ec5780637d1db4a5146103025780638da5cb5b1461032c5780638f9a55c01461035657610134565b806323b872dd116100f157806323b872dd14610208578063313ce5671461024457806351bc3c851461026e5780636fc3eaec1461028457806370a082311461029a57610134565b806306fdde0314610138578063095ea7b3146101625780630faee56f1461019e578063109daa99146101c857806318160ddd146101de57610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c61048a565b6040516101599190612235565b60405180910390f35b34801561016d575f80fd5b50610188600480360381019061018391906122e6565b6104c7565b604051610195919061233e565b60405180910390f35b3480156101a9575f80fd5b506101b26104e4565b6040516101bf9190612366565b60405180910390f35b3480156101d3575f80fd5b506101dc6104ea565b005b3480156101e9575f80fd5b506101f26105be565b6040516101ff9190612366565b60405180910390f35b348015610213575f80fd5b5061022e6004803603810190610229919061237f565b6105e1565b60405161023b919061233e565b60405180910390f35b34801561024f575f80fd5b506102586106b5565b60405161026591906123ea565b60405180910390f35b348015610279575f80fd5b506102826106bd565b005b34801561028f575f80fd5b50610298610754565b005b3480156102a5575f80fd5b506102c060048036038101906102bb9190612403565b6107c3565b6040516102cd9190612366565b60405180910390f35b3480156102e1575f80fd5b506102ea610809565b005b3480156102f7575f80fd5b50610300610957565b005b34801561030d575f80fd5b50610316610a86565b6040516103239190612366565b60405180910390f35b348015610337575f80fd5b50610340610a8c565b60405161034d919061243d565b60405180910390f35b348015610361575f80fd5b5061036a610ab3565b6040516103779190612366565b60405180910390f35b34801561038b575f80fd5b50610394610ab9565b6040516103a19190612235565b60405180910390f35b3480156103b5575f80fd5b506103d060048036038101906103cb91906122e6565b610af6565b6040516103dd919061233e565b60405180910390f35b3480156103f1575f80fd5b506103fa610b13565b6040516104079190612366565b60405180910390f35b34801561041b575f80fd5b50610424610b19565b005b348015610431575f80fd5b5061044c60048036038101906104479190612456565b611038565b6040516104599190612366565b60405180910390f35b34801561046d575f80fd5b5061048860048036038101906104839190612494565b6110ba565b005b60606040518060400160405280600881526020017f4275746572696f6e000000000000000000000000000000000000000000000000815250905090565b5f6104da6104d3611146565b848461114d565b6001905092915050565b60125481565b6104f2611146565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461057e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057590612509565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516105b49190612569565b60405180910390a1565b5f6012600a6105cd91906126de565b633b9aca006105dc9190612728565b905090565b5f6105ed848484611310565b6106aa846105f9611146565b6106a5856040518060600160405280602881526020016130de6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61065c611146565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c979092919063ffffffff16565b61114d565b600190509392505050565b5f6012905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106fd611146565b73ffffffffffffffffffffffffffffffffffffffff161461071c575f80fd5b5f610726306107c3565b90505f81111561073a5761073981611cf9565b5b5f4790505f8111156107505761074f81611f64565b5b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610794611146565b73ffffffffffffffffffffffffffffffffffffffff16146107b3575f80fd5b5f4790506107c081611f64565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610811611146565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089490612509565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61095f611146565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e290612509565b60405180910390fd5b6012600a6109f991906126de565b633b9aca00610a089190612728565b600f819055506012600a610a1c91906126de565b633b9aca00610a2b9190612728565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610a6091906126de565b633b9aca00610a6f9190612728565b604051610a7c9190612366565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600881526020017f4255544552494f4e000000000000000000000000000000000000000000000000815250905090565b5f610b09610b02611146565b8484611310565b6001905092915050565b60115481565b610b21611146565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba490612509565b60405180910390fd5b60148054906101000a900460ff1615610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf2906127b3565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c973060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610c8391906126de565b633b9aca00610c929190612728565b61114d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2591906127e5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dcf91906127e5565b6040518363ffffffff1660e01b8152600401610dec929190612810565b6020604051808303815f875af1158015610e08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2c91906127e5565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610eb3306107c3565b5f80610ebd610a8c565b426040518863ffffffff1660e01b8152600401610edf96959493929190612837565b60606040518083038185885af1158015610efb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f2091906128aa565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610fc09291906128fa565b6020604051808303815f875af1158015610fdc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611000919061294b565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110fa611146565b73ffffffffffffffffffffffffffffffffffffffff1614611119575f80fd5b600854811115801561112d57506009548111155b611135575f80fd5b806008819055508060098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b2906129e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122090612a74565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113039190612366565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137590612b02565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e390612b90565b60405180910390fd5b5f811161142e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142590612c1e565b60405180910390fd5b5f611437610a8c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114a55750611475610a8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119e75760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611548575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611550575f80fd5b5f600e5403611598576115956064611587600a54600e541161157457600654611578565b6008545b85611fcc90919063ffffffff16565b61204390919063ffffffff16565b90505b5f600e5411156115cd576115ca60646115bc600d5485611fcc90919063ffffffff16565b61204390919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611676575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116c9575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117c157600f54821115611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a90612c86565b60405180910390fd5b60105482611720856107c3565b61172a9190612ca4565b111561176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290612d21565b60405180910390fd5b6117a76064611799600a54600e54116117865760065461178a565b6008545b85611fcc90919063ffffffff16565b61204390919063ffffffff16565b9050600e5f8154809291906117bb90612d3f565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561184957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561188d5761188a606461187c600b54600e54116118695760075461186d565b6009545b85611fcc90919063ffffffff16565b61204390919063ffffffff16565b90505b5f611897306107c3565b9050601460159054906101000a900460ff16158015611902575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561191a5750601460169054906101000a900460ff165b8015611927575060115481115b80156119365750600c54600e54115b156119e55760165443111561194d575f6015819055505b600360155410611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990612dd0565b60405180910390fd5b6119af6119aa846119a58460125461208c565b61208c565b611cf9565b5f4790505f8111156119c5576119c447611f64565b5b60155f8154809291906119d790612d3f565b919050555043601681905550505b505b5f811115611ae657611a3f8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120a490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611add9190612366565b60405180910390a35b611b368260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bd9611b8d828461210190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120a490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c7c848661210190919063ffffffff16565b604051611c899190612366565b60405180910390a350505050565b5f838311158290611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd59190612235565b60405180910390fd5b505f8385611cec9190612dee565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d3057611d2f612e21565b5b604051908082528060200260200182016040528015611d5e5781602001602082028036833780820191505090505b50905030815f81518110611d7557611d74612e4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3d91906127e5565b81600181518110611e5157611e50612e4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611eb73060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461114d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611f19959493929190612f32565b5f604051808303815f87803b158015611f30575f80fd5b505af1158015611f42573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611fc8573d5f803e3d5ffd5b5050565b5f808303611fdc575f905061203d565b5f8284611fe99190612728565b9050828482611ff89190612fb7565b14612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f90613057565b60405180910390fd5b809150505b92915050565b5f61208483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061214a565b905092915050565b5f81831161209a578261209c565b815b905092915050565b5f8082846120b29190612ca4565b9050838110156120f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ee906130bf565b60405180910390fd5b8091505092915050565b5f61214283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c97565b905092915050565b5f8083118290612190576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121879190612235565b60405180910390fd5b505f838561219e9190612fb7565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156121e25780820151818401526020810190506121c7565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612207826121ab565b61221181856121b5565b93506122218185602086016121c5565b61222a816121ed565b840191505092915050565b5f6020820190508181035f83015261224d81846121fd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61228282612259565b9050919050565b61229281612278565b811461229c575f80fd5b50565b5f813590506122ad81612289565b92915050565b5f819050919050565b6122c5816122b3565b81146122cf575f80fd5b50565b5f813590506122e0816122bc565b92915050565b5f80604083850312156122fc576122fb612255565b5b5f6123098582860161229f565b925050602061231a858286016122d2565b9150509250929050565b5f8115159050919050565b61233881612324565b82525050565b5f6020820190506123515f83018461232f565b92915050565b612360816122b3565b82525050565b5f6020820190506123795f830184612357565b92915050565b5f805f6060848603121561239657612395612255565b5b5f6123a38682870161229f565b93505060206123b48682870161229f565b92505060406123c5868287016122d2565b9150509250925092565b5f60ff82169050919050565b6123e4816123cf565b82525050565b5f6020820190506123fd5f8301846123db565b92915050565b5f6020828403121561241857612417612255565b5b5f6124258482850161229f565b91505092915050565b61243781612278565b82525050565b5f6020820190506124505f83018461242e565b92915050565b5f806040838503121561246c5761246b612255565b5b5f6124798582860161229f565b925050602061248a8582860161229f565b9150509250929050565b5f602082840312156124a9576124a8612255565b5b5f6124b6848285016122d2565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6124f36020836121b5565b91506124fe826124bf565b602082019050919050565b5f6020820190508181035f830152612520816124e7565b9050919050565b5f819050919050565b5f819050919050565b5f61255361254e61254984612527565b612530565b6122b3565b9050919050565b61256381612539565b82525050565b5f60208201905061257c5f83018461255a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612604578086048111156125e0576125df612582565b5b60018516156125ef5780820291505b80810290506125fd856125af565b94506125c4565b94509492505050565b5f8261261c57600190506126d7565b81612629575f90506126d7565b816001811461263f576002811461264957612678565b60019150506126d7565b60ff84111561265b5761265a612582565b5b8360020a91508482111561267257612671612582565b5b506126d7565b5060208310610133831016604e8410600b84101617156126ad5782820a9050838111156126a8576126a7612582565b5b6126d7565b6126ba84848460016125bb565b925090508184048111156126d1576126d0612582565b5b81810290505b9392505050565b5f6126e8826122b3565b91506126f3836123cf565b92506127207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461260d565b905092915050565b5f612732826122b3565b915061273d836122b3565b925082820261274b816122b3565b9150828204841483151761276257612761612582565b5b5092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61279d6017836121b5565b91506127a882612769565b602082019050919050565b5f6020820190508181035f8301526127ca81612791565b9050919050565b5f815190506127df81612289565b92915050565b5f602082840312156127fa576127f9612255565b5b5f612807848285016127d1565b91505092915050565b5f6040820190506128235f83018561242e565b612830602083018461242e565b9392505050565b5f60c08201905061284a5f83018961242e565b6128576020830188612357565b612864604083018761255a565b612871606083018661255a565b61287e608083018561242e565b61288b60a0830184612357565b979650505050505050565b5f815190506128a4816122bc565b92915050565b5f805f606084860312156128c1576128c0612255565b5b5f6128ce86828701612896565b93505060206128df86828701612896565b92505060406128f086828701612896565b9150509250925092565b5f60408201905061290d5f83018561242e565b61291a6020830184612357565b9392505050565b61292a81612324565b8114612934575f80fd5b50565b5f8151905061294581612921565b92915050565b5f602082840312156129605761295f612255565b5b5f61296d84828501612937565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129d06024836121b5565b91506129db82612976565b604082019050919050565b5f6020820190508181035f8301526129fd816129c4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a5e6022836121b5565b9150612a6982612a04565b604082019050919050565b5f6020820190508181035f830152612a8b81612a52565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612aec6025836121b5565b9150612af782612a92565b604082019050919050565b5f6020820190508181035f830152612b1981612ae0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b7a6023836121b5565b9150612b8582612b20565b604082019050919050565b5f6020820190508181035f830152612ba781612b6e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c086029836121b5565b9150612c1382612bae565b604082019050919050565b5f6020820190508181035f830152612c3581612bfc565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612c706019836121b5565b9150612c7b82612c3c565b602082019050919050565b5f6020820190508181035f830152612c9d81612c64565b9050919050565b5f612cae826122b3565b9150612cb9836122b3565b9250828201905080821115612cd157612cd0612582565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612d0b601a836121b5565b9150612d1682612cd7565b602082019050919050565b5f6020820190508181035f830152612d3881612cff565b9050919050565b5f612d49826122b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d7b57612d7a612582565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f612dba6017836121b5565b9150612dc582612d86565b602082019050919050565b5f6020820190508181035f830152612de781612dae565b9050919050565b5f612df8826122b3565b9150612e03836122b3565b9250828203905081811115612e1b57612e1a612582565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612ead81612278565b82525050565b5f612ebe8383612ea4565b60208301905092915050565b5f602082019050919050565b5f612ee082612e7b565b612eea8185612e85565b9350612ef583612e95565b805f5b83811015612f25578151612f0c8882612eb3565b9750612f1783612eca565b925050600181019050612ef8565b5085935050505092915050565b5f60a082019050612f455f830188612357565b612f52602083018761255a565b8181036040830152612f648186612ed6565b9050612f73606083018561242e565b612f806080830184612357565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612fc1826122b3565b9150612fcc836122b3565b925082612fdc57612fdb612f8a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130416021836121b5565b915061304c82612fe7565b604082019050919050565b5f6020820190508181035f83015261306e81613035565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6130a9601b836121b5565b91506130b482613075565b602082019050919050565b5f6020820190508181035f8301526130d68161309d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fdc0fd4741f473f73615f6413dc120c4bdf737e9af33a47badaddfe68b50a91964736f6c63430008170033

Deployed Bytecode

0x60806040526004361061012d575f3560e01c8063715018a6116100aa57806395d89b411161006e57806395d89b4114610380578063a9059cbb146103aa578063bf474bed146103e6578063c9567bf914610410578063dd62ed3e14610426578063ec1f3f631461046257610134565b8063715018a6146102d6578063751039fc146102ec5780637d1db4a5146103025780638da5cb5b1461032c5780638f9a55c01461035657610134565b806323b872dd116100f157806323b872dd14610208578063313ce5671461024457806351bc3c851461026e5780636fc3eaec1461028457806370a082311461029a57610134565b806306fdde0314610138578063095ea7b3146101625780630faee56f1461019e578063109daa99146101c857806318160ddd146101de57610134565b3661013457005b5f80fd5b348015610143575f80fd5b5061014c61048a565b6040516101599190612235565b60405180910390f35b34801561016d575f80fd5b50610188600480360381019061018391906122e6565b6104c7565b604051610195919061233e565b60405180910390f35b3480156101a9575f80fd5b506101b26104e4565b6040516101bf9190612366565b60405180910390f35b3480156101d3575f80fd5b506101dc6104ea565b005b3480156101e9575f80fd5b506101f26105be565b6040516101ff9190612366565b60405180910390f35b348015610213575f80fd5b5061022e6004803603810190610229919061237f565b6105e1565b60405161023b919061233e565b60405180910390f35b34801561024f575f80fd5b506102586106b5565b60405161026591906123ea565b60405180910390f35b348015610279575f80fd5b506102826106bd565b005b34801561028f575f80fd5b50610298610754565b005b3480156102a5575f80fd5b506102c060048036038101906102bb9190612403565b6107c3565b6040516102cd9190612366565b60405180910390f35b3480156102e1575f80fd5b506102ea610809565b005b3480156102f7575f80fd5b50610300610957565b005b34801561030d575f80fd5b50610316610a86565b6040516103239190612366565b60405180910390f35b348015610337575f80fd5b50610340610a8c565b60405161034d919061243d565b60405180910390f35b348015610361575f80fd5b5061036a610ab3565b6040516103779190612366565b60405180910390f35b34801561038b575f80fd5b50610394610ab9565b6040516103a19190612235565b60405180910390f35b3480156103b5575f80fd5b506103d060048036038101906103cb91906122e6565b610af6565b6040516103dd919061233e565b60405180910390f35b3480156103f1575f80fd5b506103fa610b13565b6040516104079190612366565b60405180910390f35b34801561041b575f80fd5b50610424610b19565b005b348015610431575f80fd5b5061044c60048036038101906104479190612456565b611038565b6040516104599190612366565b60405180910390f35b34801561046d575f80fd5b5061048860048036038101906104839190612494565b6110ba565b005b60606040518060400160405280600881526020017f4275746572696f6e000000000000000000000000000000000000000000000000815250905090565b5f6104da6104d3611146565b848461114d565b6001905092915050565b60125481565b6104f2611146565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461057e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057590612509565b60405180910390fd5b5f600d819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516105b49190612569565b60405180910390a1565b5f6012600a6105cd91906126de565b633b9aca006105dc9190612728565b905090565b5f6105ed848484611310565b6106aa846105f9611146565b6106a5856040518060600160405280602881526020016130de6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61065c611146565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611c979092919063ffffffff16565b61114d565b600190509392505050565b5f6012905090565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106fd611146565b73ffffffffffffffffffffffffffffffffffffffff161461071c575f80fd5b5f610726306107c3565b90505f81111561073a5761073981611cf9565b5b5f4790505f8111156107505761074f81611f64565b5b5050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610794611146565b73ffffffffffffffffffffffffffffffffffffffff16146107b3575f80fd5b5f4790506107c081611f64565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610811611146565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461089d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089490612509565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61095f611146565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e290612509565b60405180910390fd5b6012600a6109f991906126de565b633b9aca00610a089190612728565b600f819055506012600a610a1c91906126de565b633b9aca00610a2b9190612728565b6010819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6012600a610a6091906126de565b633b9aca00610a6f9190612728565b604051610a7c9190612366565b60405180910390a1565b600f5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60105481565b60606040518060400160405280600881526020017f4255544552494f4e000000000000000000000000000000000000000000000000815250905090565b5f610b09610b02611146565b8484611310565b6001905092915050565b60115481565b610b21611146565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba490612509565b60405180910390fd5b60148054906101000a900460ff1615610bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bf2906127b3565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610c973060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166012600a610c8391906126de565b633b9aca00610c929190612728565b61114d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d01573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d2591906127e5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610dab573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610dcf91906127e5565b6040518363ffffffff1660e01b8152600401610dec929190612810565b6020604051808303815f875af1158015610e08573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e2c91906127e5565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610eb3306107c3565b5f80610ebd610a8c565b426040518863ffffffff1660e01b8152600401610edf96959493929190612837565b60606040518083038185885af1158015610efb573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190610f2091906128aa565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401610fc09291906128fa565b6020604051808303815f875af1158015610fdc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611000919061294b565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff021916908315150217905550565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166110fa611146565b73ffffffffffffffffffffffffffffffffffffffff1614611119575f80fd5b600854811115801561112d57506009548111155b611135575f80fd5b806008819055508060098190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b2906129e6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161122090612a74565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516113039190612366565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361137e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137590612b02565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e390612b90565b60405180910390fd5b5f811161142e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142590612c1e565b60405180910390fd5b5f611437610a8c565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114a55750611475610a8c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119e75760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611548575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611550575f80fd5b5f600e5403611598576115956064611587600a54600e541161157457600654611578565b6008545b85611fcc90919063ffffffff16565b61204390919063ffffffff16565b90505b5f600e5411156115cd576115ca60646115bc600d5485611fcc90919063ffffffff16565b61204390919063ffffffff16565b90505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611676575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116c9575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156117c157600f54821115611713576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161170a90612c86565b60405180910390fd5b60105482611720856107c3565b61172a9190612ca4565b111561176b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176290612d21565b60405180910390fd5b6117a76064611799600a54600e54116117865760065461178a565b6008545b85611fcc90919063ffffffff16565b61204390919063ffffffff16565b9050600e5f8154809291906117bb90612d3f565b91905055505b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561184957503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561188d5761188a606461187c600b54600e54116118695760075461186d565b6009545b85611fcc90919063ffffffff16565b61204390919063ffffffff16565b90505b5f611897306107c3565b9050601460159054906101000a900460ff16158015611902575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561191a5750601460169054906101000a900460ff165b8015611927575060115481115b80156119365750600c54600e54115b156119e55760165443111561194d575f6015819055505b600360155410611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990612dd0565b60405180910390fd5b6119af6119aa846119a58460125461208c565b61208c565b611cf9565b5f4790505f8111156119c5576119c447611f64565b5b60155f8154809291906119d790612d3f565b919050555043601681905550505b505b5f811115611ae657611a3f8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120a490919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611add9190612366565b60405180910390a35b611b368260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461210190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550611bd9611b8d828461210190919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120a490919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c7c848661210190919063ffffffff16565b604051611c899190612366565b60405180910390a350505050565b5f838311158290611cde576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cd59190612235565b60405180910390fd5b505f8385611cec9190612dee565b9050809150509392505050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611d3057611d2f612e21565b5b604051908082528060200260200182016040528015611d5e5781602001602082028036833780820191505090505b50905030815f81518110611d7557611d74612e4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e3d91906127e5565b81600181518110611e5157611e50612e4e565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611eb73060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461114d565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401611f19959493929190612f32565b5f604051808303815f87803b158015611f30575f80fd5b505af1158015611f42573d5f803e3d5ffd5b50505050505f601460156101000a81548160ff02191690831515021790555050565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611fc8573d5f803e3d5ffd5b5050565b5f808303611fdc575f905061203d565b5f8284611fe99190612728565b9050828482611ff89190612fb7565b14612038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161202f90613057565b60405180910390fd5b809150505b92915050565b5f61208483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061214a565b905092915050565b5f81831161209a578261209c565b815b905092915050565b5f8082846120b29190612ca4565b9050838110156120f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ee906130bf565b60405180910390fd5b8091505092915050565b5f61214283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c97565b905092915050565b5f8083118290612190576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121879190612235565b60405180910390fd5b505f838561219e9190612fb7565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156121e25780820151818401526020810190506121c7565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612207826121ab565b61221181856121b5565b93506122218185602086016121c5565b61222a816121ed565b840191505092915050565b5f6020820190508181035f83015261224d81846121fd565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61228282612259565b9050919050565b61229281612278565b811461229c575f80fd5b50565b5f813590506122ad81612289565b92915050565b5f819050919050565b6122c5816122b3565b81146122cf575f80fd5b50565b5f813590506122e0816122bc565b92915050565b5f80604083850312156122fc576122fb612255565b5b5f6123098582860161229f565b925050602061231a858286016122d2565b9150509250929050565b5f8115159050919050565b61233881612324565b82525050565b5f6020820190506123515f83018461232f565b92915050565b612360816122b3565b82525050565b5f6020820190506123795f830184612357565b92915050565b5f805f6060848603121561239657612395612255565b5b5f6123a38682870161229f565b93505060206123b48682870161229f565b92505060406123c5868287016122d2565b9150509250925092565b5f60ff82169050919050565b6123e4816123cf565b82525050565b5f6020820190506123fd5f8301846123db565b92915050565b5f6020828403121561241857612417612255565b5b5f6124258482850161229f565b91505092915050565b61243781612278565b82525050565b5f6020820190506124505f83018461242e565b92915050565b5f806040838503121561246c5761246b612255565b5b5f6124798582860161229f565b925050602061248a8582860161229f565b9150509250929050565b5f602082840312156124a9576124a8612255565b5b5f6124b6848285016122d2565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6124f36020836121b5565b91506124fe826124bf565b602082019050919050565b5f6020820190508181035f830152612520816124e7565b9050919050565b5f819050919050565b5f819050919050565b5f61255361254e61254984612527565b612530565b6122b3565b9050919050565b61256381612539565b82525050565b5f60208201905061257c5f83018461255a565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612604578086048111156125e0576125df612582565b5b60018516156125ef5780820291505b80810290506125fd856125af565b94506125c4565b94509492505050565b5f8261261c57600190506126d7565b81612629575f90506126d7565b816001811461263f576002811461264957612678565b60019150506126d7565b60ff84111561265b5761265a612582565b5b8360020a91508482111561267257612671612582565b5b506126d7565b5060208310610133831016604e8410600b84101617156126ad5782820a9050838111156126a8576126a7612582565b5b6126d7565b6126ba84848460016125bb565b925090508184048111156126d1576126d0612582565b5b81810290505b9392505050565b5f6126e8826122b3565b91506126f3836123cf565b92506127207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461260d565b905092915050565b5f612732826122b3565b915061273d836122b3565b925082820261274b816122b3565b9150828204841483151761276257612761612582565b5b5092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61279d6017836121b5565b91506127a882612769565b602082019050919050565b5f6020820190508181035f8301526127ca81612791565b9050919050565b5f815190506127df81612289565b92915050565b5f602082840312156127fa576127f9612255565b5b5f612807848285016127d1565b91505092915050565b5f6040820190506128235f83018561242e565b612830602083018461242e565b9392505050565b5f60c08201905061284a5f83018961242e565b6128576020830188612357565b612864604083018761255a565b612871606083018661255a565b61287e608083018561242e565b61288b60a0830184612357565b979650505050505050565b5f815190506128a4816122bc565b92915050565b5f805f606084860312156128c1576128c0612255565b5b5f6128ce86828701612896565b93505060206128df86828701612896565b92505060406128f086828701612896565b9150509250925092565b5f60408201905061290d5f83018561242e565b61291a6020830184612357565b9392505050565b61292a81612324565b8114612934575f80fd5b50565b5f8151905061294581612921565b92915050565b5f602082840312156129605761295f612255565b5b5f61296d84828501612937565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6129d06024836121b5565b91506129db82612976565b604082019050919050565b5f6020820190508181035f8301526129fd816129c4565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f612a5e6022836121b5565b9150612a6982612a04565b604082019050919050565b5f6020820190508181035f830152612a8b81612a52565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612aec6025836121b5565b9150612af782612a92565b604082019050919050565b5f6020820190508181035f830152612b1981612ae0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612b7a6023836121b5565b9150612b8582612b20565b604082019050919050565b5f6020820190508181035f830152612ba781612b6e565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f612c086029836121b5565b9150612c1382612bae565b604082019050919050565b5f6020820190508181035f830152612c3581612bfc565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f612c706019836121b5565b9150612c7b82612c3c565b602082019050919050565b5f6020820190508181035f830152612c9d81612c64565b9050919050565b5f612cae826122b3565b9150612cb9836122b3565b9250828201905080821115612cd157612cd0612582565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f612d0b601a836121b5565b9150612d1682612cd7565b602082019050919050565b5f6020820190508181035f830152612d3881612cff565b9050919050565b5f612d49826122b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d7b57612d7a612582565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f612dba6017836121b5565b9150612dc582612d86565b602082019050919050565b5f6020820190508181035f830152612de781612dae565b9050919050565b5f612df8826122b3565b9150612e03836122b3565b9250828203905081811115612e1b57612e1a612582565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612ead81612278565b82525050565b5f612ebe8383612ea4565b60208301905092915050565b5f602082019050919050565b5f612ee082612e7b565b612eea8185612e85565b9350612ef583612e95565b805f5b83811015612f25578151612f0c8882612eb3565b9750612f1783612eca565b925050600181019050612ef8565b5085935050505092915050565b5f60a082019050612f455f830188612357565b612f52602083018761255a565b8181036040830152612f648186612ed6565b9050612f73606083018561242e565b612f806080830184612357565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612fc1826122b3565b9150612fcc836122b3565b925082612fdc57612fdb612f8a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6130416021836121b5565b915061304c82612fe7565b604082019050919050565b5f6020820190508181035f83015261306e81613035565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6130a9601b836121b5565b91506130b482613075565b602082019050919050565b5f6020820190508181035f8301526130d68161309d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220fdc0fd4741f473f73615f6413dc120c4bdf737e9af33a47badaddfe68b50a91964736f6c63430008170033

Deployed Bytecode Sourcemap

3583:8573:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5544:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6377:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4699:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10432:119;;;;;;;;;;;;;:::i;:::-;;5821:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6546:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5730:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11610:348;;;;;;;;;;;;;:::i;:::-;;11966:187;;;;;;;;;;;;;:::i;:::-;;5924:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2664:148;;;;;;;;;;;;;:::i;:::-;;10265:159;;;;;;;;;;;;;:::i;:::-;;4511:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2450:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4572:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5635:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6051:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4635:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10661:672;;;;;;;;;;;;;:::i;:::-;;6226:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11347:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5544:83;5581:13;5614:5;;;;;;;;;;;;;;;;;5607:12;;5544:83;:::o;6377:161::-;6452:4;6469:39;6478:12;:10;:12::i;:::-;6492:7;6501:6;6469:8;:39::i;:::-;6526:4;6519:11;;6377:161;;;;:::o;4699:52::-;;;;:::o;10432:119::-;2587:12;:10;:12::i;:::-;2577:22;;:6;;;;;;;;;;:22;;;2569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10505:1:::1;10490:12;:16;;;;10522:21;10541:1;10522:21;;;;;;:::i;:::-;;;;;;;;10432:119::o:0;5821:95::-;5874:7;4334:2;4391;:13;;;;:::i;:::-;4378:10;:26;;;;:::i;:::-;5894:14;;5821:95;:::o;6546:313::-;6644:4;6661:36;6671:6;6679:9;6690:6;6661:9;:36::i;:::-;6708:121;6717:6;6725:12;:10;:12::i;:::-;6739:89;6777:6;6739:89;;;;;;;;;;;;;;;;;:11;:19;6751:6;6739:19;;;;;;;;;;;;;;;:33;6759:12;:10;:12::i;:::-;6739:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6708:8;:121::i;:::-;6847:4;6840:11;;6546:313;;;;;:::o;5730:83::-;5771:5;4334:2;5789:16;;5730:83;:::o;11610:348::-;11674:10;;;;;;;;;;;11660:24;;:12;:10;:12::i;:::-;:24;;;11652:33;;;;;;11696:20;11717:24;11735:4;11717:9;:24::i;:::-;11696:45;;11768:1;11755:12;:14;11752:73;;;11783:30;11800:12;11783:16;:30::i;:::-;11752:73;11835:18;11854:21;11835:40;;11900:1;11889:10;:12;11886:65;;;11915:24;11928:10;11915:12;:24::i;:::-;11886:65;11641:317;;11610:348::o;11966:187::-;12030:10;;;;;;;;;;;12016:24;;:12;:10;:12::i;:::-;:24;;;12008:33;;;;;;12052:26;12081:21;12052:50;;12113:32;12126:18;12113:12;:32::i;:::-;11997:156;11966:187::o;5924:119::-;5990:7;6017:9;:18;6027:7;6017:18;;;;;;;;;;;;;;;;6010:25;;5924:119;;;:::o;2664:148::-;2587:12;:10;:12::i;:::-;2577:22;;:6;;;;;;;;;;:22;;;2569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2771:1:::1;2734:40;;2755:6;::::0;::::1;;;;;;;;2734:40;;;;;;;;;;;;2802:1;2785:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2664:148::o:0;10265:159::-;2587:12;:10;:12::i;:::-;2577:22;;:6;;;;;;;;;;:22;;;2569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4334:2:::1;4391;:13;;;;:::i;:::-;4378:10;:26;;;;:::i;:::-;10318:12;:22;;;;4334:2;4391;:13;;;;:::i;:::-;4378:10;:26;;;;:::i;:::-;10351:14;:22;;;;10389:27;4334:2;4391;:13;;;;:::i;:::-;4378:10;:26;;;;:::i;:::-;10389:27;;;;;;:::i;:::-;;;;;;;;10265:159::o:0;4511:54::-;;;;:::o;2450:79::-;2488:7;2515:6;;;;;;;;;;;2508:13;;2450:79;:::o;4572:56::-;;;;:::o;5635:87::-;5674:13;5707:7;;;;;;;;;;;;;;;;;5700:14;;5635:87;:::o;6051:167::-;6129:4;6146:42;6156:12;:10;:12::i;:::-;6170:9;6181:6;6146:9;:42::i;:::-;6206:4;6199:11;;6051:167;;;;:::o;4635:57::-;;;;:::o;10661:672::-;2587:12;:10;:12::i;:::-;2577:22;;:6;;;;;;;;;;:22;;;2569:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;10725:11:::1;::::0;::::1;;;;;;;;10724:12;10716:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;10812:42;10775:15;;:80;;;;;;;;;;;;;;;;;;10866:58;10883:4;10898:15;;;;;;;;;;;4334:2;4391;:13;;;;:::i;:::-;4378:10;:26;;;;:::i;:::-;10866:8;:58::i;:::-;10969:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10951:55;;;11015:4;11022:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10951:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10935:13;;:110;;;;;;;;;;;;;;;;;;11056:15;;;;;;;;;;;:31;;;11095:21;11126:4;11132:24;11150:4;11132:9;:24::i;:::-;11157:1;11159::::0;11161:7:::1;:5;:7::i;:::-;11169:15;11056:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11203:13;;;;;;;;;;;11196:29;;;11234:15;;;;;;;;;;;11252:14;11196:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11292:4;11278:11;;:18;;;;;;;;;;;;;;;;;;11321:4;11307:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;10661:672::o:0;6226:143::-;6307:7;6334:11;:18;6346:5;6334:18;;;;;;;;;;;;;;;:27;6353:7;6334:27;;;;;;;;;;;;;;;;6327:34;;6226:143;;;;:::o;11347:218::-;11422:10;;;;;;;;;;;11408:24;;:12;:10;:12::i;:::-;:24;;;11400:33;;;;;;11459:12;;11450:7;:21;;:47;;;;;11484:13;;11475:7;:22;;11450:47;11442:56;;;;;;11520:7;11507:12;:20;;;;11550:7;11536:13;:21;;;;11347:218;:::o;205:98::-;258:7;285:10;278:17;;205:98;:::o;6867:335::-;6977:1;6960:19;;:5;:19;;;6952:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7058:1;7039:21;;:7;:21;;;7031:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7140:6;7110:11;:18;7122:5;7110:18;;;;;;;;;;;;;;;:27;7129:7;7110:27;;;;;;;;;;;;;;;:36;;;;7178:7;7162:32;;7171:5;7162:32;;;7187:6;7162:32;;;;;;:::i;:::-;;;;;;;;6867:335;;;:::o;7210:2448::-;7314:1;7298:18;;:4;:18;;;7290:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7391:1;7377:16;;:2;:16;;;7369:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7461:1;7452:6;:10;7444:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7519:17;7561:7;:5;:7::i;:::-;7553:15;;:4;:15;;;;:32;;;;;7578:7;:5;:7::i;:::-;7572:13;;:2;:13;;;;7553:32;7549:1753;;;7611:4;:10;7616:4;7611:10;;;;;;;;;;;;;;;;;;;;;;;;;7610:11;:24;;;;;7626:4;:8;7631:2;7626:8;;;;;;;;;;;;;;;;;;;;;;;;;7625:9;7610:24;7602:33;;;;;;7666:1;7655:9;;:12;7652:139;;7699:76;7771:3;7699:67;7721:15;;7711:9;;:25;7710:55;;7751:14;;7710:55;;;7738:12;;7710:55;7699:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7687:88;;7652:139;7818:1;7808:9;;:11;7805:95;;;7851:33;7880:3;7851:24;7862:12;;7851:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;7839:45;;7805:95;7928:13;;;;;;;;;;;7920:21;;:4;:21;;;:55;;;;;7959:15;;;;;;;;;;;7945:30;;:2;:30;;;;7920:55;:83;;;;;7981:18;:22;8000:2;7981:22;;;;;;;;;;;;;;;;;;;;;;;;;7979:24;7920:83;7916:420;;;8043:12;;8033:6;:22;;8025:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8138:14;;8128:6;8112:13;8122:2;8112:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8104:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8214:76;8286:3;8214:67;8236:15;;8226:9;;:25;8225:55;;8266:14;;8225:55;;;8253:12;;8225:55;8214:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;8202:88;;8309:9;;:11;;;;;;;;;:::i;:::-;;;;;;7916:420;8361:13;;;;;;;;;;;8355:19;;:2;:19;;;:43;;;;;8393:4;8378:20;;:4;:20;;;;8355:43;8352:174;;;8431:79;8506:3;8431:70;8453:16;;8443:9;;:26;8442:58;;8485:15;;8442:58;;;8471:13;;8442:58;8431:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8419:91;;8352:174;8542:28;8573:24;8591:4;8573:9;:24::i;:::-;8542:55;;8617:6;;;;;;;;;;;8616:7;:30;;;;;8633:13;;;;;;;;;;;8627:19;;:2;:19;;;8616:30;:45;;;;;8650:11;;;;;;;;;;;8616:45;:89;;;;;8688:17;;8665:20;:40;8616:89;:123;;;;;8721:18;;8709:9;;:30;8616:123;8612:679;;;8779:13;;8764:12;:28;8760:90;;;8829:1;8817:9;:13;;;;8760:90;8888:1;8876:9;;:13;8868:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;8936:69;8953:51;8957:6;8965:38;8969:20;8991:11;;8965:3;:38::i;:::-;8953:3;:51::i;:::-;8936:16;:69::i;:::-;9024:26;9053:21;9024:50;;9118:1;9097:18;:22;9093:106;;;9144:35;9157:21;9144:12;:35::i;:::-;9093:106;9217:9;;:11;;;;;;;;;:::i;:::-;;;;;;9263:12;9247:13;:28;;;;8741:550;8612:679;7587:1715;7549:1753;9327:1;9317:9;:11;9314:161;;;9367:39;9396:9;9367;:24;9385:4;9367:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9342:9;:24;9360:4;9342:24;;;;;;;;;;;;;;;:64;;;;9447:4;9424:39;;9433:4;9424:39;;;9453:9;9424:39;;;;;;:::i;:::-;;;;;;;;9314:161;9501:27;9521:6;9501:9;:15;9511:4;9501:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;9485:9;:15;9495:4;9485:15;;;;;;;;;;;;;;;:43;;;;9553:40;9571:21;9582:9;9571:6;:10;;:21;;;;:::i;:::-;9553:9;:13;9563:2;9553:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;9539:9;:13;9549:2;9539:13;;;;;;;;;;;;;;;:54;;;;9624:2;9609:41;;9618:4;9609:41;;;9628:21;9639:9;9628:6;:10;;:21;;;;:::i;:::-;9609:41;;;;;;:::i;:::-;;;;;;;;7279:2379;7210:2448;;;:::o;1342:190::-;1428:7;1461:1;1456;:6;;1464:12;1448:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1488:9;1504:1;1500;:5;;;;:::i;:::-;1488:17;;1523:1;1516:8;;;1342:190;;;;;:::o;9774:483::-;5162:4;5153:6;;:13;;;;;;;;;;;;;;;;;;9852:21:::1;9890:1;9876:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9852:40;;9921:4;9903;9908:1;9903:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9947:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9937:4;9942:1;9937:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9980:62;9997:4;10012:15;;;;;;;;;;;10030:11;9980:8;:62::i;:::-;10053:15;;;;;;;;;;;:66;;;10134:11;10160:1;10176:4;10203;10223:15;10053:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9841:416;5198:5:::0;5189:6;;:14;;;;;;;;;;;;;;;;;;9774:483;:::o;10559:92::-;10616:10;;;;;;;;;;;:19;;:27;10636:6;10616:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10559:92;:::o;1540:246::-;1598:7;1627:1;1622;:6;1618:47;;1652:1;1645:8;;;;1618:47;1675:9;1691:1;1687;:5;;;;:::i;:::-;1675:17;;1720:1;1715;1711;:5;;;;:::i;:::-;:10;1703:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1777:1;1770:8;;;1540:246;;;;;:::o;1794:132::-;1852:7;1879:39;1883:1;1886;1879:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1872:46;;1794:132;;;;:::o;9668:98::-;9725:7;9752:1;9750;:3;9749:9;;9757:1;9749:9;;;9755:1;9749:9;9742:16;;9668:98;;;;:::o;1011:179::-;1069:7;1089:9;1105:1;1101;:5;;;;:::i;:::-;1089:17;;1130:1;1125;:6;;1117:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1181:1;1174:8;;;1011:179;;;;:::o;1198:136::-;1256:7;1283:43;1287:1;1290;1283:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1276:50;;1198:136;;;;:::o;1934:189::-;2020:7;2052:1;2048;:5;2055:12;2040:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2079:9;2095:1;2091;:5;;;;:::i;:::-;2079:17;;2114:1;2107:8;;;1934:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:474::-;5608:6;5616;5665:2;5653:9;5644:7;5640:23;5636:32;5633:119;;;5671:79;;:::i;:::-;5633:119;5791:1;5816:53;5861:7;5852:6;5841:9;5837:22;5816:53;:::i;:::-;5806:63;;5762:117;5918:2;5944:53;5989:7;5980:6;5969:9;5965:22;5944:53;:::i;:::-;5934:63;;5889:118;5540:474;;;;;:::o;6020:329::-;6079:6;6128:2;6116:9;6107:7;6103:23;6099:32;6096:119;;;6134:79;;:::i;:::-;6096:119;6254:1;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6225:117;6020:329;;;;:::o;6355:182::-;6495:34;6491:1;6483:6;6479:14;6472:58;6355:182;:::o;6543:366::-;6685:3;6706:67;6770:2;6765:3;6706:67;:::i;:::-;6699:74;;6782:93;6871:3;6782:93;:::i;:::-;6900:2;6895:3;6891:12;6884:19;;6543:366;;;:::o;6915:419::-;7081:4;7119:2;7108:9;7104:18;7096:26;;7168:9;7162:4;7158:20;7154:1;7143:9;7139:17;7132:47;7196:131;7322:4;7196:131;:::i;:::-;7188:139;;6915:419;;;:::o;7340:85::-;7385:7;7414:5;7403:16;;7340:85;;;:::o;7431:60::-;7459:3;7480:5;7473:12;;7431:60;;;:::o;7497:158::-;7555:9;7588:61;7606:42;7615:32;7641:5;7615:32;:::i;:::-;7606:42;:::i;:::-;7588:61;:::i;:::-;7575:74;;7497:158;;;:::o;7661:147::-;7756:45;7795:5;7756:45;:::i;:::-;7751:3;7744:58;7661:147;;:::o;7814:238::-;7915:4;7953:2;7942:9;7938:18;7930:26;;7966:79;8042:1;8031:9;8027:17;8018:6;7966:79;:::i;:::-;7814:238;;;;:::o;8058:180::-;8106:77;8103:1;8096:88;8203:4;8200:1;8193:15;8227:4;8224:1;8217:15;8244:102;8286:8;8333:5;8330:1;8326:13;8305:34;;8244:102;;;:::o;8352:848::-;8413:5;8420:4;8444:6;8435:15;;8468:5;8459:14;;8482:712;8503:1;8493:8;8490:15;8482:712;;;8598:4;8593:3;8589:14;8583:4;8580:24;8577:50;;;8607:18;;:::i;:::-;8577:50;8657:1;8647:8;8643:16;8640:451;;;9072:4;9065:5;9061:16;9052:25;;8640:451;9122:4;9116;9112:15;9104:23;;9152:32;9175:8;9152:32;:::i;:::-;9140:44;;8482:712;;;8352:848;;;;;;;:::o;9206:1073::-;9260:5;9451:8;9441:40;;9472:1;9463:10;;9474:5;;9441:40;9500:4;9490:36;;9517:1;9508:10;;9519:5;;9490:36;9586:4;9634:1;9629:27;;;;9670:1;9665:191;;;;9579:277;;9629:27;9647:1;9638:10;;9649:5;;;9665:191;9710:3;9700:8;9697:17;9694:43;;;9717:18;;:::i;:::-;9694:43;9766:8;9763:1;9759:16;9750:25;;9801:3;9794:5;9791:14;9788:40;;;9808:18;;:::i;:::-;9788:40;9841:5;;;9579:277;;9965:2;9955:8;9952:16;9946:3;9940:4;9937:13;9933:36;9915:2;9905:8;9902:16;9897:2;9891:4;9888:12;9884:35;9868:111;9865:246;;;10021:8;10015:4;10011:19;10002:28;;10056:3;10049:5;10046:14;10043:40;;;10063:18;;:::i;:::-;10043:40;10096:5;;9865:246;10136:42;10174:3;10164:8;10158:4;10155:1;10136:42;:::i;:::-;10121:57;;;;10210:4;10205:3;10201:14;10194:5;10191:25;10188:51;;;10219:18;;:::i;:::-;10188:51;10268:4;10261:5;10257:16;10248:25;;9206:1073;;;;;;:::o;10285:281::-;10343:5;10367:23;10385:4;10367:23;:::i;:::-;10359:31;;10411:25;10427:8;10411:25;:::i;:::-;10399:37;;10455:104;10492:66;10482:8;10476:4;10455:104;:::i;:::-;10446:113;;10285:281;;;;:::o;10572:410::-;10612:7;10635:20;10653:1;10635:20;:::i;:::-;10630:25;;10669:20;10687:1;10669:20;:::i;:::-;10664:25;;10724:1;10721;10717:9;10746:30;10764:11;10746:30;:::i;:::-;10735:41;;10925:1;10916:7;10912:15;10909:1;10906:22;10886:1;10879:9;10859:83;10836:139;;10955:18;;:::i;:::-;10836:139;10620:362;10572:410;;;;:::o;10988:173::-;11128:25;11124:1;11116:6;11112:14;11105:49;10988:173;:::o;11167:366::-;11309:3;11330:67;11394:2;11389:3;11330:67;:::i;:::-;11323:74;;11406:93;11495:3;11406:93;:::i;:::-;11524:2;11519:3;11515:12;11508:19;;11167:366;;;:::o;11539:419::-;11705:4;11743:2;11732:9;11728:18;11720:26;;11792:9;11786:4;11782:20;11778:1;11767:9;11763:17;11756:47;11820:131;11946:4;11820:131;:::i;:::-;11812:139;;11539:419;;;:::o;11964:143::-;12021:5;12052:6;12046:13;12037:22;;12068:33;12095:5;12068:33;:::i;:::-;11964:143;;;;:::o;12113:351::-;12183:6;12232:2;12220:9;12211:7;12207:23;12203:32;12200:119;;;12238:79;;:::i;:::-;12200:119;12358:1;12383:64;12439:7;12430:6;12419:9;12415:22;12383:64;:::i;:::-;12373:74;;12329:128;12113:351;;;;:::o;12470:332::-;12591:4;12629:2;12618:9;12614:18;12606:26;;12642:71;12710:1;12699:9;12695:17;12686:6;12642:71;:::i;:::-;12723:72;12791:2;12780:9;12776:18;12767:6;12723:72;:::i;:::-;12470:332;;;;;:::o;12808:807::-;13057:4;13095:3;13084:9;13080:19;13072:27;;13109:71;13177:1;13166:9;13162:17;13153:6;13109:71;:::i;:::-;13190:72;13258:2;13247:9;13243:18;13234:6;13190:72;:::i;:::-;13272:80;13348:2;13337:9;13333:18;13324:6;13272:80;:::i;:::-;13362;13438:2;13427:9;13423:18;13414:6;13362:80;:::i;:::-;13452:73;13520:3;13509:9;13505:19;13496:6;13452:73;:::i;:::-;13535;13603:3;13592:9;13588:19;13579:6;13535:73;:::i;:::-;12808:807;;;;;;;;;:::o;13621:143::-;13678:5;13709:6;13703:13;13694:22;;13725:33;13752:5;13725:33;:::i;:::-;13621:143;;;;:::o;13770:663::-;13858:6;13866;13874;13923:2;13911:9;13902:7;13898:23;13894:32;13891:119;;;13929:79;;:::i;:::-;13891:119;14049:1;14074:64;14130:7;14121:6;14110:9;14106:22;14074:64;:::i;:::-;14064:74;;14020:128;14187:2;14213:64;14269:7;14260:6;14249:9;14245:22;14213:64;:::i;:::-;14203:74;;14158:129;14326:2;14352:64;14408:7;14399:6;14388:9;14384:22;14352:64;:::i;:::-;14342:74;;14297:129;13770:663;;;;;:::o;14439:332::-;14560:4;14598:2;14587:9;14583:18;14575:26;;14611:71;14679:1;14668:9;14664:17;14655:6;14611:71;:::i;:::-;14692:72;14760:2;14749:9;14745:18;14736:6;14692:72;:::i;:::-;14439:332;;;;;:::o;14777:116::-;14847:21;14862:5;14847:21;:::i;:::-;14840:5;14837:32;14827:60;;14883:1;14880;14873:12;14827:60;14777:116;:::o;14899:137::-;14953:5;14984:6;14978:13;14969:22;;15000:30;15024:5;15000:30;:::i;:::-;14899:137;;;;:::o;15042:345::-;15109:6;15158:2;15146:9;15137:7;15133:23;15129:32;15126:119;;;15164:79;;:::i;:::-;15126:119;15284:1;15309:61;15362:7;15353:6;15342:9;15338:22;15309:61;:::i;:::-;15299:71;;15255:125;15042:345;;;;:::o;15393:223::-;15533:34;15529:1;15521:6;15517:14;15510:58;15602:6;15597:2;15589:6;15585:15;15578:31;15393:223;:::o;15622:366::-;15764:3;15785:67;15849:2;15844:3;15785:67;:::i;:::-;15778:74;;15861:93;15950:3;15861:93;:::i;:::-;15979:2;15974:3;15970:12;15963:19;;15622:366;;;:::o;15994:419::-;16160:4;16198:2;16187:9;16183:18;16175:26;;16247:9;16241:4;16237:20;16233:1;16222:9;16218:17;16211:47;16275:131;16401:4;16275:131;:::i;:::-;16267:139;;15994:419;;;:::o;16419:221::-;16559:34;16555:1;16547:6;16543:14;16536:58;16628:4;16623:2;16615:6;16611:15;16604:29;16419:221;:::o;16646:366::-;16788:3;16809:67;16873:2;16868:3;16809:67;:::i;:::-;16802:74;;16885:93;16974:3;16885:93;:::i;:::-;17003:2;16998:3;16994:12;16987:19;;16646:366;;;:::o;17018:419::-;17184:4;17222:2;17211:9;17207:18;17199:26;;17271:9;17265:4;17261:20;17257:1;17246:9;17242:17;17235:47;17299:131;17425:4;17299:131;:::i;:::-;17291:139;;17018:419;;;:::o;17443:224::-;17583:34;17579:1;17571:6;17567:14;17560:58;17652:7;17647:2;17639:6;17635:15;17628:32;17443:224;:::o;17673:366::-;17815:3;17836:67;17900:2;17895:3;17836:67;:::i;:::-;17829:74;;17912:93;18001:3;17912:93;:::i;:::-;18030:2;18025:3;18021:12;18014:19;;17673:366;;;:::o;18045:419::-;18211:4;18249:2;18238:9;18234:18;18226:26;;18298:9;18292:4;18288:20;18284:1;18273:9;18269:17;18262:47;18326:131;18452:4;18326:131;:::i;:::-;18318:139;;18045:419;;;:::o;18470:222::-;18610:34;18606:1;18598:6;18594:14;18587:58;18679:5;18674:2;18666:6;18662:15;18655:30;18470:222;:::o;18698:366::-;18840:3;18861:67;18925:2;18920:3;18861:67;:::i;:::-;18854:74;;18937:93;19026:3;18937:93;:::i;:::-;19055:2;19050:3;19046:12;19039:19;;18698:366;;;:::o;19070:419::-;19236:4;19274:2;19263:9;19259:18;19251:26;;19323:9;19317:4;19313:20;19309:1;19298:9;19294:17;19287:47;19351:131;19477:4;19351:131;:::i;:::-;19343:139;;19070:419;;;:::o;19495:228::-;19635:34;19631:1;19623:6;19619:14;19612:58;19704:11;19699:2;19691:6;19687:15;19680:36;19495:228;:::o;19729:366::-;19871:3;19892:67;19956:2;19951:3;19892:67;:::i;:::-;19885:74;;19968:93;20057:3;19968:93;:::i;:::-;20086:2;20081:3;20077:12;20070:19;;19729:366;;;:::o;20101:419::-;20267:4;20305:2;20294:9;20290:18;20282:26;;20354:9;20348:4;20344:20;20340:1;20329:9;20325:17;20318:47;20382:131;20508:4;20382:131;:::i;:::-;20374:139;;20101:419;;;:::o;20526:175::-;20666:27;20662:1;20654:6;20650:14;20643:51;20526:175;:::o;20707:366::-;20849:3;20870:67;20934:2;20929:3;20870:67;:::i;:::-;20863:74;;20946:93;21035:3;20946:93;:::i;:::-;21064:2;21059:3;21055:12;21048:19;;20707:366;;;:::o;21079:419::-;21245:4;21283:2;21272:9;21268:18;21260:26;;21332:9;21326:4;21322:20;21318:1;21307:9;21303:17;21296:47;21360:131;21486:4;21360:131;:::i;:::-;21352:139;;21079:419;;;:::o;21504:191::-;21544:3;21563:20;21581:1;21563:20;:::i;:::-;21558:25;;21597:20;21615:1;21597:20;:::i;:::-;21592:25;;21640:1;21637;21633:9;21626:16;;21661:3;21658:1;21655:10;21652:36;;;21668:18;;:::i;:::-;21652:36;21504:191;;;;:::o;21701:176::-;21841:28;21837:1;21829:6;21825:14;21818:52;21701:176;:::o;21883:366::-;22025:3;22046:67;22110:2;22105:3;22046:67;:::i;:::-;22039:74;;22122:93;22211:3;22122:93;:::i;:::-;22240:2;22235:3;22231:12;22224:19;;21883:366;;;:::o;22255:419::-;22421:4;22459:2;22448:9;22444:18;22436:26;;22508:9;22502:4;22498:20;22494:1;22483:9;22479:17;22472:47;22536:131;22662:4;22536:131;:::i;:::-;22528:139;;22255:419;;;:::o;22680:233::-;22719:3;22742:24;22760:5;22742:24;:::i;:::-;22733:33;;22788:66;22781:5;22778:77;22775:103;;22858:18;;:::i;:::-;22775:103;22905:1;22898:5;22894:13;22887:20;;22680:233;;;:::o;22919:173::-;23059:25;23055:1;23047:6;23043:14;23036:49;22919:173;:::o;23098:366::-;23240:3;23261:67;23325:2;23320:3;23261:67;:::i;:::-;23254:74;;23337:93;23426:3;23337:93;:::i;:::-;23455:2;23450:3;23446:12;23439:19;;23098:366;;;:::o;23470:419::-;23636:4;23674:2;23663:9;23659:18;23651:26;;23723:9;23717:4;23713:20;23709:1;23698:9;23694:17;23687:47;23751:131;23877:4;23751:131;:::i;:::-;23743:139;;23470:419;;;:::o;23895:194::-;23935:4;23955:20;23973:1;23955:20;:::i;:::-;23950:25;;23989:20;24007:1;23989:20;:::i;:::-;23984:25;;24033:1;24030;24026:9;24018:17;;24057:1;24051:4;24048:11;24045:37;;;24062:18;;:::i;:::-;24045:37;23895:194;;;;:::o;24095:180::-;24143:77;24140:1;24133:88;24240:4;24237:1;24230:15;24264:4;24261:1;24254:15;24281:180;24329:77;24326:1;24319:88;24426:4;24423:1;24416:15;24450:4;24447:1;24440:15;24467:114;24534:6;24568:5;24562:12;24552:22;;24467:114;;;:::o;24587:184::-;24686:11;24720:6;24715:3;24708:19;24760:4;24755:3;24751:14;24736:29;;24587:184;;;;:::o;24777:132::-;24844:4;24867:3;24859:11;;24897:4;24892:3;24888:14;24880:22;;24777:132;;;:::o;24915:108::-;24992:24;25010:5;24992:24;:::i;:::-;24987:3;24980:37;24915:108;;:::o;25029:179::-;25098:10;25119:46;25161:3;25153:6;25119:46;:::i;:::-;25197:4;25192:3;25188:14;25174:28;;25029:179;;;;:::o;25214:113::-;25284:4;25316;25311:3;25307:14;25299:22;;25214:113;;;:::o;25363:732::-;25482:3;25511:54;25559:5;25511:54;:::i;:::-;25581:86;25660:6;25655:3;25581:86;:::i;:::-;25574:93;;25691:56;25741:5;25691:56;:::i;:::-;25770:7;25801:1;25786:284;25811:6;25808:1;25805:13;25786:284;;;25887:6;25881:13;25914:63;25973:3;25958:13;25914:63;:::i;:::-;25907:70;;26000:60;26053:6;26000:60;:::i;:::-;25990:70;;25846:224;25833:1;25830;25826:9;25821:14;;25786:284;;;25790:14;26086:3;26079:10;;25487:608;;;25363:732;;;;:::o;26101:831::-;26364:4;26402:3;26391:9;26387:19;26379:27;;26416:71;26484:1;26473:9;26469:17;26460:6;26416:71;:::i;:::-;26497:80;26573:2;26562:9;26558:18;26549:6;26497:80;:::i;:::-;26624:9;26618:4;26614:20;26609:2;26598:9;26594:18;26587:48;26652:108;26755:4;26746:6;26652:108;:::i;:::-;26644:116;;26770:72;26838:2;26827:9;26823:18;26814:6;26770:72;:::i;:::-;26852:73;26920:3;26909:9;26905:19;26896:6;26852:73;:::i;:::-;26101:831;;;;;;;;:::o;26938:180::-;26986:77;26983:1;26976:88;27083:4;27080:1;27073:15;27107:4;27104:1;27097:15;27124:185;27164:1;27181:20;27199:1;27181:20;:::i;:::-;27176:25;;27215:20;27233:1;27215:20;:::i;:::-;27210:25;;27254:1;27244:35;;27259:18;;:::i;:::-;27244:35;27301:1;27298;27294:9;27289:14;;27124:185;;;;:::o;27315:220::-;27455:34;27451:1;27443:6;27439:14;27432:58;27524:3;27519:2;27511:6;27507:15;27500:28;27315:220;:::o;27541:366::-;27683:3;27704:67;27768:2;27763:3;27704:67;:::i;:::-;27697:74;;27780:93;27869:3;27780:93;:::i;:::-;27898:2;27893:3;27889:12;27882:19;;27541:366;;;:::o;27913:419::-;28079:4;28117:2;28106:9;28102:18;28094:26;;28166:9;28160:4;28156:20;28152:1;28141:9;28137:17;28130:47;28194:131;28320:4;28194:131;:::i;:::-;28186:139;;27913:419;;;:::o;28338:177::-;28478:29;28474:1;28466:6;28462:14;28455:53;28338:177;:::o;28521:366::-;28663:3;28684:67;28748:2;28743:3;28684:67;:::i;:::-;28677:74;;28760:93;28849:3;28760:93;:::i;:::-;28878:2;28873:3;28869:12;28862:19;;28521:366;;;:::o;28893:419::-;29059:4;29097:2;29086:9;29082:18;29074:26;;29146:9;29140:4;29136:20;29132:1;29121:9;29117:17;29110:47;29174:131;29300:4;29174:131;:::i;:::-;29166:139;;28893:419;;;:::o

Swarm Source

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