ETH Price: $3,091.33 (+0.12%)

Token

Bobi ($BOBI)
 

Overview

Max Total Supply

31,000,000,000 $BOBI

Holders

284

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.334619419151555253 $BOBI

Value
$0.00
0xa845526C496b34457eEbf830bd1D44Bc9520683c
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:
BOBI

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-30
*/

// SPDX-License-Identifier: UNLICENSED

/*

TG: https://t.me/bobidotdog
X: https://twitter.com/BOBIdotdog
Web: https://bobi.dog

Who is Bobi?
https://www.guinnessworldrecords.com/news/2023/10/worlds-oldest-dog-ever-bobi-dies-aged-31-760019

*/

pragma solidity 0.8.21;

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

interface ERC20 {
    function getOwner() external view returns (address);
    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);
}

abstract contract Auth {
    address public owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() external onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(owner);
    }
    event OwnershipTransferred(address owner);
}

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

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

contract BOBI is ERC20, Auth {
    using SafeMath for uint256;

    address immutable WETH;
    address constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address constant ZERO = 0x0000000000000000000000000000000000000000;

    string public constant name = "Bobi";
    string public constant symbol = "$BOBI";
    uint8 public constant decimals = 18;

    uint256 public constant totalSupply = 31_000_000_000 * 10**decimals;

    uint256 public _maxWalletToken = totalSupply / 100;

    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) public isWalletLimitExempt;

    uint256 public marketingFee = 85;
    uint256 public operationsFee = 15;
    uint256 public totalFee = marketingFee + operationsFee;
    uint256 public constant feeDenominator = 1000;
    
    uint256 buyMultiplier = 200;
    uint256 sellMultiplier = 500;
    uint256 transferMultiplier = 200;

    address public marketingFeeReceiver;
    address public operationsFeeReceiver;

    IDEXRouter public router;
    address public immutable pair;

    bool public tradingOpen = false;

    bool public swapEnabled = true;
    uint256 public swapThreshold = totalSupply / 200;
    
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        WETH = router.WETH();

        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));
        _allowances[address(this)][address(router)] = type(uint256).max;

        marketingFeeReceiver = 0x87BC96ce48eD1F43DF24E68c1bd89F71ec5B044a;
        operationsFeeReceiver = 0x10D0e964B292e17DCDE03e35b418471f978ED289;

        isFeeExempt[msg.sender] = true;
        isFeeExempt[marketingFeeReceiver] = true;

        isWalletLimitExempt[msg.sender] = true;
        isWalletLimitExempt[marketingFeeReceiver] = true;
        isWalletLimitExempt[address(this)] = true;
        isWalletLimitExempt[DEAD] = true;

        balanceOf[msg.sender] = totalSupply;
        emit Transfer(address(0), msg.sender, totalSupply);
    }

    receive() external payable { }

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

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setMaxWalletPercent(uint256 _newmaxwallet) external onlyOwner {
        require(_newmaxwallet >= 1,"Cannot set max wallet less than 1%");
        _maxWalletToken = (totalSupply * _newmaxwallet ) / 100;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!isFeeExempt[sender]){
            require(tradingOpen,"trading not open yet");
        }

        if (!isWalletLimitExempt[sender] && !isWalletLimitExempt[recipient] && recipient != pair) {
            require((balanceOf[recipient] + amount) <= _maxWalletToken,"max wallet limit reached");
        }

        if(shouldSwapBack()){ swapBack(); }

        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (isFeeExempt[sender] || isFeeExempt[recipient]) ? amount : takeFee(sender, amount, recipient);

        balanceOf[recipient] = balanceOf[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        balanceOf[sender] = balanceOf[sender].sub(amount, "Insufficient Balance");
        balanceOf[recipient] = balanceOf[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        if(amount == 0 || totalFee == 0){
            return amount;
        }

        uint256 multiplier = transferMultiplier;

        if(recipient == pair) {
            multiplier = sellMultiplier;
        } else if(sender == pair) {
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        if(feeAmount > 0){
            balanceOf[address(this)] = balanceOf[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && balanceOf[address(this)] >= swapThreshold;
    }

    function manualSwap() external {
        payable(operationsFeeReceiver).transfer(address(this).balance);
    }

    function openTrading() external onlyOwner {
        tradingOpen = true;
    }

    function swapBack() internal swapping {

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            swapThreshold,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance;

        uint256 amountETHMarketing = (amountETH * marketingFee) / totalFee;
        uint256 amountETHOps = (amountETH * operationsFee) / totalFee;

        payable(marketingFeeReceiver).transfer(amountETHMarketing);
        payable(operationsFeeReceiver).transfer(amountETHOps);
    }

    function setMultipliers(uint256 _buy, uint256 _sell, uint256 _trans) external onlyOwner {
        sellMultiplier = _sell;
        buyMultiplier = _buy;
        transferMultiplier = _trans;
    }

    function setSwapBackSettings(bool _enabled, uint256 _denominator) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = totalSupply / _denominator;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return (totalSupply - balanceOf[DEAD] - balanceOf[ZERO]);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWalletLimitExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"operationsFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"operationsFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxwallet","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setMultipliers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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"}]

60c060405260646012600a620000169190620009a4565b640737be7600620000289190620009f4565b62000034919062000a6b565b6001556055600655600f60075560075460065462000053919062000aa2565b60085560c86009556101f4600a5560c8600b555f600e60146101000a81548160ff0219169083151502179055506001600e60156101000a81548160ff02191690831515021790555060c86012600a620000ad9190620009a4565b640737be7600620000bf9190620009f4565b620000cb919062000a6b565b600f55348015620000da575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001db573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000201919062000b41565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200029f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002c5919062000b41565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396608051306040518363ffffffff1660e01b81526004016200030392919062000b82565b6020604051808303815f875af115801562000320573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000346919062000b41565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055507387bc96ce48ed1f43df24e68c1bd89f71ec5b044a600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310d0e964b292e17dcde03e35b418471f978ed289600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506012600a620007319190620009a4565b640737be7600620007439190620009f4565b60025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620007e39190620009a4565b640737be7600620007f59190620009f4565b60405162000804919062000bbe565b60405180910390a362000bd9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200089c5780860481111562000874576200087362000812565b5b6001851615620008845780820291505b808102905062000894856200083f565b945062000854565b94509492505050565b5f82620008b6576001905062000988565b81620008c5575f905062000988565b8160018114620008de5760028114620008e9576200091f565b600191505062000988565b60ff841115620008fe57620008fd62000812565b5b8360020a91508482111562000918576200091762000812565b5b5062000988565b5060208310610133831016604e8410600b8410161715620009595782820a90508381111562000953576200095262000812565b5b62000988565b6200096884848460016200084b565b9250905081840481111562000982576200098162000812565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620009b0826200098f565b9150620009bd8362000998565b9250620009ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008a5565b905092915050565b5f62000a00826200098f565b915062000a0d836200098f565b925082820262000a1d816200098f565b9150828204841483151762000a375762000a3662000812565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f62000a77826200098f565b915062000a84836200098f565b92508262000a975762000a9662000a3e565b5b828204905092915050565b5f62000aae826200098f565b915062000abb836200098f565b925082820190508082111562000ad65762000ad562000812565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000b0b8262000ae0565b9050919050565b62000b1d8162000aff565b811462000b28575f80fd5b50565b5f8151905062000b3b8162000b12565b92915050565b5f6020828403121562000b595762000b5862000adc565b5b5f62000b688482850162000b2b565b91505092915050565b62000b7c8162000aff565b82525050565b5f60408201905062000b975f83018562000b71565b62000ba6602083018462000b71565b9392505050565b62000bb8816200098f565b82525050565b5f60208201905062000bd35f83018462000bad565b92915050565b60805160a051612c6f62000c175f395f8181610ffe015281816113f80152818161193c01528181611d0d0152611d6a01525f611ac10152612c6f5ff3fe6080604052600436106101fc575f3560e01c80636ddd17131161010c578063a8aa1b311161009f578063dd62ed3e1161006e578063dd62ed3e14610719578063df20fd4914610755578063e96fada21461077d578063f887ea40146107a7578063ffb54a99146107d157610203565b8063a8aa1b3114610661578063a9059cbb1461068b578063c867d60b146106c7578063c9567bf91461070357610203565b806382bf293c116100db57806382bf293c146105bb578063893d20e8146105e35780638da5cb5b1461060d57806395d89b411461063757610203565b80636ddd17131461051557806370a082311461053f578063715018a61461057b57806378109e541461059157610203565b806323b872dd1161018f5780633f4218e01161015e5780633f4218e01461043557806351bc3c8514610471578063571ac8b0146104875780636b67c4df146104c35780636ce46bc3146104ed57610203565b806323b872dd146103695780632b112e49146103a55780632f54bf6e146103cf578063313ce5671461040b57610203565b8063095ea7b3116101cb578063095ea7b3146102af578063180b0d7e146102eb57806318160ddd146103155780631df4ccfc1461033f57610203565b806303382cbb146102075780630445b6671461023157806306fdde031461025b578063090896be1461028557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107fb565b6040516102289190612130565b60405180910390f35b34801561023c575f80fd5b50610245610820565b6040516102529190612161565b60405180910390f35b348015610266575f80fd5b5061026f610826565b60405161027c9190612204565b60405180910390f35b348015610290575f80fd5b5061029961085f565b6040516102a69190612161565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d0919061227c565b610865565b6040516102e291906122d4565b60405180910390f35b3480156102f6575f80fd5b506102ff610952565b60405161030c9190612161565b60405180910390f35b348015610320575f80fd5b50610329610958565b6040516103369190612161565b60405180910390f35b34801561034a575f80fd5b50610353610979565b6040516103609190612161565b60405180910390f35b348015610374575f80fd5b5061038f600480360381019061038a91906122ed565b61097f565b60405161039c91906122d4565b60405180910390f35b3480156103b0575f80fd5b506103b9610b72565b6040516103c69190612161565b60405180910390f35b3480156103da575f80fd5b506103f560048036038101906103f0919061233d565b610c28565b60405161040291906122d4565b60405180910390f35b348015610416575f80fd5b5061041f610c7f565b60405161042c9190612383565b60405180910390f35b348015610440575f80fd5b5061045b6004803603810190610456919061233d565b610c84565b60405161046891906122d4565b60405180910390f35b34801561047c575f80fd5b50610485610ca1565b005b348015610492575f80fd5b506104ad60048036038101906104a8919061233d565b610d08565b6040516104ba91906122d4565b60405180910390f35b3480156104ce575f80fd5b506104d7610d3a565b6040516104e49190612161565b60405180910390f35b3480156104f8575f80fd5b50610513600480360381019061050e919061239c565b610d40565b005b348015610520575f80fd5b50610529610da2565b60405161053691906122d4565b60405180910390f35b34801561054a575f80fd5b506105656004803603810190610560919061233d565b610db5565b6040516105729190612161565b60405180910390f35b348015610586575f80fd5b5061058f610dca565b005b34801561059c575f80fd5b506105a5610ea9565b6040516105b29190612161565b60405180910390f35b3480156105c6575f80fd5b506105e160048036038101906105dc91906123ec565b610eaf565b005b3480156105ee575f80fd5b506105f7610f79565b6040516106049190612130565b60405180910390f35b348015610618575f80fd5b50610621610fa0565b60405161062e9190612130565b60405180910390f35b348015610642575f80fd5b5061064b610fc3565b6040516106589190612204565b60405180910390f35b34801561066c575f80fd5b50610675610ffc565b6040516106829190612130565b60405180910390f35b348015610696575f80fd5b506106b160048036038101906106ac919061227c565b611020565b6040516106be91906122d4565b60405180910390f35b3480156106d2575f80fd5b506106ed60048036038101906106e8919061233d565b611034565b6040516106fa91906122d4565b60405180910390f35b34801561070e575f80fd5b50610717611051565b005b348015610724575f80fd5b5061073f600480360381019061073a9190612417565b6110b6565b60405161074c9190612161565b60405180910390f35b348015610760575f80fd5b5061077b6004803603810190610776919061247f565b611138565b005b348015610788575f80fd5b506107916111cd565b60405161079e9190612130565b60405180910390f35b3480156107b2575f80fd5b506107bb6111f2565b6040516107c89190612518565b60405180910390f35b3480156107dc575f80fd5b506107e5611217565b6040516107f291906122d4565b60405180910390f35b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6040518060400160405280600481526020017f426f62690000000000000000000000000000000000000000000000000000000081525081565b60075481565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109409190612161565b60405180910390a36001905092915050565b6103e881565b6012600a610966919061268d565b640737be760061097691906126d7565b81565b60085481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b5e57610ae1826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461122a9092919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610b6984848461128c565b90509392505050565b5f60025f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460025f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546012600a610bff919061268d565b640737be7600610c0f91906126d7565b610c199190612718565b610c239190612718565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b601281565b6004602052805f5260405f205f915054906101000a900460ff1681565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610d05573d5f803e3d5ffd5b50565b5f610d33827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610865565b9050919050565b60065481565b610d4933610c28565b610d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7f90612795565b60405180910390fd5b81600a819055508260098190555080600b81905550505050565b600e60159054906101000a900460ff1681565b6002602052805f5260405f205f915090505481565b610dd333610c28565b610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0990612795565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610e9f9190612130565b60405180910390a1565b60015481565b610eb833610c28565b610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90612795565b60405180910390fd5b6001811015610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290612823565b60405180910390fd5b6064816012600a610f4c919061268d565b640737be7600610f5c91906126d7565b610f6691906126d7565b610f70919061286e565b60018190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600581526020017f24424f424900000000000000000000000000000000000000000000000000000081525081565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f61102c33848461128c565b905092915050565b6005602052805f5260405f205f915054906101000a900460ff1681565b61105a33610c28565b611099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109090612795565b60405180910390fd5b6001600e60146101000a81548160ff021916908315150217905550565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61114133610c28565b611180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117790612795565b60405180910390fd5b81600e60156101000a81548160ff021916908315150217905550806012600a6111a9919061268d565b640737be76006111b991906126d7565b6111c3919061286e565b600f819055505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60149054906101000a900460ff1681565b5f838311158290611271576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112689190612204565b60405180910390fd5b505f838561127f9190612718565b9050809150509392505050565b5f60105f9054906101000a900460ff16156112b3576112ac84848461176f565b9050611768565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661135157600e60149054906101000a900460ff16611350576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611347906128e8565b60405180910390fd5b5b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156113ef575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561144757507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156114da576001548260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114989190612906565b11156114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d090612983565b60405180910390fd5b5b6114e2611939565b156114f0576114ef611a0a565b5b611577826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461122a9092919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611654575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61166857611663858486611ce8565b61166a565b825b90506116bc8160025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f2a90919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161175a9190612161565b60405180910390a360019150505b9392505050565b5f6117f7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461122a9092919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506118888260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f2a90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119269190612161565b60405180910390a3600190509392505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156119a2575060105f9054906101000a900460ff16155b80156119ba5750600e60159054906101000a900460ff165b8015611a055750600f5460025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b600160105f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a4057611a3f6129a1565b5b604051908082528060200260200182016040528015611a6e5781602001602082028036833780820191505090505b50905030815f81518110611a8557611a846129ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611af457611af36129ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947600f545f8430426040518663ffffffff1660e01b8152600401611b92959493929190612aeb565b5f604051808303815f87803b158015611ba9575f80fd5b505af1158015611bbb573d5f803e3d5ffd5b505050505f4790505f60085460065483611bd591906126d7565b611bdf919061286e565b90505f60085460075484611bf391906126d7565b611bfd919061286e565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611c63573d5f803e3d5ffd5b50600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cc8573d5f803e3d5ffd5b50505050505f60105f6101000a81548160ff021916908315150217905550565b5f80831480611cf857505f600854145b15611d0557829050611f23565b5f600b5490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d6857600a549050611dc2565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611dc15760095490505b5b5f611e0a60646103e8611dd591906126d7565b611dfc84611dee6008548a611f8790919063ffffffff16565b611f8790919063ffffffff16565b611ffe90919063ffffffff16565b90505f811115611f0b57611e648160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f2a90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f029190612161565b60405180910390a35b611f1e818661204790919063ffffffff16565b925050505b9392505050565b5f808284611f389190612906565b905083811015611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490612b8d565b60405180910390fd5b8091505092915050565b5f808303611f97575f9050611ff8565b5f8284611fa491906126d7565b9050828482611fb3919061286e565b14611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90612c1b565b60405180910390fd5b809150505b92915050565b5f61203f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612090565b905092915050565b5f61208883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061122a565b905092915050565b5f80831182906120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd9190612204565b60405180910390fd5b505f83856120e4919061286e565b9050809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61211a826120f1565b9050919050565b61212a81612110565b82525050565b5f6020820190506121435f830184612121565b92915050565b5f819050919050565b61215b81612149565b82525050565b5f6020820190506121745f830184612152565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156121b1578082015181840152602081019050612196565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121d68261217a565b6121e08185612184565b93506121f0818560208601612194565b6121f9816121bc565b840191505092915050565b5f6020820190508181035f83015261221c81846121cc565b905092915050565b5f80fd5b61223181612110565b811461223b575f80fd5b50565b5f8135905061224c81612228565b92915050565b61225b81612149565b8114612265575f80fd5b50565b5f8135905061227681612252565b92915050565b5f806040838503121561229257612291612224565b5b5f61229f8582860161223e565b92505060206122b085828601612268565b9150509250929050565b5f8115159050919050565b6122ce816122ba565b82525050565b5f6020820190506122e75f8301846122c5565b92915050565b5f805f6060848603121561230457612303612224565b5b5f6123118682870161223e565b93505060206123228682870161223e565b925050604061233386828701612268565b9150509250925092565b5f6020828403121561235257612351612224565b5b5f61235f8482850161223e565b91505092915050565b5f60ff82169050919050565b61237d81612368565b82525050565b5f6020820190506123965f830184612374565b92915050565b5f805f606084860312156123b3576123b2612224565b5b5f6123c086828701612268565b93505060206123d186828701612268565b92505060406123e286828701612268565b9150509250925092565b5f6020828403121561240157612400612224565b5b5f61240e84828501612268565b91505092915050565b5f806040838503121561242d5761242c612224565b5b5f61243a8582860161223e565b925050602061244b8582860161223e565b9150509250929050565b61245e816122ba565b8114612468575f80fd5b50565b5f8135905061247981612455565b92915050565b5f806040838503121561249557612494612224565b5b5f6124a28582860161246b565b92505060206124b385828601612268565b9150509250929050565b5f819050919050565b5f6124e06124db6124d6846120f1565b6124bd565b6120f1565b9050919050565b5f6124f1826124c6565b9050919050565b5f612502826124e7565b9050919050565b612512816124f8565b82525050565b5f60208201905061252b5f830184612509565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156125b35780860481111561258f5761258e612531565b5b600185161561259e5780820291505b80810290506125ac8561255e565b9450612573565b94509492505050565b5f826125cb5760019050612686565b816125d8575f9050612686565b81600181146125ee57600281146125f857612627565b6001915050612686565b60ff84111561260a57612609612531565b5b8360020a91508482111561262157612620612531565b5b50612686565b5060208310610133831016604e8410600b841016171561265c5782820a90508381111561265757612656612531565b5b612686565b612669848484600161256a565b925090508184048111156126805761267f612531565b5b81810290505b9392505050565b5f61269782612149565b91506126a283612368565b92506126cf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846125bc565b905092915050565b5f6126e182612149565b91506126ec83612149565b92508282026126fa81612149565b9150828204841483151761271157612710612531565b5b5092915050565b5f61272282612149565b915061272d83612149565b925082820390508181111561274557612744612531565b5b92915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f61277f600683612184565b915061278a8261274b565b602082019050919050565b5f6020820190508181035f8301526127ac81612773565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e205f8201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b5f61280d602283612184565b9150612818826127b3565b604082019050919050565b5f6020820190508181035f83015261283a81612801565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61287882612149565b915061288383612149565b92508261289357612892612841565b5b828204905092915050565b7f74726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6128d2601483612184565b91506128dd8261289e565b602082019050919050565b5f6020820190508181035f8301526128ff816128c6565b9050919050565b5f61291082612149565b915061291b83612149565b925082820190508082111561293357612932612531565b5b92915050565b7f6d61782077616c6c6574206c696d6974207265616368656400000000000000005f82015250565b5f61296d601883612184565b915061297882612939565b602082019050919050565b5f6020820190508181035f83015261299a81612961565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f612a1e612a19612a14846129fb565b6124bd565b612149565b9050919050565b612a2e81612a04565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612a6681612110565b82525050565b5f612a778383612a5d565b60208301905092915050565b5f602082019050919050565b5f612a9982612a34565b612aa38185612a3e565b9350612aae83612a4e565b805f5b83811015612ade578151612ac58882612a6c565b9750612ad083612a83565b925050600181019050612ab1565b5085935050505092915050565b5f60a082019050612afe5f830188612152565b612b0b6020830187612a25565b8181036040830152612b1d8186612a8f565b9050612b2c6060830185612121565b612b396080830184612152565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612b77601b83612184565b9150612b8282612b43565b602082019050919050565b5f6020820190508181035f830152612ba481612b6b565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c05602183612184565b9150612c1082612bab565b604082019050919050565b5f6020820190508181035f830152612c3281612bf9565b905091905056fea2646970667358221220e6014954e2f6183b15cb4883898d2c90c268edc3d5ee498421bf54e8d088548264736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101fc575f3560e01c80636ddd17131161010c578063a8aa1b311161009f578063dd62ed3e1161006e578063dd62ed3e14610719578063df20fd4914610755578063e96fada21461077d578063f887ea40146107a7578063ffb54a99146107d157610203565b8063a8aa1b3114610661578063a9059cbb1461068b578063c867d60b146106c7578063c9567bf91461070357610203565b806382bf293c116100db57806382bf293c146105bb578063893d20e8146105e35780638da5cb5b1461060d57806395d89b411461063757610203565b80636ddd17131461051557806370a082311461053f578063715018a61461057b57806378109e541461059157610203565b806323b872dd1161018f5780633f4218e01161015e5780633f4218e01461043557806351bc3c8514610471578063571ac8b0146104875780636b67c4df146104c35780636ce46bc3146104ed57610203565b806323b872dd146103695780632b112e49146103a55780632f54bf6e146103cf578063313ce5671461040b57610203565b8063095ea7b3116101cb578063095ea7b3146102af578063180b0d7e146102eb57806318160ddd146103155780631df4ccfc1461033f57610203565b806303382cbb146102075780630445b6671461023157806306fdde031461025b578063090896be1461028557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107fb565b6040516102289190612130565b60405180910390f35b34801561023c575f80fd5b50610245610820565b6040516102529190612161565b60405180910390f35b348015610266575f80fd5b5061026f610826565b60405161027c9190612204565b60405180910390f35b348015610290575f80fd5b5061029961085f565b6040516102a69190612161565b60405180910390f35b3480156102ba575f80fd5b506102d560048036038101906102d0919061227c565b610865565b6040516102e291906122d4565b60405180910390f35b3480156102f6575f80fd5b506102ff610952565b60405161030c9190612161565b60405180910390f35b348015610320575f80fd5b50610329610958565b6040516103369190612161565b60405180910390f35b34801561034a575f80fd5b50610353610979565b6040516103609190612161565b60405180910390f35b348015610374575f80fd5b5061038f600480360381019061038a91906122ed565b61097f565b60405161039c91906122d4565b60405180910390f35b3480156103b0575f80fd5b506103b9610b72565b6040516103c69190612161565b60405180910390f35b3480156103da575f80fd5b506103f560048036038101906103f0919061233d565b610c28565b60405161040291906122d4565b60405180910390f35b348015610416575f80fd5b5061041f610c7f565b60405161042c9190612383565b60405180910390f35b348015610440575f80fd5b5061045b6004803603810190610456919061233d565b610c84565b60405161046891906122d4565b60405180910390f35b34801561047c575f80fd5b50610485610ca1565b005b348015610492575f80fd5b506104ad60048036038101906104a8919061233d565b610d08565b6040516104ba91906122d4565b60405180910390f35b3480156104ce575f80fd5b506104d7610d3a565b6040516104e49190612161565b60405180910390f35b3480156104f8575f80fd5b50610513600480360381019061050e919061239c565b610d40565b005b348015610520575f80fd5b50610529610da2565b60405161053691906122d4565b60405180910390f35b34801561054a575f80fd5b506105656004803603810190610560919061233d565b610db5565b6040516105729190612161565b60405180910390f35b348015610586575f80fd5b5061058f610dca565b005b34801561059c575f80fd5b506105a5610ea9565b6040516105b29190612161565b60405180910390f35b3480156105c6575f80fd5b506105e160048036038101906105dc91906123ec565b610eaf565b005b3480156105ee575f80fd5b506105f7610f79565b6040516106049190612130565b60405180910390f35b348015610618575f80fd5b50610621610fa0565b60405161062e9190612130565b60405180910390f35b348015610642575f80fd5b5061064b610fc3565b6040516106589190612204565b60405180910390f35b34801561066c575f80fd5b50610675610ffc565b6040516106829190612130565b60405180910390f35b348015610696575f80fd5b506106b160048036038101906106ac919061227c565b611020565b6040516106be91906122d4565b60405180910390f35b3480156106d2575f80fd5b506106ed60048036038101906106e8919061233d565b611034565b6040516106fa91906122d4565b60405180910390f35b34801561070e575f80fd5b50610717611051565b005b348015610724575f80fd5b5061073f600480360381019061073a9190612417565b6110b6565b60405161074c9190612161565b60405180910390f35b348015610760575f80fd5b5061077b6004803603810190610776919061247f565b611138565b005b348015610788575f80fd5b506107916111cd565b60405161079e9190612130565b60405180910390f35b3480156107b2575f80fd5b506107bb6111f2565b6040516107c89190612518565b60405180910390f35b3480156107dc575f80fd5b506107e5611217565b6040516107f291906122d4565b60405180910390f35b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f5481565b6040518060400160405280600481526020017f426f62690000000000000000000000000000000000000000000000000000000081525081565b60075481565b5f8160035f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516109409190612161565b60405180910390a36001905092915050565b6103e881565b6012600a610966919061268d565b640737be760061097691906126d7565b81565b60085481565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610b5e57610ae1826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e63650000000000000000000081525060035f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461122a9092919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610b6984848461128c565b90509392505050565b5f60025f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460025f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546012600a610bff919061268d565b640737be7600610c0f91906126d7565b610c199190612718565b610c239190612718565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b601281565b6004602052805f5260405f205f915054906101000a900460ff1681565b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610d05573d5f803e3d5ffd5b50565b5f610d33827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610865565b9050919050565b60065481565b610d4933610c28565b610d88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7f90612795565b60405180910390fd5b81600a819055508260098190555080600b81905550505050565b600e60159054906101000a900460ff1681565b6002602052805f5260405f205f915090505481565b610dd333610c28565b610e12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0990612795565b60405180910390fd5b5f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff16604051610e9f9190612130565b60405180910390a1565b60015481565b610eb833610c28565b610ef7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eee90612795565b60405180910390fd5b6001811015610f3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f3290612823565b60405180910390fd5b6064816012600a610f4c919061268d565b640737be7600610f5c91906126d7565b610f6691906126d7565b610f70919061286e565b60018190555050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040518060400160405280600581526020017f24424f424900000000000000000000000000000000000000000000000000000081525081565b7f00000000000000000000000062c48fda9d6fee6575cb905431ce0a369dba7e2281565b5f61102c33848461128c565b905092915050565b6005602052805f5260405f205f915054906101000a900460ff1681565b61105a33610c28565b611099576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109090612795565b60405180910390fd5b6001600e60146101000a81548160ff021916908315150217905550565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61114133610c28565b611180576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117790612795565b60405180910390fd5b81600e60156101000a81548160ff021916908315150217905550806012600a6111a9919061268d565b640737be76006111b991906126d7565b6111c3919061286e565b600f819055505050565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e60149054906101000a900460ff1681565b5f838311158290611271576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112689190612204565b60405180910390fd5b505f838561127f9190612718565b9050809150509392505050565b5f60105f9054906101000a900460ff16156112b3576112ac84848461176f565b9050611768565b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661135157600e60149054906101000a900460ff16611350576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611347906128e8565b60405180910390fd5b5b60055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156113ef575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561144757507f00000000000000000000000062c48fda9d6fee6575cb905431ce0a369dba7e2273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156114da576001548260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546114989190612906565b11156114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d090612983565b60405180910390fd5b5b6114e2611939565b156114f0576114ef611a0a565b5b611577826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461122a9092919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611654575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b61166857611663858486611ce8565b61166a565b825b90506116bc8160025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f2a90919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161175a9190612161565b60405180910390a360019150505b9392505050565b5f6117f7826040518060400160405280601481526020017f496e73756666696369656e742042616c616e636500000000000000000000000081525060025f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461122a9092919063ffffffff16565b60025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506118888260025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f2a90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119269190612161565b60405180910390a3600190509392505050565b5f7f00000000000000000000000062c48fda9d6fee6575cb905431ce0a369dba7e2273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156119a2575060105f9054906101000a900460ff16155b80156119ba5750600e60159054906101000a900460ff165b8015611a055750600f5460025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410155b905090565b600160105f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff811115611a4057611a3f6129a1565b5b604051908082528060200260200182016040528015611a6e5781602001602082028036833780820191505090505b50905030815f81518110611a8557611a846129ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611af457611af36129ce565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947600f545f8430426040518663ffffffff1660e01b8152600401611b92959493929190612aeb565b5f604051808303815f87803b158015611ba9575f80fd5b505af1158015611bbb573d5f803e3d5ffd5b505050505f4790505f60085460065483611bd591906126d7565b611bdf919061286e565b90505f60085460075484611bf391906126d7565b611bfd919061286e565b9050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f19350505050158015611c63573d5f803e3d5ffd5b50600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611cc8573d5f803e3d5ffd5b50505050505f60105f6101000a81548160ff021916908315150217905550565b5f80831480611cf857505f600854145b15611d0557829050611f23565b5f600b5490507f00000000000000000000000062c48fda9d6fee6575cb905431ce0a369dba7e2273ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611d6857600a549050611dc2565b7f00000000000000000000000062c48fda9d6fee6575cb905431ce0a369dba7e2273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611dc15760095490505b5b5f611e0a60646103e8611dd591906126d7565b611dfc84611dee6008548a611f8790919063ffffffff16565b611f8790919063ffffffff16565b611ffe90919063ffffffff16565b90505f811115611f0b57611e648160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f2a90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611f029190612161565b60405180910390a35b611f1e818661204790919063ffffffff16565b925050505b9392505050565b5f808284611f389190612906565b905083811015611f7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7490612b8d565b60405180910390fd5b8091505092915050565b5f808303611f97575f9050611ff8565b5f8284611fa491906126d7565b9050828482611fb3919061286e565b14611ff3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fea90612c1b565b60405180910390fd5b809150505b92915050565b5f61203f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612090565b905092915050565b5f61208883836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061122a565b905092915050565b5f80831182906120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cd9190612204565b60405180910390fd5b505f83856120e4919061286e565b9050809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61211a826120f1565b9050919050565b61212a81612110565b82525050565b5f6020820190506121435f830184612121565b92915050565b5f819050919050565b61215b81612149565b82525050565b5f6020820190506121745f830184612152565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156121b1578082015181840152602081019050612196565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6121d68261217a565b6121e08185612184565b93506121f0818560208601612194565b6121f9816121bc565b840191505092915050565b5f6020820190508181035f83015261221c81846121cc565b905092915050565b5f80fd5b61223181612110565b811461223b575f80fd5b50565b5f8135905061224c81612228565b92915050565b61225b81612149565b8114612265575f80fd5b50565b5f8135905061227681612252565b92915050565b5f806040838503121561229257612291612224565b5b5f61229f8582860161223e565b92505060206122b085828601612268565b9150509250929050565b5f8115159050919050565b6122ce816122ba565b82525050565b5f6020820190506122e75f8301846122c5565b92915050565b5f805f6060848603121561230457612303612224565b5b5f6123118682870161223e565b93505060206123228682870161223e565b925050604061233386828701612268565b9150509250925092565b5f6020828403121561235257612351612224565b5b5f61235f8482850161223e565b91505092915050565b5f60ff82169050919050565b61237d81612368565b82525050565b5f6020820190506123965f830184612374565b92915050565b5f805f606084860312156123b3576123b2612224565b5b5f6123c086828701612268565b93505060206123d186828701612268565b92505060406123e286828701612268565b9150509250925092565b5f6020828403121561240157612400612224565b5b5f61240e84828501612268565b91505092915050565b5f806040838503121561242d5761242c612224565b5b5f61243a8582860161223e565b925050602061244b8582860161223e565b9150509250929050565b61245e816122ba565b8114612468575f80fd5b50565b5f8135905061247981612455565b92915050565b5f806040838503121561249557612494612224565b5b5f6124a28582860161246b565b92505060206124b385828601612268565b9150509250929050565b5f819050919050565b5f6124e06124db6124d6846120f1565b6124bd565b6120f1565b9050919050565b5f6124f1826124c6565b9050919050565b5f612502826124e7565b9050919050565b612512816124f8565b82525050565b5f60208201905061252b5f830184612509565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156125b35780860481111561258f5761258e612531565b5b600185161561259e5780820291505b80810290506125ac8561255e565b9450612573565b94509492505050565b5f826125cb5760019050612686565b816125d8575f9050612686565b81600181146125ee57600281146125f857612627565b6001915050612686565b60ff84111561260a57612609612531565b5b8360020a91508482111561262157612620612531565b5b50612686565b5060208310610133831016604e8410600b841016171561265c5782820a90508381111561265757612656612531565b5b612686565b612669848484600161256a565b925090508184048111156126805761267f612531565b5b81810290505b9392505050565b5f61269782612149565b91506126a283612368565b92506126cf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846125bc565b905092915050565b5f6126e182612149565b91506126ec83612149565b92508282026126fa81612149565b9150828204841483151761271157612710612531565b5b5092915050565b5f61272282612149565b915061272d83612149565b925082820390508181111561274557612744612531565b5b92915050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f61277f600683612184565b915061278a8261274b565b602082019050919050565b5f6020820190508181035f8301526127ac81612773565b9050919050565b7f43616e6e6f7420736574206d61782077616c6c6574206c657373207468616e205f8201527f3125000000000000000000000000000000000000000000000000000000000000602082015250565b5f61280d602283612184565b9150612818826127b3565b604082019050919050565b5f6020820190508181035f83015261283a81612801565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61287882612149565b915061288383612149565b92508261289357612892612841565b5b828204905092915050565b7f74726164696e67206e6f74206f70656e207965740000000000000000000000005f82015250565b5f6128d2601483612184565b91506128dd8261289e565b602082019050919050565b5f6020820190508181035f8301526128ff816128c6565b9050919050565b5f61291082612149565b915061291b83612149565b925082820190508082111561293357612932612531565b5b92915050565b7f6d61782077616c6c6574206c696d6974207265616368656400000000000000005f82015250565b5f61296d601883612184565b915061297882612939565b602082019050919050565b5f6020820190508181035f83015261299a81612961565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f612a1e612a19612a14846129fb565b6124bd565b612149565b9050919050565b612a2e81612a04565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612a6681612110565b82525050565b5f612a778383612a5d565b60208301905092915050565b5f602082019050919050565b5f612a9982612a34565b612aa38185612a3e565b9350612aae83612a4e565b805f5b83811015612ade578151612ac58882612a6c565b9750612ad083612a83565b925050600181019050612ab1565b5085935050505092915050565b5f60a082019050612afe5f830188612152565b612b0b6020830187612a25565b8181036040830152612b1d8186612a8f565b9050612b2c6060830185612121565b612b396080830184612152565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f612b77601b83612184565b9150612b8282612b43565b602082019050919050565b5f6020820190508181035f830152612ba481612b6b565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f612c05602183612184565b9150612c1082612bab565b604082019050919050565b5f6020820190508181035f830152612c3281612bf9565b905091905056fea2646970667358221220e6014954e2f6183b15cb4883898d2c90c268edc3d5ee498421bf54e8d088548264736f6c63430008150033

Deployed Bytecode Sourcemap

3086:7349:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4186:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4377:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3334:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3875:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5655:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3976:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3467:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3915:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6173:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10295:137;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2317:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3423:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3724:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8987:112;;;;;;;;;;;;;:::i;:::-;;5879:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3836:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9902:198;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4340:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3602:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2428:128;;;;;;;;;;;;;:::i;:::-;;3543:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6551:219;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5430:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2130:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3377:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4262:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6009:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3775:52;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9107:79;;;;;;;;;;;;;:::i;:::-;;5514:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10108:179;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4144:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4231:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4300:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4186:36;;;;;;;;;;;;;:::o;4377:48::-;;;;:::o;3334:36::-;;;;;;;;;;;;;;;;;;;:::o;3875:33::-;;;;:::o;5655:216::-;5730:4;5782:6;5747:11;:23;5759:10;5747:23;;;;;;;;;;;;;;;:32;5771:7;5747:32;;;;;;;;;;;;;;;:41;;;;5825:7;5804:37;;5813:10;5804:37;;;5834:6;5804:37;;;;;;:::i;:::-;;;;;;;;5859:4;5852:11;;5655:216;;;;:::o;3976:45::-;4017:4;3976:45;:::o;3467:67::-;3456:2;3522;:12;;;;:::i;:::-;3505:14;:29;;;;:::i;:::-;3467:67;:::o;3915:54::-;;;;:::o;6173:370::-;6273:4;6328:17;6293:11;:19;6305:6;6293:19;;;;;;;;;;;;;;;:31;6313:10;6293:31;;;;;;;;;;;;;;;;:52;6290:186;;6395:69;6431:6;6395:69;;;;;;;;;;;;;;;;;:11;:19;6407:6;6395:19;;;;;;;;;;;;;;;:31;6415:10;6395:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;6361:11;:19;6373:6;6361:19;;;;;;;;;;;;;;;:31;6381:10;6361:31;;;;;;;;;;;;;;;:103;;;;6290:186;6495:40;6509:6;6517:9;6528:6;6495:13;:40::i;:::-;6488:47;;6173:370;;;;;:::o;10295:137::-;10348:7;10408:9;:15;3283:42;10408:15;;;;;;;;;;;;;;;;10390:9;:15;3210:42;10390:15;;;;;;;;;;;;;;;;3456:2;3522;:12;;;;:::i;:::-;3505:14;:29;;;;:::i;:::-;10376;;;;:::i;:::-;:47;;;;:::i;:::-;10368:56;;10295:137;:::o;2317:103::-;2372:4;2407:5;;;;;;;;;;;2396:16;;:7;:16;;;2389:23;;2317:103;;;:::o;3423:35::-;3456:2;3423:35;:::o;3724:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8987:112::-;9037:21;;;;;;;;;;;9029:39;;:62;9069:21;9029:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8987:112::o;5879:122::-;5934:4;5958:35;5966:7;5975:17;5958:7;:35::i;:::-;5951:42;;5879:122;;;:::o;3836:32::-;;;;:::o;9902:198::-;2268:19;2276:10;2268:7;:19::i;:::-;2260:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10018:5:::1;10001:14;:22;;;;10050:4;10034:13;:20;;;;10086:6;10065:18;:27;;;;9902:198:::0;;;:::o;4340:30::-;;;;;;;;;;;;;:::o;3602:45::-;;;;;;;;;;;;;;;;;:::o;2428:128::-;2268:19;2276:10;2268:7;:19::i;:::-;2260:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;2503:1:::1;2487:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;2521:27;2542:5;::::0;::::1;;;;;;;;2521:27;;;;;;:::i;:::-;;;;;;;;2428:128::o:0;3543:50::-;;;;:::o;6551:219::-;2268:19;2276:10;2268:7;:19::i;:::-;2260:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;6658:1:::1;6641:13;:18;;6633:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;6759:3;6741:13;3456:2;3522;:12;;;;:::i;:::-;3505:14;:29;;;;:::i;:::-;6727:27;;;;:::i;:::-;6726:36;;;;:::i;:::-;6708:15;:54;;;;6551:219:::0;:::o;5430:78::-;5482:7;5500:5;;;;;;;;;;;5493:12;;5430:78;:::o;2130:20::-;;;;;;;;;;;;:::o;3377:39::-;;;;;;;;;;;;;;;;;;;:::o;4262:29::-;;;:::o;6009:156::-;6089:4;6113:44;6127:10;6139:9;6150:6;6113:13;:44::i;:::-;6106:51;;6009:156;;;;:::o;3775:52::-;;;;;;;;;;;;;;;;;;;;;;:::o;9107:79::-;2268:19;2276:10;2268:7;:19::i;:::-;2260:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9174:4:::1;9160:11;;:18;;;;;;;;;;;;;;;;;;9107:79::o:0;5514:133::-;5598:7;5616:11;:19;5628:6;5616:19;;;;;;;;;;;;;;;:28;5636:7;5616:28;;;;;;;;;;;;;;;;5609:35;;5514:133;;;;:::o;10108:179::-;2268:19;2276:10;2268:7;:19::i;:::-;2260:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10218:8:::1;10204:11;;:22;;;;;;;;;;;;;;;;;;10267:12;3456:2;3522;:12;;;;:::i;:::-;3505:14;:29;;;;:::i;:::-;10253:26;;;;:::i;:::-;10237:13;:42;;;;10108:179:::0;;:::o;4144:35::-;;;;;;;;;;;;;:::o;4231:24::-;;;;;;;;;;;;;:::o;4300:31::-;;;;;;;;;;;;;:::o;638:192::-;724:7;757:1;752;:6;;760:12;744:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;784:9;800:1;796;:5;;;;:::i;:::-;784:17;;821:1;814:8;;;638:192;;;;;:::o;6778:923::-;6870:4;6890:6;;;;;;;;;;;6887:63;;;6906:41;6921:6;6929:9;6940:6;6906:14;:41::i;:::-;6899:48;;;;6887:63;6966:11;:19;6978:6;6966:19;;;;;;;;;;;;;;;;;;;;;;;;;6962:94;;7009:11;;;;;;;;;;;7001:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;6962:94;7073:19;:27;7093:6;7073:27;;;;;;;;;;;;;;;;;;;;;;;;;7072:28;:63;;;;;7105:19;:30;7125:9;7105:30;;;;;;;;;;;;;;;;;;;;;;;;;7104:31;7072:63;:84;;;;;7152:4;7139:17;;:9;:17;;;;7072:84;7068:203;;;7216:15;;7205:6;7182:9;:20;7192:9;7182:20;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;7181:50;;7173:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;7068:203;7286:16;:14;:16::i;:::-;7283:35;;;7305:10;:8;:10::i;:::-;7283:35;7350:53;7372:6;7350:53;;;;;;;;;;;;;;;;;:9;:17;7360:6;7350:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;7330:9;:17;7340:6;7330:17;;;;;;;;;;;;;;;:73;;;;7416:22;7442:11;:19;7454:6;7442:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;7465:11;:22;7477:9;7465:22;;;;;;;;;;;;;;;;;;;;;;;;;7442:45;7441:93;;7500:34;7508:6;7516;7524:9;7500:7;:34::i;:::-;7441:93;;;7491:6;7441:93;7416:118;;7570:40;7595:14;7570:9;:20;7580:9;7570:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;7547:9;:20;7557:9;7547:20;;;;;;;;;;;;;;;:63;;;;7645:9;7628:43;;7637:6;7628:43;;;7656:14;7628:43;;;;;;:::i;:::-;;;;;;;;7689:4;7682:11;;;6778:923;;;;;;:::o;7713:330::-;7806:4;7843:53;7865:6;7843:53;;;;;;;;;;;;;;;;;:9;:17;7853:6;7843:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;7823:9;:17;7833:6;7823:17;;;;;;;;;;;;;;;:73;;;;7930:32;7955:6;7930:9;:20;7940:9;7930:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;7907:9;:20;7917:9;7907:20;;;;;;;;;;;;;;;:55;;;;7995:9;7978:35;;7987:6;7978:35;;;8006:6;7978:35;;;;;;:::i;:::-;;;;;;;;8031:4;8024:11;;7713:330;;;;;:::o;8782:197::-;8831:4;8869;8855:18;;:10;:18;;;;:38;;;;;8887:6;;;;;;;;;;;8886:7;8855:38;:62;;;;;8906:11;;;;;;;;;;;8855:62;:116;;;;;8958:13;;8930:9;:24;8948:4;8930:24;;;;;;;;;;;;;;;;:41;;8855:116;8848:123;;8782:197;:::o;9194:700::-;4487:4;4478:6;;:13;;;;;;;;;;;;;;;;;;9245:21:::1;9283:1;9269:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9245:40;;9314:4;9296;9301:1;9296:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9340:4;9330;9335:1;9330:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;9357:6;;;;;;;;;;;:57;;;9429:13;;9457:1;9473:4;9500;9520:15;9357:189;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9559:17;9579:21;9559:41;;9613:26;9671:8;;9655:12;;9643:9;:24;;;;:::i;:::-;9642:37;;;;:::i;:::-;9613:66;;9690:20;9743:8;;9726:13;;9714:9;:25;;;;:::i;:::-;9713:38;;;;:::i;:::-;9690:61;;9772:20;;;;;;;;;;;9764:38;;:58;9803:18;9764:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9841:21;;;;;;;;;;;9833:39;;:53;9873:12;9833:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;9232:662;;;;4505:5:::0;4496:6;;:14;;;;;;;;;;;;;;;;;;9194:700::o;8051:723::-;8137:7;8170:1;8160:6;:11;:28;;;;8187:1;8175:8;;:13;8160:28;8157:72;;;8211:6;8204:13;;;;8157:72;8241:18;8262;;8241:39;;8309:4;8296:17;;:9;:17;;;8293:154;;8343:14;;8330:27;;8293:154;;;8388:4;8378:14;;:6;:14;;;8375:72;;8422:13;;8409:26;;8375:72;8293:154;8459:17;8479:62;8537:3;4017:4;8520:20;;;;:::i;:::-;8479:36;8504:10;8479:20;8490:8;;8479:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;8459:82;;8569:1;8557:9;:13;8554:172;;;8613:39;8642:9;8613;:24;8631:4;8613:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;8586:9;:24;8604:4;8586:24;;;;;;;;;;;;;;;:66;;;;8697:4;8672:42;;8681:6;8672:42;;;8704:9;8672:42;;;;;;:::i;:::-;;;;;;;;8554:172;8745:21;8756:9;8745:6;:10;;:21;;;;:::i;:::-;8738:28;;;;8051:723;;;;;;:::o;309:181::-;367:7;387:9;403:1;399;:5;;;;:::i;:::-;387:17;;428:1;423;:6;;415:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;481:1;474:8;;;309:181;;;;:::o;836:250::-;894:7;923:1;918;:6;914:47;;948:1;941:8;;;;914:47;973:9;989:1;985;:5;;;;:::i;:::-;973:17;;1018:1;1013;1009;:5;;;;:::i;:::-;:10;1001:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1077:1;1070:8;;;836:250;;;;;:::o;1092:132::-;1150:7;1177:39;1181:1;1184;1177:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1170:46;;1092:132;;;;:::o;496:136::-;554:7;581:43;585:1;588;581:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;574:50;;496:136;;;;:::o;1230:189::-;1316:7;1348:1;1344;:5;1351:12;1336:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1375:9;1391:1;1387;:5;;;;:::i;:::-;1375:17;;1410:1;1403:8;;;1230:189;;;;;:::o;7:126:1:-;44:7;84:42;77:5;73:54;62:65;;7:126;;;:::o;139:96::-;176:7;205:24;223:5;205:24;:::i;:::-;194:35;;139:96;;;:::o;241:118::-;328:24;346:5;328:24;:::i;:::-;323:3;316:37;241:118;;:::o;365:222::-;458:4;496:2;485:9;481:18;473:26;;509:71;577:1;566:9;562:17;553:6;509:71;:::i;:::-;365:222;;;;:::o;593:77::-;630:7;659:5;648:16;;593:77;;;:::o;676:118::-;763:24;781:5;763:24;:::i;:::-;758:3;751:37;676:118;;:::o;800:222::-;893:4;931:2;920:9;916:18;908:26;;944:71;1012:1;1001:9;997:17;988:6;944:71;:::i;:::-;800:222;;;;:::o;1028:99::-;1080:6;1114:5;1108:12;1098:22;;1028:99;;;:::o;1133:169::-;1217:11;1251:6;1246:3;1239:19;1291:4;1286:3;1282:14;1267:29;;1133:169;;;;:::o;1308:246::-;1389:1;1399:113;1413:6;1410:1;1407:13;1399:113;;;1498:1;1493:3;1489:11;1483:18;1479:1;1474:3;1470:11;1463:39;1435:2;1432:1;1428:10;1423:15;;1399:113;;;1546:1;1537:6;1532:3;1528:16;1521:27;1370:184;1308:246;;;:::o;1560:102::-;1601:6;1652:2;1648:7;1643:2;1636:5;1632:14;1628:28;1618:38;;1560:102;;;:::o;1668:377::-;1756:3;1784:39;1817:5;1784:39;:::i;:::-;1839:71;1903:6;1898:3;1839:71;:::i;:::-;1832:78;;1919:65;1977:6;1972:3;1965:4;1958:5;1954:16;1919:65;:::i;:::-;2009:29;2031:6;2009:29;:::i;:::-;2004:3;2000:39;1993:46;;1760:285;1668:377;;;;:::o;2051:313::-;2164:4;2202:2;2191:9;2187:18;2179:26;;2251:9;2245:4;2241:20;2237:1;2226:9;2222:17;2215:47;2279:78;2352:4;2343:6;2279:78;:::i;:::-;2271:86;;2051:313;;;;:::o;2451:117::-;2560:1;2557;2550:12;2697:122;2770:24;2788:5;2770:24;:::i;:::-;2763:5;2760:35;2750:63;;2809:1;2806;2799:12;2750:63;2697:122;:::o;2825:139::-;2871:5;2909:6;2896:20;2887:29;;2925:33;2952:5;2925:33;:::i;:::-;2825:139;;;;:::o;2970:122::-;3043:24;3061:5;3043:24;:::i;:::-;3036:5;3033:35;3023:63;;3082:1;3079;3072:12;3023:63;2970:122;:::o;3098:139::-;3144:5;3182:6;3169:20;3160:29;;3198:33;3225:5;3198:33;:::i;:::-;3098:139;;;;:::o;3243:474::-;3311:6;3319;3368:2;3356:9;3347:7;3343:23;3339:32;3336:119;;;3374:79;;:::i;:::-;3336:119;3494:1;3519:53;3564:7;3555:6;3544:9;3540:22;3519:53;:::i;:::-;3509:63;;3465:117;3621:2;3647:53;3692:7;3683:6;3672:9;3668:22;3647:53;:::i;:::-;3637:63;;3592:118;3243:474;;;;;:::o;3723:90::-;3757:7;3800:5;3793:13;3786:21;3775:32;;3723:90;;;:::o;3819:109::-;3900:21;3915:5;3900:21;:::i;:::-;3895:3;3888:34;3819:109;;:::o;3934:210::-;4021:4;4059:2;4048:9;4044:18;4036:26;;4072:65;4134:1;4123:9;4119:17;4110:6;4072:65;:::i;:::-;3934:210;;;;:::o;4150:619::-;4227:6;4235;4243;4292:2;4280:9;4271:7;4267:23;4263:32;4260:119;;;4298:79;;:::i;:::-;4260:119;4418:1;4443:53;4488:7;4479:6;4468:9;4464:22;4443:53;:::i;:::-;4433:63;;4389:117;4545:2;4571:53;4616:7;4607:6;4596:9;4592:22;4571:53;:::i;:::-;4561:63;;4516:118;4673:2;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4644:118;4150:619;;;;;:::o;4775:329::-;4834:6;4883:2;4871:9;4862:7;4858:23;4854:32;4851:119;;;4889:79;;:::i;:::-;4851:119;5009:1;5034:53;5079:7;5070:6;5059:9;5055:22;5034:53;:::i;:::-;5024:63;;4980:117;4775:329;;;;:::o;5110:86::-;5145:7;5185:4;5178:5;5174:16;5163:27;;5110:86;;;:::o;5202:112::-;5285:22;5301:5;5285:22;:::i;:::-;5280:3;5273:35;5202:112;;:::o;5320:214::-;5409:4;5447:2;5436:9;5432:18;5424:26;;5460:67;5524:1;5513:9;5509:17;5500:6;5460:67;:::i;:::-;5320:214;;;;:::o;5540:619::-;5617:6;5625;5633;5682:2;5670:9;5661:7;5657:23;5653:32;5650:119;;;5688:79;;:::i;:::-;5650:119;5808:1;5833:53;5878:7;5869:6;5858:9;5854:22;5833:53;:::i;:::-;5823:63;;5779:117;5935:2;5961:53;6006:7;5997:6;5986:9;5982:22;5961:53;:::i;:::-;5951:63;;5906:118;6063:2;6089:53;6134:7;6125:6;6114:9;6110:22;6089:53;:::i;:::-;6079:63;;6034:118;5540:619;;;;;:::o;6165:329::-;6224:6;6273:2;6261:9;6252:7;6248:23;6244:32;6241:119;;;6279:79;;:::i;:::-;6241:119;6399:1;6424:53;6469:7;6460:6;6449:9;6445:22;6424:53;:::i;:::-;6414:63;;6370:117;6165:329;;;;:::o;6500:474::-;6568:6;6576;6625:2;6613:9;6604:7;6600:23;6596:32;6593:119;;;6631:79;;:::i;:::-;6593:119;6751:1;6776:53;6821:7;6812:6;6801:9;6797:22;6776:53;:::i;:::-;6766:63;;6722:117;6878:2;6904:53;6949:7;6940:6;6929:9;6925:22;6904:53;:::i;:::-;6894:63;;6849:118;6500:474;;;;;:::o;6980:116::-;7050:21;7065:5;7050:21;:::i;:::-;7043:5;7040:32;7030:60;;7086:1;7083;7076:12;7030:60;6980:116;:::o;7102:133::-;7145:5;7183:6;7170:20;7161:29;;7199:30;7223:5;7199:30;:::i;:::-;7102:133;;;;:::o;7241:468::-;7306:6;7314;7363:2;7351:9;7342:7;7338:23;7334:32;7331:119;;;7369:79;;:::i;:::-;7331:119;7489:1;7514:50;7556:7;7547:6;7536:9;7532:22;7514:50;:::i;:::-;7504:60;;7460:114;7613:2;7639:53;7684:7;7675:6;7664:9;7660:22;7639:53;:::i;:::-;7629:63;;7584:118;7241:468;;;;;:::o;7715:60::-;7743:3;7764:5;7757:12;;7715:60;;;:::o;7781:142::-;7831:9;7864:53;7882:34;7891:24;7909:5;7891:24;:::i;:::-;7882:34;:::i;:::-;7864:53;:::i;:::-;7851:66;;7781:142;;;:::o;7929:126::-;7979:9;8012:37;8043:5;8012:37;:::i;:::-;7999:50;;7929:126;;;:::o;8061:144::-;8129:9;8162:37;8193:5;8162:37;:::i;:::-;8149:50;;8061:144;;;:::o;8211:167::-;8316:55;8365:5;8316:55;:::i;:::-;8311:3;8304:68;8211:167;;:::o;8384:258::-;8495:4;8533:2;8522:9;8518:18;8510:26;;8546:89;8632:1;8621:9;8617:17;8608:6;8546:89;:::i;:::-;8384:258;;;;:::o;8648:180::-;8696:77;8693:1;8686:88;8793:4;8790:1;8783:15;8817:4;8814:1;8807:15;8834:102;8876:8;8923:5;8920:1;8916:13;8895:34;;8834:102;;;:::o;8942:848::-;9003:5;9010:4;9034:6;9025:15;;9058:5;9049:14;;9072:712;9093:1;9083:8;9080:15;9072:712;;;9188:4;9183:3;9179:14;9173:4;9170:24;9167:50;;;9197:18;;:::i;:::-;9167:50;9247:1;9237:8;9233:16;9230:451;;;9662:4;9655:5;9651:16;9642:25;;9230:451;9712:4;9706;9702:15;9694:23;;9742:32;9765:8;9742:32;:::i;:::-;9730:44;;9072:712;;;8942:848;;;;;;;:::o;9796:1073::-;9850:5;10041:8;10031:40;;10062:1;10053:10;;10064:5;;10031:40;10090:4;10080:36;;10107:1;10098:10;;10109:5;;10080:36;10176:4;10224:1;10219:27;;;;10260:1;10255:191;;;;10169:277;;10219:27;10237:1;10228:10;;10239:5;;;10255:191;10300:3;10290:8;10287:17;10284:43;;;10307:18;;:::i;:::-;10284:43;10356:8;10353:1;10349:16;10340:25;;10391:3;10384:5;10381:14;10378:40;;;10398:18;;:::i;:::-;10378:40;10431:5;;;10169:277;;10555:2;10545:8;10542:16;10536:3;10530:4;10527:13;10523:36;10505:2;10495:8;10492:16;10487:2;10481:4;10478:12;10474:35;10458:111;10455:246;;;10611:8;10605:4;10601:19;10592:28;;10646:3;10639:5;10636:14;10633:40;;;10653:18;;:::i;:::-;10633:40;10686:5;;10455:246;10726:42;10764:3;10754:8;10748:4;10745:1;10726:42;:::i;:::-;10711:57;;;;10800:4;10795:3;10791:14;10784:5;10781:25;10778:51;;;10809:18;;:::i;:::-;10778:51;10858:4;10851:5;10847:16;10838:25;;9796:1073;;;;;;:::o;10875:281::-;10933:5;10957:23;10975:4;10957:23;:::i;:::-;10949:31;;11001:25;11017:8;11001:25;:::i;:::-;10989:37;;11045:104;11082:66;11072:8;11066:4;11045:104;:::i;:::-;11036:113;;10875:281;;;;:::o;11162:410::-;11202:7;11225:20;11243:1;11225:20;:::i;:::-;11220:25;;11259:20;11277:1;11259:20;:::i;:::-;11254:25;;11314:1;11311;11307:9;11336:30;11354:11;11336:30;:::i;:::-;11325:41;;11515:1;11506:7;11502:15;11499:1;11496:22;11476:1;11469:9;11449:83;11426:139;;11545:18;;:::i;:::-;11426:139;11210:362;11162:410;;;;:::o;11578:194::-;11618:4;11638:20;11656:1;11638:20;:::i;:::-;11633:25;;11672:20;11690:1;11672:20;:::i;:::-;11667:25;;11716:1;11713;11709:9;11701:17;;11740:1;11734:4;11731:11;11728:37;;;11745:18;;:::i;:::-;11728:37;11578:194;;;;:::o;11778:156::-;11918:8;11914:1;11906:6;11902:14;11895:32;11778:156;:::o;11940:365::-;12082:3;12103:66;12167:1;12162:3;12103:66;:::i;:::-;12096:73;;12178:93;12267:3;12178:93;:::i;:::-;12296:2;12291:3;12287:12;12280:19;;11940:365;;;:::o;12311:419::-;12477:4;12515:2;12504:9;12500:18;12492:26;;12564:9;12558:4;12554:20;12550:1;12539:9;12535:17;12528:47;12592:131;12718:4;12592:131;:::i;:::-;12584:139;;12311:419;;;:::o;12736:221::-;12876:34;12872:1;12864:6;12860:14;12853:58;12945:4;12940:2;12932:6;12928:15;12921:29;12736:221;:::o;12963:366::-;13105:3;13126:67;13190:2;13185:3;13126:67;:::i;:::-;13119:74;;13202:93;13291:3;13202:93;:::i;:::-;13320:2;13315:3;13311:12;13304:19;;12963:366;;;:::o;13335:419::-;13501:4;13539:2;13528:9;13524:18;13516:26;;13588:9;13582:4;13578:20;13574:1;13563:9;13559:17;13552:47;13616:131;13742:4;13616:131;:::i;:::-;13608:139;;13335:419;;;:::o;13760:180::-;13808:77;13805:1;13798:88;13905:4;13902:1;13895:15;13929:4;13926:1;13919:15;13946:185;13986:1;14003:20;14021:1;14003:20;:::i;:::-;13998:25;;14037:20;14055:1;14037:20;:::i;:::-;14032:25;;14076:1;14066:35;;14081:18;;:::i;:::-;14066:35;14123:1;14120;14116:9;14111:14;;13946:185;;;;:::o;14137:170::-;14277:22;14273:1;14265:6;14261:14;14254:46;14137:170;:::o;14313:366::-;14455:3;14476:67;14540:2;14535:3;14476:67;:::i;:::-;14469:74;;14552:93;14641:3;14552:93;:::i;:::-;14670:2;14665:3;14661:12;14654:19;;14313:366;;;:::o;14685:419::-;14851:4;14889:2;14878:9;14874:18;14866:26;;14938:9;14932:4;14928:20;14924:1;14913:9;14909:17;14902:47;14966:131;15092:4;14966:131;:::i;:::-;14958:139;;14685:419;;;:::o;15110:191::-;15150:3;15169:20;15187:1;15169:20;:::i;:::-;15164:25;;15203:20;15221:1;15203:20;:::i;:::-;15198:25;;15246:1;15243;15239:9;15232:16;;15267:3;15264:1;15261:10;15258:36;;;15274:18;;:::i;:::-;15258:36;15110:191;;;;:::o;15307:174::-;15447:26;15443:1;15435:6;15431:14;15424:50;15307:174;:::o;15487:366::-;15629:3;15650:67;15714:2;15709:3;15650:67;:::i;:::-;15643:74;;15726:93;15815:3;15726:93;:::i;:::-;15844:2;15839:3;15835:12;15828:19;;15487:366;;;:::o;15859:419::-;16025:4;16063:2;16052:9;16048:18;16040:26;;16112:9;16106:4;16102:20;16098:1;16087:9;16083:17;16076:47;16140:131;16266:4;16140:131;:::i;:::-;16132:139;;15859:419;;;:::o;16284:180::-;16332:77;16329:1;16322:88;16429:4;16426:1;16419:15;16453:4;16450:1;16443:15;16470:180;16518:77;16515:1;16508:88;16615:4;16612:1;16605:15;16639:4;16636:1;16629:15;16656:85;16701:7;16730:5;16719:16;;16656:85;;;:::o;16747:158::-;16805:9;16838:61;16856:42;16865:32;16891:5;16865:32;:::i;:::-;16856:42;:::i;:::-;16838:61;:::i;:::-;16825:74;;16747:158;;;:::o;16911:147::-;17006:45;17045:5;17006:45;:::i;:::-;17001:3;16994:58;16911:147;;:::o;17064:114::-;17131:6;17165:5;17159:12;17149:22;;17064:114;;;:::o;17184:184::-;17283:11;17317:6;17312:3;17305:19;17357:4;17352:3;17348:14;17333:29;;17184:184;;;;:::o;17374:132::-;17441:4;17464:3;17456:11;;17494:4;17489:3;17485:14;17477:22;;17374:132;;;:::o;17512:108::-;17589:24;17607:5;17589:24;:::i;:::-;17584:3;17577:37;17512:108;;:::o;17626:179::-;17695:10;17716:46;17758:3;17750:6;17716:46;:::i;:::-;17794:4;17789:3;17785:14;17771:28;;17626:179;;;;:::o;17811:113::-;17881:4;17913;17908:3;17904:14;17896:22;;17811:113;;;:::o;17960:732::-;18079:3;18108:54;18156:5;18108:54;:::i;:::-;18178:86;18257:6;18252:3;18178:86;:::i;:::-;18171:93;;18288:56;18338:5;18288:56;:::i;:::-;18367:7;18398:1;18383:284;18408:6;18405:1;18402:13;18383:284;;;18484:6;18478:13;18511:63;18570:3;18555:13;18511:63;:::i;:::-;18504:70;;18597:60;18650:6;18597:60;:::i;:::-;18587:70;;18443:224;18430:1;18427;18423:9;18418:14;;18383:284;;;18387:14;18683:3;18676:10;;18084:608;;;17960:732;;;;:::o;18698:831::-;18961:4;18999:3;18988:9;18984:19;18976:27;;19013:71;19081:1;19070:9;19066:17;19057:6;19013:71;:::i;:::-;19094:80;19170:2;19159:9;19155:18;19146:6;19094:80;:::i;:::-;19221:9;19215:4;19211:20;19206:2;19195:9;19191:18;19184:48;19249:108;19352:4;19343:6;19249:108;:::i;:::-;19241:116;;19367:72;19435:2;19424:9;19420:18;19411:6;19367:72;:::i;:::-;19449:73;19517:3;19506:9;19502:19;19493:6;19449:73;:::i;:::-;18698:831;;;;;;;;:::o;19535:177::-;19675:29;19671:1;19663:6;19659:14;19652:53;19535:177;:::o;19718:366::-;19860:3;19881:67;19945:2;19940:3;19881:67;:::i;:::-;19874:74;;19957:93;20046:3;19957:93;:::i;:::-;20075:2;20070:3;20066:12;20059:19;;19718:366;;;:::o;20090:419::-;20256:4;20294:2;20283:9;20279:18;20271:26;;20343:9;20337:4;20333:20;20329:1;20318:9;20314:17;20307:47;20371:131;20497:4;20371:131;:::i;:::-;20363:139;;20090:419;;;:::o;20515:220::-;20655:34;20651:1;20643:6;20639:14;20632:58;20724:3;20719:2;20711:6;20707:15;20700:28;20515:220;:::o;20741:366::-;20883:3;20904:67;20968:2;20963:3;20904:67;:::i;:::-;20897:74;;20980:93;21069:3;20980:93;:::i;:::-;21098:2;21093:3;21089:12;21082:19;;20741:366;;;:::o;21113:419::-;21279:4;21317:2;21306:9;21302:18;21294:26;;21366:9;21360:4;21356:20;21352:1;21341:9;21337:17;21330:47;21394:131;21520:4;21394:131;:::i;:::-;21386:139;;21113:419;;;:::o

Swarm Source

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