ETH Price: $2,515.90 (+3.31%)

Token

Two Face ((° _| *#))
 

Overview

Max Total Supply

100,000,000 (° _| *#)

Holders

13

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
739,518.531917787964732938 (° _| *#)

Value
$0.00
0xa81dad0b949674062c0D8C3077e4cdCdFFCa670E
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:
TWOFACE

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-05-25
*/

/*
https://t.me/twofaceETH
https://twofacecoin.com/
https://twitter.com/TwofaceERC

*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.19;

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

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

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 transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    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(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

contract TWOFACE is Context, IERC20, Ownable {
    mapping(address => uint256) private _balance;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => uint256) private _walletExcluded;
    mapping(address => uint256) private _walletBlocked;
    uint256 private constant MAX = ~uint256(0);
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 100000000 * 10**_decimals;
    uint256 private constant minSwap = 40000 * 10**_decimals;
    uint256 private constant onePercent = 1000000 * 10**_decimals;
    uint256 private maxSwap = onePercent / 2;
    uint256 public maxTxAmount = onePercent;

    uint256 private launchBlock;

    uint256 public buyTax = 25;
    uint256 public sellTax = 45;
    
    string private constant _name = "Two Face";
    string private constant _symbol = unicode"(° _| *#)";

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    address immutable public taxWallet;
    address immutable public devWallet;

    bool private launch = false;

    constructor() {
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        taxWallet = 0x40d88D4C04f2b6239ad674cAc0E5F18c4F811458;
        devWallet = 0xB6AF466cB6B08251CB31E1b90Ddb77D7688502d2;
        _balance[msg.sender] = _totalSupply;
        _walletExcluded[taxWallet] = 1;
        _walletExcluded[msg.sender] = 1;
        _walletExcluded[address(this)] = 1;

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

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

    function balanceOf(address account) public view override returns (uint256) {
        return _balance[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);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if(currentAllowance != type(uint256).max) { 
            require(
                currentAllowance >= amount,
                "ERC20: transfer amount exceeds allowance"
            );
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }
        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 enableTrading() external onlyOwner {
        launch = true;
        launchBlock = block.number;
    }

    function addExcludedWallet(address wallet) external onlyOwner {
        _walletExcluded[wallet] = 1;
    }

    function removeExcludedWallet(address wallet) external onlyOwner {
        _walletExcluded[wallet] = 0;
    }
    
    function blockActivity(address _wallet) external onlyOwner {
        require(_wallet != address(this) && _wallet != address(uniswapV2Pair) && _wallet != address(uniswapV2Router), "Invalid wallet");
        _walletBlocked[_wallet] = 1;
    }

    function releaseActivity(address _wallet) external onlyOwner {
        _walletBlocked[_wallet] = 0;
    }

    function removeLimits() external onlyOwner {
        maxTxAmount = _totalSupply;
    }

    function changeTax(uint256 newBuyTax, uint256 newSellTax) external onlyOwner {
        require(newBuyTax + newSellTax <= 70, "Tax too high");
        buyTax = newBuyTax;
        sellTax = newSellTax;
    }

    function _tokenTransfer(address from, address to, uint256 amount, uint256 _tax) private {
        uint256 taxTokens = (amount * _tax) / 100;
        uint256 transferAmount = amount - taxTokens;

        _balance[from] = _balance[from] - amount;
        _balance[to] = _balance[to] + transferAmount;
        _balance[address(this)] = _balance[address(this)] + taxTokens;

        emit Transfer(from, to, transferAmount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(amount > 0, "ERC20: no tokens transferred");
        uint256 _tax = 0;
        if (_walletExcluded[from] == 0 && _walletExcluded[to] == 0)
        {
            require(launch, "Trading not open");
            require(_walletBlocked[from] == 0, "Please contact support");
            require(amount <= maxTxAmount, "MaxTx Enabled at launch");
            if (to != uniswapV2Pair && to != address(0xdead)) require(balanceOf(to) + amount <= maxTxAmount, "MaxTx Enabled at launch");
            if (block.number < launchBlock + 1) {_tax=45;} else {
                if (from == uniswapV2Pair) {
                    _tax = buyTax;
                } else if (to == uniswapV2Pair) {
                    uint256 tokensToSwap = balanceOf(address(this));
                    if (tokensToSwap > minSwap) { 
                        uint256 mxSw = maxSwap;
                        if (tokensToSwap > amount) tokensToSwap = amount;
                        if (tokensToSwap > mxSw) tokensToSwap = mxSw;
                        swapTokensForEth(tokensToSwap);
                    }
                    _tax = sellTax;
                }
            }
        }
        _tokenTransfer(from, to, amount, _tax);
    }

    function manualSendBalance() external {
        require(_msgSender() == taxWallet);
        bool success;
        (success, ) = devWallet.call{value: address(this).balance / 10}("");
        (success, ) = taxWallet.call{value: address(this).balance}("");
    } 

    function manualSwapTokens() external {
        require(_msgSender() == taxWallet);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function setMaxSwap(uint256 _max) external onlyOwner {
        maxSwap = _max;
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        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
        );
        bool success;
        (success, ) = devWallet.call{value: address(this).balance / 10}("");
        (success, ) = taxWallet.call{value: address(this).balance}("");
    }
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"addExcludedWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"blockActivity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"changeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSendBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_wallet","type":"address"}],"name":"releaseActivity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"removeExcludedWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_max","type":"uint256"}],"name":"setMaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c060405260026012600a6200001691906200077d565b620f4240620000269190620007ce565b62000032919062000848565b6005556012600a6200004591906200077d565b620f4240620000559190620007ce565b6006556019600855602d6009556000600b60146101000a81548160ff0219169083151502179055503480156200008a57600080fd5b5060006200009d620005db60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350737a250d5630b4cf539739df2c5dacb4c659f2488d600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002249190620008ea565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ae573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d49190620008ea565b6040518363ffffffff1660e01b8152600401620002f39291906200092d565b6020604051808303816000875af115801562000313573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003399190620008ea565b600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507340d88d4c04f2b6239ad674cac0e5f18c4f81145873ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff168152505073b6af466cb6b08251cb31e1b90ddb77d7688502d273ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250506012600a6200041991906200077d565b6305f5e1006200042a9190620007ce565b600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060016003600060805173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200054e620005db60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a620005ad91906200077d565b6305f5e100620005be9190620007ce565b604051620005cd91906200096b565b60405180910390a362000988565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200067157808604811115620006495762000648620005e3565b5b6001851615620006595780820291505b8081029050620006698562000612565b945062000629565b94509492505050565b6000826200068c57600190506200075f565b816200069c57600090506200075f565b8160018114620006b55760028114620006c057620006f6565b60019150506200075f565b60ff841115620006d557620006d4620005e3565b5b8360020a915084821115620006ef57620006ee620005e3565b5b506200075f565b5060208310610133831016604e8410600b8410161715620007305782820a9050838111156200072a5762000729620005e3565b5b6200075f565b6200073f84848460016200061f565b92509050818404811115620007595762000758620005e3565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200078a8262000766565b9150620007978362000770565b9250620007c67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200067a565b905092915050565b6000620007db8262000766565b9150620007e88362000766565b9250828202620007f88162000766565b91508282048414831517620008125762000811620005e3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008558262000766565b9150620008628362000766565b92508262000875576200087462000819565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008b28262000885565b9050919050565b620008c481620008a5565b8114620008d057600080fd5b50565b600081519050620008e481620008b9565b92915050565b60006020828403121562000903576200090262000880565b5b60006200091384828501620008d3565b91505092915050565b6200092781620008a5565b82525050565b60006040820190506200094460008301856200091c565b6200095360208301846200091c565b9392505050565b620009658162000766565b82525050565b60006020820190506200098260008301846200095a565b92915050565b60805160a051613121620009d860003960008181610abe01528181610ff40152611e14015260008181610a5d01528181610b5601528181610be501528181610e940152611eac01526131216000f3fe6080604052600436106101bb5760003560e01c8063751039fc116100ec57806395d89b411161008a578063dba9d42011610064578063dba9d420146105ab578063dd62ed3e146105d4578063f2fde38b14610611578063f38fea601461063a576101c2565b806395d89b4114610518578063a9059cbb14610543578063cc1776d314610580576101c2565b80638c0b5e22116100c65780638c0b5e221461046e5780638da5cb5b146104995780638ea5220f146104c45780639036ed4d146104ef576101c2565b8063751039fc146104295780637c4c75eb146104405780638a8c523c14610457576101c2565b806328176f891161015957806349bd5a5e1161013357806349bd5a5e1461037f5780634f7041a5146103aa57806370a08231146103d5578063715018a614610412576101c2565b806328176f89146103125780632dc0562d14610329578063313ce56714610354576101c2565b806318160ddd1161019557806318160ddd14610258578063198cd9fc146102835780631c3315f0146102ac57806323b872dd146102d5576101c2565b806306fdde03146101c7578063095ea7b3146101f25780630e6e91d81461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610663565b6040516101e9919061233a565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906123f5565b6106a0565b6040516102269190612450565b60405180910390f35b34801561023b57600080fd5b506102566004803603810190610251919061246b565b6106be565b005b34801561026457600080fd5b5061026d61075d565b60405161027a91906124a7565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a591906124c2565b610781565b005b3480156102b857600080fd5b506102d360048036038101906102ce91906124c2565b61085e565b005b3480156102e157600080fd5b506102fc60048036038101906102f791906124ef565b61093b565b6040516103099190612450565b60405180910390f35b34801561031e57600080fd5b50610327610a5b565b005b34801561033557600080fd5b5061033e610be3565b60405161034b9190612551565b60405180910390f35b34801561036057600080fd5b50610369610c07565b6040516103769190612588565b60405180910390f35b34801561038b57600080fd5b50610394610c10565b6040516103a19190612551565b60405180910390f35b3480156103b657600080fd5b506103bf610c36565b6040516103cc91906124a7565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f791906124c2565b610c3c565b60405161040991906124a7565b60405180910390f35b34801561041e57600080fd5b50610427610c85565b005b34801561043557600080fd5b5061043e610dd8565b005b34801561044c57600080fd5b50610455610e92565b005b34801561046357600080fd5b5061046c610f0a565b005b34801561047a57600080fd5b50610483610fc3565b60405161049091906124a7565b60405180910390f35b3480156104a557600080fd5b506104ae610fc9565b6040516104bb9190612551565b60405180910390f35b3480156104d057600080fd5b506104d9610ff2565b6040516104e69190612551565b60405180910390f35b3480156104fb57600080fd5b50610516600480360381019061051191906125a3565b611016565b005b34801561052457600080fd5b5061052d61110c565b60405161053a919061233a565b60405180910390f35b34801561054f57600080fd5b5061056a600480360381019061056591906123f5565b611149565b6040516105779190612450565b60405180910390f35b34801561058c57600080fd5b50610595611167565b6040516105a291906124a7565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd91906124c2565b61116d565b005b3480156105e057600080fd5b506105fb60048036038101906105f691906125e3565b61124a565b60405161060891906124a7565b60405180910390f35b34801561061d57600080fd5b50610638600480360381019061063391906124c2565b6112d1565b005b34801561064657600080fd5b50610661600480360381019061065c91906124c2565b611372565b005b60606040518060400160405280600881526020017f54776f2046616365000000000000000000000000000000000000000000000000815250905090565b60006106b46106ad611572565b848461157a565b6001905092915050565b6106c6611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074a9061266f565b60405180910390fd5b8060058190555050565b60006012600a61076d91906127f1565b6305f5e10061077c919061283c565b905090565b610789611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080d9061266f565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b610866611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ea9061266f565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000610948848484611743565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610993611572565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a4f5782811015610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a31906128f0565b60405180910390fd5b610a4e85610a46611572565b85840361157a565b5b60019150509392505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610a9a611572565b73ffffffffffffffffffffffffffffffffffffffff1614610aba57600080fd5b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16600a47610b00919061293f565b604051610b0c906129a1565b60006040518083038185875af1925050503d8060008114610b49576040519150601f19603f3d011682016040523d82523d6000602084013e610b4e565b606091505b5050809150507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1647604051610b98906129a1565b60006040518083038185875af1925050503d8060008114610bd5576040519150601f19603f3d011682016040523d82523d6000602084013e610bda565b606091505b50508091505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006012905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c8d611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d119061266f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610de0611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e649061266f565b60405180910390fd5b6012600a610e7b91906127f1565b6305f5e100610e8a919061283c565b600681905550565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610ed1611572565b73ffffffffffffffffffffffffffffffffffffffff1614610ef157600080fd5b6000610efc30610c3c565b9050610f0781611bd1565b50565b610f12611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f969061266f565b60405180910390fd5b6001600b60146101000a81548160ff02191690831515021790555043600781905550565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000000000000000000000000000000000000000000081565b61101e611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a29061266f565b60405180910390fd5b604681836110b991906129b6565b11156110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f190612a36565b60405180910390fd5b81600881905550806009819055505050565b60606040518060400160405280600a81526020017f28c2b0205f7c202a232900000000000000000000000000000000000000000000815250905090565b600061115d611156611572565b8484611743565b6001905092915050565b60095481565b611175611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f99061266f565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112d9611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d9061266f565b60405180910390fd5b61136f81611f3b565b50565b61137a611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fe9061266f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156114915750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156114eb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61152a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152190612aa2565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090612b34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f90612bc6565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161173691906124a7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990612c58565b60405180910390fd5b600081116117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612cc4565b60405180910390fd5b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414801561188457506000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15611bbf57600b60149054906101000a900460ff166118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf90612d30565b60405180910390fd5b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461195a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195190612d9c565b60405180910390fd5b60065482111561199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690612e08565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a2b575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a895760065482611a3d85610c3c565b611a4791906129b6565b1115611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90612e08565b60405180910390fd5b5b6001600754611a9891906129b6565b431015611aa857602d9050611bbe565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b07576008549050611bbd565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bbc576000611b6730610c3c565b90506012600a611b7791906127f1565b619c40611b84919061283c565b811115611bb5576000600554905083821115611b9e578391505b80821115611baa578091505b611bb382611bd1565b505b6009549150505b5b5b5b611bcb84848484612067565b50505050565b6000600267ffffffffffffffff811115611bee57611bed612e28565b5b604051908082528060200260200182016040528015611c1c5781602001602082028036833780820191505090505b5090503081600081518110611c3457611c33612e57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cff9190612e9b565b81600181518110611d1357611d12612e57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d7a30600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461157a565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611dde959493929190612fcb565b600060405180830381600087803b158015611df857600080fd5b505af1158015611e0c573d6000803e3d6000fd5b5050505060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16600a47611e56919061293f565b604051611e62906129a1565b60006040518083038185875af1925050503d8060008114611e9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ea4565b606091505b5050809150507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1647604051611eee906129a1565b60006040518083038185875af1925050503d8060008114611f2b576040519150601f19603f3d011682016040523d82523d6000602084013e611f30565b606091505b505080915050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa190613097565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060648284612077919061283c565b612081919061293f565b90506000818461209191906130b7565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120de91906130b7565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461216c91906129b6565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fa91906129b6565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161229a91906124a7565b60405180910390a3505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122e45780820151818401526020810190506122c9565b60008484015250505050565b6000601f19601f8301169050919050565b600061230c826122aa565b61231681856122b5565b93506123268185602086016122c6565b61232f816122f0565b840191505092915050565b600060208201905081810360008301526123548184612301565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061238c82612361565b9050919050565b61239c81612381565b81146123a757600080fd5b50565b6000813590506123b981612393565b92915050565b6000819050919050565b6123d2816123bf565b81146123dd57600080fd5b50565b6000813590506123ef816123c9565b92915050565b6000806040838503121561240c5761240b61235c565b5b600061241a858286016123aa565b925050602061242b858286016123e0565b9150509250929050565b60008115159050919050565b61244a81612435565b82525050565b60006020820190506124656000830184612441565b92915050565b6000602082840312156124815761248061235c565b5b600061248f848285016123e0565b91505092915050565b6124a1816123bf565b82525050565b60006020820190506124bc6000830184612498565b92915050565b6000602082840312156124d8576124d761235c565b5b60006124e6848285016123aa565b91505092915050565b6000806000606084860312156125085761250761235c565b5b6000612516868287016123aa565b9350506020612527868287016123aa565b9250506040612538868287016123e0565b9150509250925092565b61254b81612381565b82525050565b60006020820190506125666000830184612542565b92915050565b600060ff82169050919050565b6125828161256c565b82525050565b600060208201905061259d6000830184612579565b92915050565b600080604083850312156125ba576125b961235c565b5b60006125c8858286016123e0565b92505060206125d9858286016123e0565b9150509250929050565b600080604083850312156125fa576125f961235c565b5b6000612608858286016123aa565b9250506020612619858286016123aa565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126596020836122b5565b915061266482612623565b602082019050919050565b600060208201905081810360008301526126888161264c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612715578086048111156126f1576126f061268f565b5b60018516156127005780820291505b808102905061270e856126be565b94506126d5565b94509492505050565b60008261272e57600190506127ea565b8161273c57600090506127ea565b8160018114612752576002811461275c5761278b565b60019150506127ea565b60ff84111561276e5761276d61268f565b5b8360020a9150848211156127855761278461268f565b5b506127ea565b5060208310610133831016604e8410600b84101617156127c05782820a9050838111156127bb576127ba61268f565b5b6127ea565b6127cd84848460016126cb565b925090508184048111156127e4576127e361268f565b5b81810290505b9392505050565b60006127fc826123bf565b91506128078361256c565b92506128347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461271e565b905092915050565b6000612847826123bf565b9150612852836123bf565b9250828202612860816123bf565b915082820484148315176128775761287661268f565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006128da6028836122b5565b91506128e58261287e565b604082019050919050565b60006020820190508181036000830152612909816128cd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061294a826123bf565b9150612955836123bf565b92508261296557612964612910565b5b828204905092915050565b600081905092915050565b50565b600061298b600083612970565b91506129968261297b565b600082019050919050565b60006129ac8261297e565b9150819050919050565b60006129c1826123bf565b91506129cc836123bf565b92508282019050808211156129e4576129e361268f565b5b92915050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000612a20600c836122b5565b9150612a2b826129ea565b602082019050919050565b60006020820190508181036000830152612a4f81612a13565b9050919050565b7f496e76616c69642077616c6c6574000000000000000000000000000000000000600082015250565b6000612a8c600e836122b5565b9150612a9782612a56565b602082019050919050565b60006020820190508181036000830152612abb81612a7f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b1e6024836122b5565b9150612b2982612ac2565b604082019050919050565b60006020820190508181036000830152612b4d81612b11565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612bb06022836122b5565b9150612bbb82612b54565b604082019050919050565b60006020820190508181036000830152612bdf81612ba3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c426025836122b5565b9150612c4d82612be6565b604082019050919050565b60006020820190508181036000830152612c7181612c35565b9050919050565b7f45524332303a206e6f20746f6b656e73207472616e7366657272656400000000600082015250565b6000612cae601c836122b5565b9150612cb982612c78565b602082019050919050565b60006020820190508181036000830152612cdd81612ca1565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612d1a6010836122b5565b9150612d2582612ce4565b602082019050919050565b60006020820190508181036000830152612d4981612d0d565b9050919050565b7f506c6561736520636f6e7461637420737570706f727400000000000000000000600082015250565b6000612d866016836122b5565b9150612d9182612d50565b602082019050919050565b60006020820190508181036000830152612db581612d79565b9050919050565b7f4d6178547820456e61626c6564206174206c61756e6368000000000000000000600082015250565b6000612df26017836122b5565b9150612dfd82612dbc565b602082019050919050565b60006020820190508181036000830152612e2181612de5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e9581612393565b92915050565b600060208284031215612eb157612eb061235c565b5b6000612ebf84828501612e86565b91505092915050565b6000819050919050565b6000819050919050565b6000612ef7612ef2612eed84612ec8565b612ed2565b6123bf565b9050919050565b612f0781612edc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f4281612381565b82525050565b6000612f548383612f39565b60208301905092915050565b6000602082019050919050565b6000612f7882612f0d565b612f828185612f18565b9350612f8d83612f29565b8060005b83811015612fbe578151612fa58882612f48565b9750612fb083612f60565b925050600181019050612f91565b5085935050505092915050565b600060a082019050612fe06000830188612498565b612fed6020830187612efe565b8181036040830152612fff8186612f6d565b905061300e6060830185612542565b61301b6080830184612498565b9695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130816026836122b5565b915061308c82613025565b604082019050919050565b600060208201905081810360008301526130b081613074565b9050919050565b60006130c2826123bf565b91506130cd836123bf565b92508282039050818111156130e5576130e461268f565b5b9291505056fea2646970667358221220a280b6d95dc72872b9524feb4c6049a046532add6bcbae69439d815bf58ed34e64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c8063751039fc116100ec57806395d89b411161008a578063dba9d42011610064578063dba9d420146105ab578063dd62ed3e146105d4578063f2fde38b14610611578063f38fea601461063a576101c2565b806395d89b4114610518578063a9059cbb14610543578063cc1776d314610580576101c2565b80638c0b5e22116100c65780638c0b5e221461046e5780638da5cb5b146104995780638ea5220f146104c45780639036ed4d146104ef576101c2565b8063751039fc146104295780637c4c75eb146104405780638a8c523c14610457576101c2565b806328176f891161015957806349bd5a5e1161013357806349bd5a5e1461037f5780634f7041a5146103aa57806370a08231146103d5578063715018a614610412576101c2565b806328176f89146103125780632dc0562d14610329578063313ce56714610354576101c2565b806318160ddd1161019557806318160ddd14610258578063198cd9fc146102835780631c3315f0146102ac57806323b872dd146102d5576101c2565b806306fdde03146101c7578063095ea7b3146101f25780630e6e91d81461022f576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101dc610663565b6040516101e9919061233a565b60405180910390f35b3480156101fe57600080fd5b50610219600480360381019061021491906123f5565b6106a0565b6040516102269190612450565b60405180910390f35b34801561023b57600080fd5b506102566004803603810190610251919061246b565b6106be565b005b34801561026457600080fd5b5061026d61075d565b60405161027a91906124a7565b60405180910390f35b34801561028f57600080fd5b506102aa60048036038101906102a591906124c2565b610781565b005b3480156102b857600080fd5b506102d360048036038101906102ce91906124c2565b61085e565b005b3480156102e157600080fd5b506102fc60048036038101906102f791906124ef565b61093b565b6040516103099190612450565b60405180910390f35b34801561031e57600080fd5b50610327610a5b565b005b34801561033557600080fd5b5061033e610be3565b60405161034b9190612551565b60405180910390f35b34801561036057600080fd5b50610369610c07565b6040516103769190612588565b60405180910390f35b34801561038b57600080fd5b50610394610c10565b6040516103a19190612551565b60405180910390f35b3480156103b657600080fd5b506103bf610c36565b6040516103cc91906124a7565b60405180910390f35b3480156103e157600080fd5b506103fc60048036038101906103f791906124c2565b610c3c565b60405161040991906124a7565b60405180910390f35b34801561041e57600080fd5b50610427610c85565b005b34801561043557600080fd5b5061043e610dd8565b005b34801561044c57600080fd5b50610455610e92565b005b34801561046357600080fd5b5061046c610f0a565b005b34801561047a57600080fd5b50610483610fc3565b60405161049091906124a7565b60405180910390f35b3480156104a557600080fd5b506104ae610fc9565b6040516104bb9190612551565b60405180910390f35b3480156104d057600080fd5b506104d9610ff2565b6040516104e69190612551565b60405180910390f35b3480156104fb57600080fd5b50610516600480360381019061051191906125a3565b611016565b005b34801561052457600080fd5b5061052d61110c565b60405161053a919061233a565b60405180910390f35b34801561054f57600080fd5b5061056a600480360381019061056591906123f5565b611149565b6040516105779190612450565b60405180910390f35b34801561058c57600080fd5b50610595611167565b6040516105a291906124a7565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd91906124c2565b61116d565b005b3480156105e057600080fd5b506105fb60048036038101906105f691906125e3565b61124a565b60405161060891906124a7565b60405180910390f35b34801561061d57600080fd5b50610638600480360381019061063391906124c2565b6112d1565b005b34801561064657600080fd5b50610661600480360381019061065c91906124c2565b611372565b005b60606040518060400160405280600881526020017f54776f2046616365000000000000000000000000000000000000000000000000815250905090565b60006106b46106ad611572565b848461157a565b6001905092915050565b6106c6611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610753576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161074a9061266f565b60405180910390fd5b8060058190555050565b60006012600a61076d91906127f1565b6305f5e10061077c919061283c565b905090565b610789611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610816576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080d9061266f565b60405180910390fd5b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b610866611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ea9061266f565b60405180910390fd5b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000610948848484611743565b6000600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610993611572565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a4f5782811015610a3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a31906128f0565b60405180910390fd5b610a4e85610a46611572565b85840361157a565b5b60019150509392505050565b7f00000000000000000000000040d88d4c04f2b6239ad674cac0e5f18c4f81145873ffffffffffffffffffffffffffffffffffffffff16610a9a611572565b73ffffffffffffffffffffffffffffffffffffffff1614610aba57600080fd5b60007f000000000000000000000000b6af466cb6b08251cb31e1b90ddb77d7688502d273ffffffffffffffffffffffffffffffffffffffff16600a47610b00919061293f565b604051610b0c906129a1565b60006040518083038185875af1925050503d8060008114610b49576040519150601f19603f3d011682016040523d82523d6000602084013e610b4e565b606091505b5050809150507f00000000000000000000000040d88d4c04f2b6239ad674cac0e5f18c4f81145873ffffffffffffffffffffffffffffffffffffffff1647604051610b98906129a1565b60006040518083038185875af1925050503d8060008114610bd5576040519150601f19603f3d011682016040523d82523d6000602084013e610bda565b606091505b50508091505050565b7f00000000000000000000000040d88d4c04f2b6239ad674cac0e5f18c4f81145881565b60006012905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c8d611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d119061266f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610de0611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e649061266f565b60405180910390fd5b6012600a610e7b91906127f1565b6305f5e100610e8a919061283c565b600681905550565b7f00000000000000000000000040d88d4c04f2b6239ad674cac0e5f18c4f81145873ffffffffffffffffffffffffffffffffffffffff16610ed1611572565b73ffffffffffffffffffffffffffffffffffffffff1614610ef157600080fd5b6000610efc30610c3c565b9050610f0781611bd1565b50565b610f12611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f9f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f969061266f565b60405180910390fd5b6001600b60146101000a81548160ff02191690831515021790555043600781905550565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f000000000000000000000000b6af466cb6b08251cb31e1b90ddb77d7688502d281565b61101e611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a29061266f565b60405180910390fd5b604681836110b991906129b6565b11156110fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110f190612a36565b60405180910390fd5b81600881905550806009819055505050565b60606040518060400160405280600a81526020017f28c2b0205f7c202a232900000000000000000000000000000000000000000000815250905090565b600061115d611156611572565b8484611743565b6001905092915050565b60095481565b611175611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611202576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f99061266f565b60405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112d9611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d9061266f565b60405180910390fd5b61136f81611f3b565b50565b61137a611572565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611407576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fe9061266f565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141580156114915750600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156114eb5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b61152a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152190612aa2565b60405180910390fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e090612b34565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f90612bc6565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161173691906124a7565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a990612c58565b60405180910390fd5b600081116117f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ec90612cc4565b60405180910390fd5b600080600360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414801561188457506000600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054145b15611bbf57600b60149054906101000a900460ff166118d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118cf90612d30565b60405180910390fd5b6000600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461195a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195190612d9c565b60405180910390fd5b60065482111561199f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199690612e08565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a2b575061dead73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611a895760065482611a3d85610c3c565b611a4791906129b6565b1115611a88576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7f90612e08565b60405180910390fd5b5b6001600754611a9891906129b6565b431015611aa857602d9050611bbe565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611b07576008549050611bbd565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611bbc576000611b6730610c3c565b90506012600a611b7791906127f1565b619c40611b84919061283c565b811115611bb5576000600554905083821115611b9e578391505b80821115611baa578091505b611bb382611bd1565b505b6009549150505b5b5b5b611bcb84848484612067565b50505050565b6000600267ffffffffffffffff811115611bee57611bed612e28565b5b604051908082528060200260200182016040528015611c1c5781602001602082028036833780820191505090505b5090503081600081518110611c3457611c33612e57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cdb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611cff9190612e9b565b81600181518110611d1357611d12612e57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d7a30600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461157a565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611dde959493929190612fcb565b600060405180830381600087803b158015611df857600080fd5b505af1158015611e0c573d6000803e3d6000fd5b5050505060007f000000000000000000000000b6af466cb6b08251cb31e1b90ddb77d7688502d273ffffffffffffffffffffffffffffffffffffffff16600a47611e56919061293f565b604051611e62906129a1565b60006040518083038185875af1925050503d8060008114611e9f576040519150601f19603f3d011682016040523d82523d6000602084013e611ea4565b606091505b5050809150507f00000000000000000000000040d88d4c04f2b6239ad674cac0e5f18c4f81145873ffffffffffffffffffffffffffffffffffffffff1647604051611eee906129a1565b60006040518083038185875af1925050503d8060008114611f2b576040519150601f19603f3d011682016040523d82523d6000602084013e611f30565b606091505b505080915050505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611faa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa190613097565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060648284612077919061283c565b612081919061293f565b90506000818461209191906130b7565b905083600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120de91906130b7565b600160008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461216c91906129b6565b600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121fa91906129b6565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161229a91906124a7565b60405180910390a3505050505050565b600081519050919050565b600082825260208201905092915050565b60005b838110156122e45780820151818401526020810190506122c9565b60008484015250505050565b6000601f19601f8301169050919050565b600061230c826122aa565b61231681856122b5565b93506123268185602086016122c6565b61232f816122f0565b840191505092915050565b600060208201905081810360008301526123548184612301565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061238c82612361565b9050919050565b61239c81612381565b81146123a757600080fd5b50565b6000813590506123b981612393565b92915050565b6000819050919050565b6123d2816123bf565b81146123dd57600080fd5b50565b6000813590506123ef816123c9565b92915050565b6000806040838503121561240c5761240b61235c565b5b600061241a858286016123aa565b925050602061242b858286016123e0565b9150509250929050565b60008115159050919050565b61244a81612435565b82525050565b60006020820190506124656000830184612441565b92915050565b6000602082840312156124815761248061235c565b5b600061248f848285016123e0565b91505092915050565b6124a1816123bf565b82525050565b60006020820190506124bc6000830184612498565b92915050565b6000602082840312156124d8576124d761235c565b5b60006124e6848285016123aa565b91505092915050565b6000806000606084860312156125085761250761235c565b5b6000612516868287016123aa565b9350506020612527868287016123aa565b9250506040612538868287016123e0565b9150509250925092565b61254b81612381565b82525050565b60006020820190506125666000830184612542565b92915050565b600060ff82169050919050565b6125828161256c565b82525050565b600060208201905061259d6000830184612579565b92915050565b600080604083850312156125ba576125b961235c565b5b60006125c8858286016123e0565b92505060206125d9858286016123e0565b9150509250929050565b600080604083850312156125fa576125f961235c565b5b6000612608858286016123aa565b9250506020612619858286016123aa565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006126596020836122b5565b915061266482612623565b602082019050919050565b600060208201905081810360008301526126888161264c565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612715578086048111156126f1576126f061268f565b5b60018516156127005780820291505b808102905061270e856126be565b94506126d5565b94509492505050565b60008261272e57600190506127ea565b8161273c57600090506127ea565b8160018114612752576002811461275c5761278b565b60019150506127ea565b60ff84111561276e5761276d61268f565b5b8360020a9150848211156127855761278461268f565b5b506127ea565b5060208310610133831016604e8410600b84101617156127c05782820a9050838111156127bb576127ba61268f565b5b6127ea565b6127cd84848460016126cb565b925090508184048111156127e4576127e361268f565b5b81810290505b9392505050565b60006127fc826123bf565b91506128078361256c565b92506128347fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848461271e565b905092915050565b6000612847826123bf565b9150612852836123bf565b9250828202612860816123bf565b915082820484148315176128775761287661268f565b5b5092915050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b60006128da6028836122b5565b91506128e58261287e565b604082019050919050565b60006020820190508181036000830152612909816128cd565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061294a826123bf565b9150612955836123bf565b92508261296557612964612910565b5b828204905092915050565b600081905092915050565b50565b600061298b600083612970565b91506129968261297b565b600082019050919050565b60006129ac8261297e565b9150819050919050565b60006129c1826123bf565b91506129cc836123bf565b92508282019050808211156129e4576129e361268f565b5b92915050565b7f54617820746f6f20686967680000000000000000000000000000000000000000600082015250565b6000612a20600c836122b5565b9150612a2b826129ea565b602082019050919050565b60006020820190508181036000830152612a4f81612a13565b9050919050565b7f496e76616c69642077616c6c6574000000000000000000000000000000000000600082015250565b6000612a8c600e836122b5565b9150612a9782612a56565b602082019050919050565b60006020820190508181036000830152612abb81612a7f565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b1e6024836122b5565b9150612b2982612ac2565b604082019050919050565b60006020820190508181036000830152612b4d81612b11565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612bb06022836122b5565b9150612bbb82612b54565b604082019050919050565b60006020820190508181036000830152612bdf81612ba3565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c426025836122b5565b9150612c4d82612be6565b604082019050919050565b60006020820190508181036000830152612c7181612c35565b9050919050565b7f45524332303a206e6f20746f6b656e73207472616e7366657272656400000000600082015250565b6000612cae601c836122b5565b9150612cb982612c78565b602082019050919050565b60006020820190508181036000830152612cdd81612ca1565b9050919050565b7f54726164696e67206e6f74206f70656e00000000000000000000000000000000600082015250565b6000612d1a6010836122b5565b9150612d2582612ce4565b602082019050919050565b60006020820190508181036000830152612d4981612d0d565b9050919050565b7f506c6561736520636f6e7461637420737570706f727400000000000000000000600082015250565b6000612d866016836122b5565b9150612d9182612d50565b602082019050919050565b60006020820190508181036000830152612db581612d79565b9050919050565b7f4d6178547820456e61626c6564206174206c61756e6368000000000000000000600082015250565b6000612df26017836122b5565b9150612dfd82612dbc565b602082019050919050565b60006020820190508181036000830152612e2181612de5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612e9581612393565b92915050565b600060208284031215612eb157612eb061235c565b5b6000612ebf84828501612e86565b91505092915050565b6000819050919050565b6000819050919050565b6000612ef7612ef2612eed84612ec8565b612ed2565b6123bf565b9050919050565b612f0781612edc565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f4281612381565b82525050565b6000612f548383612f39565b60208301905092915050565b6000602082019050919050565b6000612f7882612f0d565b612f828185612f18565b9350612f8d83612f29565b8060005b83811015612fbe578151612fa58882612f48565b9750612fb083612f60565b925050600181019050612f91565b5085935050505092915050565b600060a082019050612fe06000830188612498565b612fed6020830187612efe565b8181036040830152612fff8186612f6d565b905061300e6060830185612542565b61301b6080830184612498565b9695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006130816026836122b5565b915061308c82613025565b604082019050919050565b600060208201905081810360008301526130b081613074565b9050919050565b60006130c2826123bf565b91506130cd836123bf565b92508282039050818111156130e5576130e461268f565b5b9291505056fea2646970667358221220a280b6d95dc72872b9524feb4c6049a046532add6bcbae69439d815bf58ed34e64736f6c63430008130033

Deployed Bytecode Sourcemap

2552:7783:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4271:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5105:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9558:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4548:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6815:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6441:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5273:578;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9081:265;;;;;;;;;;;;;:::i;:::-;;3539:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4457:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3504:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3271:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4656:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1881:148;;;;;;;;;;;;;:::i;:::-;;6930:88;;;;;;;;;;;;;:::i;:::-;;9355:195;;;;;;;;;;;;;:::i;:::-;;6204:113;;;;;;;;;;;;;:::i;:::-;;3187:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1313:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3580:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7026:209;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4362:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4782:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3304:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6325:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4955:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1527:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6564:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4271:83;4308:13;4341:5;;;;;;;;;;;;;;;;;4334:12;;4271:83;:::o;5105:160::-;5180:4;5196:39;5205:12;:10;:12::i;:::-;5219:7;5228:6;5196:8;:39::i;:::-;5253:4;5246:11;;5105:160;;;;:::o;9558:86::-;1450:12;:10;:12::i;:::-;1440:22;;:6;;;;;;;;;;:22;;;1432:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;9632:4:::1;9622:7;:14;;;;9558:86:::0;:::o;4548:100::-;4601:7;2928:2;2989;:13;;;;:::i;:::-;2977:9;:25;;;;:::i;:::-;4621:19;;4548:100;:::o;6815:107::-;1450:12;:10;:12::i;:::-;1440:22;;:6;;;;;;;;;;:22;;;1432:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6913:1:::1;6887:14;:23;6902:7;6887:23;;;;;;;;;;;;;;;:27;;;;6815:107:::0;:::o;6441:111::-;1450:12;:10;:12::i;:::-;1440:22;;:6;;;;;;;;;;:22;;;1432:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6543:1:::1;6517:15;:23;6533:6;6517:23;;;;;;;;;;;;;;;:27;;;;6441:111:::0;:::o;5273:578::-;5371:4;5388:36;5398:6;5406:9;5417:6;5388:9;:36::i;:::-;5437:24;5464:11;:19;5476:6;5464:19;;;;;;;;;;;;;;;:33;5484:12;:10;:12::i;:::-;5464:33;;;;;;;;;;;;;;;;5437:60;;5531:17;5511:16;:37;5508:314;;5612:6;5592:16;:26;;5566:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;5738:57;5747:6;5755:12;:10;:12::i;:::-;5788:6;5769:16;:25;5738:8;:57::i;:::-;5508:314;5839:4;5832:11;;;5273:578;;;;;:::o;9081:265::-;9154:9;9138:25;;:12;:10;:12::i;:::-;:25;;;9130:34;;;;;;9175:12;9212:9;:14;;9258:2;9234:21;:26;;;;:::i;:::-;9212:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9198:67;;;;;9290:9;:14;;9312:21;9290:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9276:62;;;;;9119:227;9081:265::o;3539:34::-;;;:::o;4457:83::-;4498:5;2928:2;4516:16;;4457:83;:::o;3504:28::-;;;;;;;;;;;;;:::o;3271:26::-;;;;:::o;4656:118::-;4722:7;4749:8;:17;4758:7;4749:17;;;;;;;;;;;;;;;;4742:24;;4656:118;;;:::o;1881:148::-;1450:12;:10;:12::i;:::-;1440:22;;:6;;;;;;;;;;:22;;;1432:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1988:1:::1;1951:40;;1972:6;::::0;::::1;;;;;;;;1951:40;;;;;;;;;;;;2019:1;2002:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1881:148::o:0;6930:88::-;1450:12;:10;:12::i;:::-;1440:22;;:6;;;;;;;;;;:22;;;1432:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2928:2:::1;2989;:13;;;;:::i;:::-;2977:9;:25;;;;:::i;:::-;6984:11;:26;;;;6930:88::o:0;9355:195::-;9427:9;9411:25;;:12;:10;:12::i;:::-;:25;;;9403:34;;;;;;9448:23;9474:24;9492:4;9474:9;:24::i;:::-;9448:50;;9509:33;9526:15;9509:16;:33::i;:::-;9392:158;9355:195::o;6204:113::-;1450:12;:10;:12::i;:::-;1440:22;;:6;;;;;;;;;;:22;;;1432:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6268:4:::1;6259:6;;:13;;;;;;;;;;;;;;;;;;6297:12;6283:11;:26;;;;6204:113::o:0;3187:39::-;;;;:::o;1313:79::-;1351:7;1378:6;;;;;;;;;;;1371:13;;1313:79;:::o;3580:34::-;;;:::o;7026:209::-;1450:12;:10;:12::i;:::-;1440:22;;:6;;;;;;;;;;:22;;;1432:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7148:2:::1;7134:10;7122:9;:22;;;;:::i;:::-;:28;;7114:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;7187:9;7178:6;:18;;;;7217:10;7207:7;:20;;;;7026:209:::0;;:::o;4362:87::-;4401:13;4434:7;;;;;;;;;;;;;;;;;4427:14;;4362:87;:::o;4782:165::-;4859:4;4875:42;4885:12;:10;:12::i;:::-;4899:9;4910:6;4875:9;:42::i;:::-;4935:4;4928:11;;4782:165;;;;:::o;3304:27::-;;;;:::o;6325:108::-;1450:12;:10;:12::i;:::-;1440:22;;:6;;;;;;;;;;:22;;;1432:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6424:1:::1;6398:15;:23;6414:6;6398:23;;;;;;;;;;;;;;;:27;;;;6325:108:::0;:::o;4955:142::-;5036:7;5062:11;:18;5074:5;5062:18;;;;;;;;;;;;;;;:27;5081:7;5062:27;;;;;;;;;;;;;;;;5055:34;;4955:142;;;;:::o;1527:109::-;1450:12;:10;:12::i;:::-;1440:22;;:6;;;;;;;;;;:22;;;1432:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1600:28:::1;1619:8;1600:18;:28::i;:::-;1527:109:::0;:::o;6564:243::-;1450:12;:10;:12::i;:::-;1440:22;;:6;;;;;;;;;;:22;;;1432:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6661:4:::1;6642:24;;:7;:24;;;;:61;;;;;6689:13;;;;;;;;;;;6670:33;;:7;:33;;;;6642:61;:100;;;;;6726:15;;;;;;;;;;;6707:35;;:7;:35;;;;6642:100;6634:127;;;;;;;;;;;;:::i;:::-;;;;;;;;;6798:1;6772:14;:23;6787:7;6772:23;;;;;;;;;;;;;;;:27;;;;6564:243:::0;:::o;188:98::-;241:7;268:10;261:17;;188:98;:::o;5859:335::-;5969:1;5952:19;;:5;:19;;;5944:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6050:1;6031:21;;:7;:21;;;6023:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6132:6;6102:11;:18;6114:5;6102:18;;;;;;;;;;;;;;;:27;6121:7;6102:27;;;;;;;;;;;;;;;:36;;;;6170:7;6154:32;;6163:5;6154:32;;;6179:6;6154:32;;;;;;:::i;:::-;;;;;;;;5859:335;;;:::o;7685:1388::-;7789:1;7773:18;;:4;:18;;;7765:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7861:1;7852:6;:10;7844:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;7906:12;7962:1;7937:15;:21;7953:4;7937:21;;;;;;;;;;;;;;;;:26;:54;;;;;7990:1;7967:15;:19;7983:2;7967:19;;;;;;;;;;;;;;;;:24;7937:54;7933:1084;;;8025:6;;;;;;;;;;;8017:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;8099:1;8075:14;:20;8090:4;8075:20;;;;;;;;;;;;;;;;:25;8067:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8160:11;;8150:6;:21;;8142:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;8224:13;;;;;;;;;;;8218:19;;:2;:19;;;;:44;;;;;8255:6;8241:21;;:2;:21;;;;8218:44;8214:123;;;8298:11;;8288:6;8272:13;8282:2;8272:9;:13::i;:::-;:22;;;;:::i;:::-;:37;;8264:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;8214:123;8385:1;8371:11;;:15;;;;:::i;:::-;8356:12;:30;8352:654;;;8394:2;8389:7;;8352:654;;;8435:13;;;;;;;;;;;8427:21;;:4;:21;;;8423:568;;8480:6;;8473:13;;8423:568;;;8522:13;;;;;;;;;;;8516:19;;:2;:19;;;8512:479;;8560:20;8583:24;8601:4;8583:9;:24::i;:::-;8560:47;;2928:2;3052;:13;;;;:::i;:::-;3044:5;:21;;;;:::i;:::-;8634:12;:22;8630:305;;;8686:12;8701:7;;8686:22;;8754:6;8739:12;:21;8735:48;;;8777:6;8762:21;;8735:48;8829:4;8814:12;:19;8810:44;;;8850:4;8835:19;;8810:44;8881:30;8898:12;8881:16;:30::i;:::-;8658:277;8630:305;8964:7;;8957:14;;8537:454;8512:479;8423:568;8352:654;7933:1084;9027:38;9042:4;9048:2;9052:6;9060:4;9027:14;:38::i;:::-;7754:1319;7685:1388;;;:::o;9652:645::-;9718:21;9756:1;9742:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9718:40;;9787:4;9769;9774:1;9769:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;9813:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9803:4;9808:1;9803:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;9846:62;9863:4;9878:15;;;;;;;;;;;9896:11;9846:8;:62::i;:::-;9919:15;;;;;;;;;;;:66;;;10000:11;10026:1;10042:4;10069;10089:15;9919:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10126:12;10163:9;:14;;10209:2;10185:21;:26;;;;:::i;:::-;10163:53;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10149:67;;;;;10241:9;:14;;10263:21;10241:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10227:62;;;;;9707:590;;9652:645;:::o;1644:229::-;1738:1;1718:22;;:8;:22;;;1710:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1828:8;1799:38;;1820:6;;;;;;;;;;1799:38;;;;;;;;;;;;1857:8;1848:6;;:17;;;;;;;;;;;;;;;;;;1644:229;:::o;7243:434::-;7342:17;7380:3;7372:4;7363:6;:13;;;;:::i;:::-;7362:21;;;;:::i;:::-;7342:41;;7394:22;7428:9;7419:6;:18;;;;:::i;:::-;7394:43;;7484:6;7467:8;:14;7476:4;7467:14;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;7450:8;:14;7459:4;7450:14;;;;;;;;;;;;;;;:40;;;;7531:14;7516:8;:12;7525:2;7516:12;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;7501:8;:12;7510:2;7501:12;;;;;;;;;;;;;;;:44;;;;7608:9;7582:8;:23;7599:4;7582:23;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;7556:8;:23;7573:4;7556:23;;;;;;;;;;;;;;;:61;;;;7650:2;7635:34;;7644:4;7635:34;;;7654:14;7635:34;;;;;;:::i;:::-;;;;;;;;7331:346;;7243:434;;;;:::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:329::-;3505:6;3554:2;3542:9;3533:7;3529:23;3525:32;3522:119;;;3560:79;;:::i;:::-;3522:119;3680:1;3705:53;3750:7;3741:6;3730:9;3726:22;3705:53;:::i;:::-;3695:63;;3651:117;3446:329;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:329::-;4192:6;4241:2;4229:9;4220:7;4216:23;4212:32;4209:119;;;4247:79;;:::i;:::-;4209:119;4367:1;4392:53;4437:7;4428:6;4417:9;4413:22;4392:53;:::i;:::-;4382:63;;4338:117;4133:329;;;;:::o;4468:619::-;4545:6;4553;4561;4610:2;4598:9;4589:7;4585:23;4581:32;4578:119;;;4616:79;;:::i;:::-;4578:119;4736:1;4761:53;4806:7;4797:6;4786:9;4782:22;4761:53;:::i;:::-;4751:63;;4707:117;4863:2;4889:53;4934:7;4925:6;4914:9;4910:22;4889:53;:::i;:::-;4879:63;;4834:118;4991:2;5017:53;5062:7;5053:6;5042:9;5038:22;5017:53;:::i;:::-;5007:63;;4962:118;4468:619;;;;;:::o;5093:118::-;5180:24;5198:5;5180:24;:::i;:::-;5175:3;5168:37;5093:118;;:::o;5217:222::-;5310:4;5348:2;5337:9;5333:18;5325:26;;5361:71;5429:1;5418:9;5414:17;5405:6;5361:71;:::i;:::-;5217:222;;;;:::o;5445:86::-;5480:7;5520:4;5513:5;5509:16;5498:27;;5445:86;;;:::o;5537:112::-;5620:22;5636:5;5620:22;:::i;:::-;5615:3;5608:35;5537:112;;:::o;5655:214::-;5744:4;5782:2;5771:9;5767:18;5759:26;;5795:67;5859:1;5848:9;5844:17;5835:6;5795:67;:::i;:::-;5655:214;;;;:::o;5875:474::-;5943:6;5951;6000:2;5988:9;5979:7;5975:23;5971:32;5968:119;;;6006:79;;:::i;:::-;5968:119;6126:1;6151:53;6196:7;6187:6;6176:9;6172:22;6151:53;:::i;:::-;6141:63;;6097:117;6253:2;6279:53;6324:7;6315:6;6304:9;6300:22;6279:53;:::i;:::-;6269:63;;6224:118;5875:474;;;;;:::o;6355:::-;6423:6;6431;6480:2;6468:9;6459:7;6455:23;6451:32;6448:119;;;6486:79;;:::i;:::-;6448:119;6606:1;6631:53;6676:7;6667:6;6656:9;6652:22;6631:53;:::i;:::-;6621:63;;6577:117;6733:2;6759:53;6804:7;6795:6;6784:9;6780:22;6759:53;:::i;:::-;6749:63;;6704:118;6355:474;;;;;:::o;6835:182::-;6975:34;6971:1;6963:6;6959:14;6952:58;6835:182;:::o;7023:366::-;7165:3;7186:67;7250:2;7245:3;7186:67;:::i;:::-;7179:74;;7262:93;7351:3;7262:93;:::i;:::-;7380:2;7375:3;7371:12;7364:19;;7023:366;;;:::o;7395:419::-;7561:4;7599:2;7588:9;7584:18;7576:26;;7648:9;7642:4;7638:20;7634:1;7623:9;7619:17;7612:47;7676:131;7802:4;7676:131;:::i;:::-;7668:139;;7395:419;;;:::o;7820:180::-;7868:77;7865:1;7858:88;7965:4;7962:1;7955:15;7989:4;7986:1;7979:15;8006:102;8048:8;8095:5;8092:1;8088:13;8067:34;;8006:102;;;:::o;8114:848::-;8175:5;8182:4;8206:6;8197:15;;8230:5;8221:14;;8244:712;8265:1;8255:8;8252:15;8244:712;;;8360:4;8355:3;8351:14;8345:4;8342:24;8339:50;;;8369:18;;:::i;:::-;8339:50;8419:1;8409:8;8405:16;8402:451;;;8834:4;8827:5;8823:16;8814:25;;8402:451;8884:4;8878;8874:15;8866:23;;8914:32;8937:8;8914:32;:::i;:::-;8902:44;;8244:712;;;8114:848;;;;;;;:::o;8968:1073::-;9022:5;9213:8;9203:40;;9234:1;9225:10;;9236:5;;9203:40;9262:4;9252:36;;9279:1;9270:10;;9281:5;;9252:36;9348:4;9396:1;9391:27;;;;9432:1;9427:191;;;;9341:277;;9391:27;9409:1;9400:10;;9411:5;;;9427:191;9472:3;9462:8;9459:17;9456:43;;;9479:18;;:::i;:::-;9456:43;9528:8;9525:1;9521:16;9512:25;;9563:3;9556:5;9553:14;9550:40;;;9570:18;;:::i;:::-;9550:40;9603:5;;;9341:277;;9727:2;9717:8;9714:16;9708:3;9702:4;9699:13;9695:36;9677:2;9667:8;9664:16;9659:2;9653:4;9650:12;9646:35;9630:111;9627:246;;;9783:8;9777:4;9773:19;9764:28;;9818:3;9811:5;9808:14;9805:40;;;9825:18;;:::i;:::-;9805:40;9858:5;;9627:246;9898:42;9936:3;9926:8;9920:4;9917:1;9898:42;:::i;:::-;9883:57;;;;9972:4;9967:3;9963:14;9956:5;9953:25;9950:51;;;9981:18;;:::i;:::-;9950:51;10030:4;10023:5;10019:16;10010:25;;8968:1073;;;;;;:::o;10047:281::-;10105:5;10129:23;10147:4;10129:23;:::i;:::-;10121:31;;10173:25;10189:8;10173:25;:::i;:::-;10161:37;;10217:104;10254:66;10244:8;10238:4;10217:104;:::i;:::-;10208:113;;10047:281;;;;:::o;10334:410::-;10374:7;10397:20;10415:1;10397:20;:::i;:::-;10392:25;;10431:20;10449:1;10431:20;:::i;:::-;10426:25;;10486:1;10483;10479:9;10508:30;10526:11;10508:30;:::i;:::-;10497:41;;10687:1;10678:7;10674:15;10671:1;10668:22;10648:1;10641:9;10621:83;10598:139;;10717:18;;:::i;:::-;10598:139;10382:362;10334:410;;;;:::o;10750:227::-;10890:34;10886:1;10878:6;10874:14;10867:58;10959:10;10954:2;10946:6;10942:15;10935:35;10750:227;:::o;10983:366::-;11125:3;11146:67;11210:2;11205:3;11146:67;:::i;:::-;11139:74;;11222:93;11311:3;11222:93;:::i;:::-;11340:2;11335:3;11331:12;11324:19;;10983:366;;;:::o;11355:419::-;11521:4;11559:2;11548:9;11544:18;11536:26;;11608:9;11602:4;11598:20;11594:1;11583:9;11579:17;11572:47;11636:131;11762:4;11636:131;:::i;:::-;11628:139;;11355:419;;;:::o;11780:180::-;11828:77;11825:1;11818:88;11925:4;11922:1;11915:15;11949:4;11946:1;11939:15;11966:185;12006:1;12023:20;12041:1;12023:20;:::i;:::-;12018:25;;12057:20;12075:1;12057:20;:::i;:::-;12052:25;;12096:1;12086:35;;12101:18;;:::i;:::-;12086:35;12143:1;12140;12136:9;12131:14;;11966:185;;;;:::o;12157:147::-;12258:11;12295:3;12280:18;;12157:147;;;;:::o;12310:114::-;;:::o;12430:398::-;12589:3;12610:83;12691:1;12686:3;12610:83;:::i;:::-;12603:90;;12702:93;12791:3;12702:93;:::i;:::-;12820:1;12815:3;12811:11;12804:18;;12430:398;;;:::o;12834:379::-;13018:3;13040:147;13183:3;13040:147;:::i;:::-;13033:154;;13204:3;13197:10;;12834:379;;;:::o;13219:191::-;13259:3;13278:20;13296:1;13278:20;:::i;:::-;13273:25;;13312:20;13330:1;13312:20;:::i;:::-;13307:25;;13355:1;13352;13348:9;13341:16;;13376:3;13373:1;13370:10;13367:36;;;13383:18;;:::i;:::-;13367:36;13219:191;;;;:::o;13416:162::-;13556:14;13552:1;13544:6;13540:14;13533:38;13416:162;:::o;13584:366::-;13726:3;13747:67;13811:2;13806:3;13747:67;:::i;:::-;13740:74;;13823:93;13912:3;13823:93;:::i;:::-;13941:2;13936:3;13932:12;13925:19;;13584:366;;;:::o;13956:419::-;14122:4;14160:2;14149:9;14145:18;14137:26;;14209:9;14203:4;14199:20;14195:1;14184:9;14180:17;14173:47;14237:131;14363:4;14237:131;:::i;:::-;14229:139;;13956:419;;;:::o;14381:164::-;14521:16;14517:1;14509:6;14505:14;14498:40;14381:164;:::o;14551:366::-;14693:3;14714:67;14778:2;14773:3;14714:67;:::i;:::-;14707:74;;14790:93;14879:3;14790:93;:::i;:::-;14908:2;14903:3;14899:12;14892:19;;14551:366;;;:::o;14923:419::-;15089:4;15127:2;15116:9;15112:18;15104:26;;15176:9;15170:4;15166:20;15162:1;15151:9;15147:17;15140:47;15204:131;15330:4;15204:131;:::i;:::-;15196:139;;14923:419;;;:::o;15348:223::-;15488:34;15484:1;15476:6;15472:14;15465:58;15557:6;15552:2;15544:6;15540:15;15533:31;15348:223;:::o;15577:366::-;15719:3;15740:67;15804:2;15799:3;15740:67;:::i;:::-;15733:74;;15816:93;15905:3;15816:93;:::i;:::-;15934:2;15929:3;15925:12;15918:19;;15577:366;;;:::o;15949:419::-;16115:4;16153:2;16142:9;16138:18;16130:26;;16202:9;16196:4;16192:20;16188:1;16177:9;16173:17;16166:47;16230:131;16356:4;16230:131;:::i;:::-;16222:139;;15949:419;;;:::o;16374:221::-;16514:34;16510:1;16502:6;16498:14;16491:58;16583:4;16578:2;16570:6;16566:15;16559:29;16374:221;:::o;16601:366::-;16743:3;16764:67;16828:2;16823:3;16764:67;:::i;:::-;16757:74;;16840:93;16929:3;16840:93;:::i;:::-;16958:2;16953:3;16949:12;16942:19;;16601:366;;;:::o;16973:419::-;17139:4;17177:2;17166:9;17162:18;17154:26;;17226:9;17220:4;17216:20;17212:1;17201:9;17197:17;17190:47;17254:131;17380:4;17254:131;:::i;:::-;17246:139;;16973:419;;;:::o;17398:224::-;17538:34;17534:1;17526:6;17522:14;17515:58;17607:7;17602:2;17594:6;17590:15;17583:32;17398:224;:::o;17628:366::-;17770:3;17791:67;17855:2;17850:3;17791:67;:::i;:::-;17784:74;;17867:93;17956:3;17867:93;:::i;:::-;17985:2;17980:3;17976:12;17969:19;;17628:366;;;:::o;18000:419::-;18166:4;18204:2;18193:9;18189:18;18181:26;;18253:9;18247:4;18243:20;18239:1;18228:9;18224:17;18217:47;18281:131;18407:4;18281:131;:::i;:::-;18273:139;;18000:419;;;:::o;18425:178::-;18565:30;18561:1;18553:6;18549:14;18542:54;18425:178;:::o;18609:366::-;18751:3;18772:67;18836:2;18831:3;18772:67;:::i;:::-;18765:74;;18848:93;18937:3;18848:93;:::i;:::-;18966:2;18961:3;18957:12;18950:19;;18609:366;;;:::o;18981:419::-;19147:4;19185:2;19174:9;19170:18;19162:26;;19234:9;19228:4;19224:20;19220:1;19209:9;19205:17;19198:47;19262:131;19388:4;19262:131;:::i;:::-;19254:139;;18981:419;;;:::o;19406:166::-;19546:18;19542:1;19534:6;19530:14;19523:42;19406:166;:::o;19578:366::-;19720:3;19741:67;19805:2;19800:3;19741:67;:::i;:::-;19734:74;;19817:93;19906:3;19817:93;:::i;:::-;19935:2;19930:3;19926:12;19919:19;;19578:366;;;:::o;19950:419::-;20116:4;20154:2;20143:9;20139:18;20131:26;;20203:9;20197:4;20193:20;20189:1;20178:9;20174:17;20167:47;20231:131;20357:4;20231:131;:::i;:::-;20223:139;;19950:419;;;:::o;20375:172::-;20515:24;20511:1;20503:6;20499:14;20492:48;20375:172;:::o;20553:366::-;20695:3;20716:67;20780:2;20775:3;20716:67;:::i;:::-;20709:74;;20792:93;20881:3;20792:93;:::i;:::-;20910:2;20905:3;20901:12;20894:19;;20553:366;;;:::o;20925:419::-;21091:4;21129:2;21118:9;21114:18;21106:26;;21178:9;21172:4;21168:20;21164:1;21153:9;21149:17;21142:47;21206:131;21332:4;21206:131;:::i;:::-;21198:139;;20925:419;;;:::o;21350:173::-;21490:25;21486:1;21478:6;21474:14;21467:49;21350:173;:::o;21529:366::-;21671:3;21692:67;21756:2;21751:3;21692:67;:::i;:::-;21685:74;;21768:93;21857:3;21768:93;:::i;:::-;21886:2;21881:3;21877:12;21870:19;;21529:366;;;:::o;21901:419::-;22067:4;22105:2;22094:9;22090:18;22082:26;;22154:9;22148:4;22144:20;22140:1;22129:9;22125:17;22118:47;22182:131;22308:4;22182:131;:::i;:::-;22174:139;;21901:419;;;:::o;22326:180::-;22374:77;22371:1;22364:88;22471:4;22468:1;22461:15;22495:4;22492:1;22485:15;22512:180;22560:77;22557:1;22550:88;22657:4;22654:1;22647:15;22681:4;22678:1;22671:15;22698:143;22755:5;22786:6;22780:13;22771:22;;22802:33;22829:5;22802:33;:::i;:::-;22698:143;;;;:::o;22847:351::-;22917:6;22966:2;22954:9;22945:7;22941:23;22937:32;22934:119;;;22972:79;;:::i;:::-;22934:119;23092:1;23117:64;23173:7;23164:6;23153:9;23149:22;23117:64;:::i;:::-;23107:74;;23063:128;22847:351;;;;:::o;23204:85::-;23249:7;23278:5;23267:16;;23204:85;;;:::o;23295:60::-;23323:3;23344:5;23337:12;;23295:60;;;:::o;23361:158::-;23419:9;23452:61;23470:42;23479:32;23505:5;23479:32;:::i;:::-;23470:42;:::i;:::-;23452:61;:::i;:::-;23439:74;;23361:158;;;:::o;23525:147::-;23620:45;23659:5;23620:45;:::i;:::-;23615:3;23608:58;23525:147;;:::o;23678:114::-;23745:6;23779:5;23773:12;23763:22;;23678:114;;;:::o;23798:184::-;23897:11;23931:6;23926:3;23919:19;23971:4;23966:3;23962:14;23947:29;;23798:184;;;;:::o;23988:132::-;24055:4;24078:3;24070:11;;24108:4;24103:3;24099:14;24091:22;;23988:132;;;:::o;24126:108::-;24203:24;24221:5;24203:24;:::i;:::-;24198:3;24191:37;24126:108;;:::o;24240:179::-;24309:10;24330:46;24372:3;24364:6;24330:46;:::i;:::-;24408:4;24403:3;24399:14;24385:28;;24240:179;;;;:::o;24425:113::-;24495:4;24527;24522:3;24518:14;24510:22;;24425:113;;;:::o;24574:732::-;24693:3;24722:54;24770:5;24722:54;:::i;:::-;24792:86;24871:6;24866:3;24792:86;:::i;:::-;24785:93;;24902:56;24952:5;24902:56;:::i;:::-;24981:7;25012:1;24997:284;25022:6;25019:1;25016:13;24997:284;;;25098:6;25092:13;25125:63;25184:3;25169:13;25125:63;:::i;:::-;25118:70;;25211:60;25264:6;25211:60;:::i;:::-;25201:70;;25057:224;25044:1;25041;25037:9;25032:14;;24997:284;;;25001:14;25297:3;25290:10;;24698:608;;;24574:732;;;;:::o;25312:831::-;25575:4;25613:3;25602:9;25598:19;25590:27;;25627:71;25695:1;25684:9;25680:17;25671:6;25627:71;:::i;:::-;25708:80;25784:2;25773:9;25769:18;25760:6;25708:80;:::i;:::-;25835:9;25829:4;25825:20;25820:2;25809:9;25805:18;25798:48;25863:108;25966:4;25957:6;25863:108;:::i;:::-;25855:116;;25981:72;26049:2;26038:9;26034:18;26025:6;25981:72;:::i;:::-;26063:73;26131:3;26120:9;26116:19;26107:6;26063:73;:::i;:::-;25312:831;;;;;;;;:::o;26149:225::-;26289:34;26285:1;26277:6;26273:14;26266:58;26358:8;26353:2;26345:6;26341:15;26334:33;26149:225;:::o;26380:366::-;26522:3;26543:67;26607:2;26602:3;26543:67;:::i;:::-;26536:74;;26619:93;26708:3;26619:93;:::i;:::-;26737:2;26732:3;26728:12;26721:19;;26380:366;;;:::o;26752:419::-;26918:4;26956:2;26945:9;26941:18;26933:26;;27005:9;26999:4;26995:20;26991:1;26980:9;26976:17;26969:47;27033:131;27159:4;27033:131;:::i;:::-;27025:139;;26752:419;;;:::o;27177:194::-;27217:4;27237:20;27255:1;27237:20;:::i;:::-;27232:25;;27271:20;27289:1;27271:20;:::i;:::-;27266:25;;27315:1;27312;27308:9;27300:17;;27339:1;27333:4;27330:11;27327:37;;;27344:18;;:::i;:::-;27327:37;27177:194;;;;:::o

Swarm Source

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