ETH Price: $2,418.16 (+0.29%)

Token

Ernest (Chad)
 

Overview

Max Total Supply

100,000,000 Chad

Holders

33

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.65244816977426969 Chad

Value
$0.00
0x86E98BcC0D57fD487964ba38075D0AcDdE1472d8
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:
Ernest

Compiler Version
v0.8.20+commit.a1b79de6

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-24
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function tryAdd(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(
        uint256 a,
        uint256 b
    ) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

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

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

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

    function balanceOf(address account) external view returns (uint256);

    function transfer(
        address recipient,
        uint256 amount
    ) external returns (bool);

    function allowance(
        address _owner,
        address spender
    ) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

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

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

    function transferOwnership(address payable adr) internal onlyOwner {
        owner = adr;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

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

    function getPair(
        address tokenA,
        address tokenB
    ) external view returns (address pair);
}

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    )
        external
        payable
        returns (uint amountToken, uint amountETH, uint liquidity);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint amountA, uint amountB);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

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

contract Ernest is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = "Ernest";
    string private constant _symbol = "Chad";
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 100000000 * (10 ** _decimals);
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) public isFeeExempt;
    mapping(address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 100;
    uint256 private marketingFee = 200;
    uint256 private developmentFee = 100;
    uint256 private totalFee = 1500;
    uint256 private sellFee = 1500;
    uint256 private transferFee = 1500;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 4;
    uint256 private swapThreshold = _totalSupply / 100000;
    uint256 private minTokenAmount = _totalSupply / 1000000;
    modifier lockTheSwap() {
        swapping = true;
        _;
        swapping = false;
    }

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver =
        0x15Ce3d3a13290816522dd49d70b260720bE29950;
    address internal constant marketing_receiver =
        0xA87e6ce4A3b5Cc16DA171578ACC793781bB5Bb7b;
    address internal constant liquidity_receiver =
        0x1733f84658E8C140Fa2C2548ece486cC4830e711;

    constructor() Ownable(msg.sender) {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable {}

    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 startTrading() external onlyOwner {
        tradingAllowed = true;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

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

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

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

    function isCont(address addr) internal view returns (bool) {
        uint size;
        assembly {
            size := extcodesize(addr)
        }
        return size > 0;
    }

    function setisBot(address _address, bool _enabled) external onlyOwner {
        isBot[_address] = _enabled;
    }

    function setisExempt(address _address, bool _enabled) external onlyOwner {
        isFeeExempt[_address] = _enabled;
    }

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));
    }

    function preTxCheck(
        address sender,
        address recipient,
        uint256 amount
    ) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            amount > uint256(0),
            "Transfer amount must be greater than zero"
        );
        require(
            amount <= balanceOf(sender),
            "You are trying to transfer more than your balance"
        );
    }

    function renounceOwnership() public onlyOwner {
        totalFee = 500;
        sellFee = 500;
        emit OwnershipTransferred(address(0));
        owner = address(0);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        swapbackCounters(recipient);
        swapBack(sender, recipient, amount);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient)
            ? takeFee(sender, recipient, amount)
            : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

    function checkTradingAllowed(
        address sender,
        address recipient
    ) internal view {
        if (!isFeeExempt[sender] && !isFeeExempt[recipient]) {
            require(tradingAllowed, "tradingAllowed");
        }
    }

    function swapbackCounters(address recipient) internal {
        if (recipient == pair) {
            swapTimes += uint256(1);
        }
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (
            liquidityFee.add(1).add(marketingFee).add(developmentFee)
        ).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(
            _denominator
        );
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance = deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if (ETHToAddLiquidityWith > uint256(0)) {
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
        }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if (marketingAmt > 0) {
            payable(marketing_receiver).transfer(marketingAmt);
        }
        uint256 remainingBalance = address(this).balance;
        if (remainingBalance > uint256(0)) {
            payable(development_receiver).transfer(remainingBalance);
        }
    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp
        );
    }

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

    function shouldSwapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal view returns (bool) {
        bool aboveMin = amount >= minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return
            !swapping &&
            swapEnabled &&
            tradingAllowed &&
            aboveMin &&
            !isFeeExempt[sender] &&
            recipient == pair &&
            swapTimes >= swapAmount &&
            aboveThreshold;
    }

    function swapBack(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        if (shouldSwapBack(sender, recipient, amount)) {
            swapAndLiquify(swapThreshold);
            swapTimes = uint256(0);
        }
    }

    function shouldTakeFee(
        address sender,
        address recipient
    ) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

    function getTotalFee(
        address sender,
        address recipient
    ) internal view returns (uint256) {
        if (isBot[sender] || isBot[recipient]) {
            return denominator.sub(uint256(100));
        }
        if (recipient == pair) {
            return sellFee;
        }
        if (sender == pair) {
            return totalFee;
        }
        return transferFee;
    }

    function takeFee(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (uint256) {
        if (getTotalFee(sender, recipient) > 0) {
            uint256 feeAmount = amount.div(denominator).mul(
                getTotalFee(sender, recipient)
            );
            _balances[address(this)] = _balances[address(this)].add(feeAmount);
            emit Transfer(sender, address(this), feeAmount);
            return amount.sub(feeAmount);
        }
        return amount;
    }

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620006be565b6305f5e1006200002591906200070e565b6001555f600760146101000a81548160ff021916908315150217905550606460085560c86009556064600a556105dc600b556105dc600c556105dc600d55612710600e556001600f5f6101000a81548160ff0219169083151502179055506004601255620186a06001546200009b919062000785565b601355620f4240600154620000b1919062000785565b601455348015620000c0575f80fd5b5033805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000165573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200018b919062000821565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001f1573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000217919062000821565b6040518363ffffffff1660e01b81526004016200023692919062000862565b6020604051808303815f875af115801562000253573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000279919062000821565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f731733f84658e8c140fa2c2548ece486cc4830e71173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73a87e6ce4a3b5cc16da171578acc793781bb5bb7b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060015460025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516200051c91906200089e565b60405180910390a35050620008b9565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005b6578086048111156200058e576200058d6200052c565b5b60018516156200059e5780820291505b8081029050620005ae8562000559565b94506200056e565b94509492505050565b5f82620005d05760019050620006a2565b81620005df575f9050620006a2565b8160018114620005f85760028114620006035762000639565b6001915050620006a2565b60ff8411156200061857620006176200052c565b5b8360020a9150848211156200063257620006316200052c565b5b50620006a2565b5060208310610133831016604e8410600b8410161715620006735782820a9050838111156200066d576200066c6200052c565b5b620006a2565b62000682848484600162000565565b925090508184048111156200069c576200069b6200052c565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006ca82620006a9565b9150620006d783620006b2565b9250620007067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005bf565b905092915050565b5f6200071a82620006a9565b91506200072783620006a9565b92508282026200073781620006a9565b915082820484148315176200075157620007506200052c565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6200079182620006a9565b91506200079e83620006a9565b925082620007b157620007b062000758565b5b828204905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620007eb82620007c0565b9050919050565b620007fd81620007df565b811462000808575f80fd5b50565b5f815190506200081b81620007f2565b92915050565b5f60208284031215620008395762000838620007bc565b5b5f62000848848285016200080b565b91505092915050565b6200085c81620007df565b82525050565b5f604082019050620008775f83018562000851565b62000886602083018462000851565b9392505050565b6200089881620006a9565b82525050565b5f602082019050620008b35f8301846200088d565b92915050565b6126a580620008c75f395ff3fe6080604052600436106100f6575f3560e01c806370a082311161008957806395d89b411161005857806395d89b4114610315578063a8aa1b311461033f578063a9059cbb14610369578063dd62ed3e146103a5576100fd565b806370a0823114610271578063715018a6146102ad578063893d20e8146102c35780638c41180e146102ed576100fd565b8063293230b8116100c5578063293230b8146101cd578063313ce567146101e35780633f4218e01461020d57806348ff2b8b14610249576100fd565b806306fdde0314610101578063095ea7b31461012b57806318160ddd1461016757806323b872dd14610191576100fd565b366100fd57005b5f80fd5b34801561010c575f80fd5b506101156103e1565b6040516101229190611b7e565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c9190611c2f565b61041e565b60405161015e9190611c87565b60405180910390f35b348015610172575f80fd5b5061017b610434565b6040516101889190611caf565b60405180910390f35b34801561019c575f80fd5b506101b760048036038101906101b29190611cc8565b610473565b6040516101c49190611c87565b60405180910390f35b3480156101d8575f80fd5b506101e1610539565b005b3480156101ee575f80fd5b506101f761059e565b6040516102049190611d33565b60405180910390f35b348015610218575f80fd5b50610233600480360381019061022e9190611d4c565b6105a6565b6040516102409190611c87565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a9190611da1565b6105c3565b005b34801561027c575f80fd5b5061029760048036038101906102929190611d4c565b610663565b6040516102a49190611caf565b60405180910390f35b3480156102b8575f80fd5b506102c16106a9565b005b3480156102ce575f80fd5b506102d761077b565b6040516102e49190611dee565b60405180910390f35b3480156102f8575f80fd5b50610313600480360381019061030e9190611da1565b6107a2565b005b348015610320575f80fd5b50610329610842565b6040516103369190611b7e565b60405180910390f35b34801561034a575f80fd5b5061035361087f565b6040516103609190611dee565b60405180910390f35b348015610374575f80fd5b5061038f600480360381019061038a9190611c2f565b6108a4565b60405161039c9190611c87565b60405180910390f35b3480156103b0575f80fd5b506103cb60048036038101906103c69190611e07565b6108ba565b6040516103d89190611caf565b60405180910390f35b60606040518060400160405280600681526020017f45726e6573740000000000000000000000000000000000000000000000000000815250905090565b5f61042a33848461093c565b6001905092915050565b5f61046e6104415f610663565b61046061044f61dead610663565b600154610aff90919063ffffffff16565b610aff90919063ffffffff16565b905090565b5f61047f848484610b14565b61052e8433610529856040518060600160405280602881526020016126486028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ced9092919063ffffffff16565b61093c565b600190509392505050565b61054233610d41565b610581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057890611e8f565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b5f6012905090565b6004602052805f5260405f205f915054906101000a900460ff1681565b6105cc33610d41565b61060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060290611e8f565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106b233610d41565b6106f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e890611e8f565b60405180910390fd5b6101f4600b819055506101f4600c819055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516107329190611dee565b60405180910390a15f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107ab33610d41565b6107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190611e8f565b60405180910390fd5b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600481526020017f4368616400000000000000000000000000000000000000000000000000000000815250905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6108b0338484610b14565b6001905092915050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a190611f1d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f90611fab565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610af29190611caf565b60405180910390a3505050565b5f8183610b0c9190611ff6565b905092915050565b610b1f838383610d98565b610b298383610f06565b610b3282610ffd565b610b3d83838361106e565b610b8d8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610aff90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f610bd98484611096565b610be35781610bef565b610bee84848461113d565b5b9050610c418160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461129e90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cdf9190611caf565b60405180910390a350505050565b5f838311158290610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b9190611b7e565b60405180910390fd5b5082840390509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90612099565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b90612127565b60405180910390fd5b5f8111610eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ead906121b5565b60405180910390fd5b610ebf83610663565b811115610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef890612243565b60405180910390fd5b505050565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610fa4575060045f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610ff957600760149054906101000a900460ff16610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef906122ab565b60405180910390fd5b5b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361106b57600160105f82825461106391906122c9565b925050819055505b50565b6110798383836112b3565b15611091576110896013546113e5565b5f6010819055505b505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611135575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f806111498585611621565b1115611293575f61118061115d8686611621565b611172600e54866117a790919063ffffffff16565b6117bc90919063ffffffff16565b90506111d28160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461129e90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112709190611caf565b60405180910390a361128b8184610aff90919063ffffffff16565b915050611297565b8190505b9392505050565b5f81836112ab91906122c9565b905092915050565b5f8060145483101590505f6013546112ca30610663565b1015905060115f9054906101000a900460ff161580156112f55750600f5f9054906101000a900460ff165b801561130d5750600760149054906101000a900460ff165b80156113165750815b8015611369575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113c1575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156113d1575060125460105410155b80156113da5750805b925050509392505050565b600160115f6101000a81548160ff0219169083151502179055505f6114516002611443600a54611435600954611427600160085461129e90919063ffffffff16565b61129e90919063ffffffff16565b61129e90919063ffffffff16565b6117bc90919063ffffffff16565b90505f61147b8261146d600854866117bc90919063ffffffff16565b6117a790919063ffffffff16565b90505f6114918285610aff90919063ffffffff16565b90505f4790506114a0826117d1565b5f6114b48247610aff90919063ffffffff16565b90505f6114de6114cf60085488610aff90919063ffffffff16565b836117a790919063ffffffff16565b90505f6114f6600854836117bc90919063ffffffff16565b90505f81111561150b5761150a8682611a07565b5b5f6115346009546115266002866117bc90919063ffffffff16565b6117bc90919063ffffffff16565b90505f8111156115975773a87e6ce4a3b5cc16da171578acc793781bb5bb7b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611595573d5f803e3d5ffd5b505b5f4790505f8111156115fc577315ce3d3a13290816522dd49d70b260720be2995073ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156115fa573d5f803e3d5ffd5b505b5050505050505050505f60115f6101000a81548160ff02191690831515021790555050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116bd575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156116df576116d86064600e54610aff90919063ffffffff16565b90506117a1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361173d57600c5490506117a1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361179b57600b5490506117a1565b600d5490505b92915050565b5f81836117b49190612329565b905092915050565b5f81836117c99190612359565b905092915050565b5f600267ffffffffffffffff8111156117ed576117ec61239a565b5b60405190808252806020026020018201604052801561181b5781602001602082028036833780820191505090505b50905030815f81518110611832576118316123c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fa9190612408565b8160018151811061190e5761190d6123c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119743060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461093c565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016119d695949392919061252c565b5f604051808303815f87803b1580156119ed575f80fd5b505af11580156119ff573d5f803e3d5ffd5b505050505050565b611a333060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461093c565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80731733f84658e8c140fa2c2548ece486cc4830e711426040518863ffffffff1660e01b8152600401611aac96959493929190612584565b60606040518083038185885af1158015611ac8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611aed91906125f7565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611b2b578082015181840152602081019050611b10565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611b5082611af4565b611b5a8185611afe565b9350611b6a818560208601611b0e565b611b7381611b36565b840191505092915050565b5f6020820190508181035f830152611b968184611b46565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611bcb82611ba2565b9050919050565b611bdb81611bc1565b8114611be5575f80fd5b50565b5f81359050611bf681611bd2565b92915050565b5f819050919050565b611c0e81611bfc565b8114611c18575f80fd5b50565b5f81359050611c2981611c05565b92915050565b5f8060408385031215611c4557611c44611b9e565b5b5f611c5285828601611be8565b9250506020611c6385828601611c1b565b9150509250929050565b5f8115159050919050565b611c8181611c6d565b82525050565b5f602082019050611c9a5f830184611c78565b92915050565b611ca981611bfc565b82525050565b5f602082019050611cc25f830184611ca0565b92915050565b5f805f60608486031215611cdf57611cde611b9e565b5b5f611cec86828701611be8565b9350506020611cfd86828701611be8565b9250506040611d0e86828701611c1b565b9150509250925092565b5f60ff82169050919050565b611d2d81611d18565b82525050565b5f602082019050611d465f830184611d24565b92915050565b5f60208284031215611d6157611d60611b9e565b5b5f611d6e84828501611be8565b91505092915050565b611d8081611c6d565b8114611d8a575f80fd5b50565b5f81359050611d9b81611d77565b92915050565b5f8060408385031215611db757611db6611b9e565b5b5f611dc485828601611be8565b9250506020611dd585828601611d8d565b9150509250929050565b611de881611bc1565b82525050565b5f602082019050611e015f830184611ddf565b92915050565b5f8060408385031215611e1d57611e1c611b9e565b5b5f611e2a85828601611be8565b9250506020611e3b85828601611be8565b9150509250929050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f611e79600683611afe565b9150611e8482611e45565b602082019050919050565b5f6020820190508181035f830152611ea681611e6d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611f07602483611afe565b9150611f1282611ead565b604082019050919050565b5f6020820190508181035f830152611f3481611efb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611f95602283611afe565b9150611fa082611f3b565b604082019050919050565b5f6020820190508181035f830152611fc281611f89565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61200082611bfc565b915061200b83611bfc565b925082820390508181111561202357612022611fc9565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612083602583611afe565b915061208e82612029565b604082019050919050565b5f6020820190508181035f8301526120b081612077565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612111602383611afe565b915061211c826120b7565b604082019050919050565b5f6020820190508181035f83015261213e81612105565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61219f602983611afe565b91506121aa82612145565b604082019050919050565b5f6020820190508181035f8301526121cc81612193565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f61222d603183611afe565b9150612238826121d3565b604082019050919050565b5f6020820190508181035f83015261225a81612221565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f612295600e83611afe565b91506122a082612261565b602082019050919050565b5f6020820190508181035f8301526122c281612289565b9050919050565b5f6122d382611bfc565b91506122de83611bfc565b92508282019050808211156122f6576122f5611fc9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61233382611bfc565b915061233e83611bfc565b92508261234e5761234d6122fc565b5b828204905092915050565b5f61236382611bfc565b915061236e83611bfc565b925082820261237c81611bfc565b9150828204841483151761239357612392611fc9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061240281611bd2565b92915050565b5f6020828403121561241d5761241c611b9e565b5b5f61242a848285016123f4565b91505092915050565b5f819050919050565b5f819050919050565b5f61245f61245a61245584612433565b61243c565b611bfc565b9050919050565b61246f81612445565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6124a781611bc1565b82525050565b5f6124b8838361249e565b60208301905092915050565b5f602082019050919050565b5f6124da82612475565b6124e4818561247f565b93506124ef8361248f565b805f5b8381101561251f57815161250688826124ad565b9750612511836124c4565b9250506001810190506124f2565b5085935050505092915050565b5f60a08201905061253f5f830188611ca0565b61254c6020830187612466565b818103604083015261255e81866124d0565b905061256d6060830185611ddf565b61257a6080830184611ca0565b9695505050505050565b5f60c0820190506125975f830189611ddf565b6125a46020830188611ca0565b6125b16040830187612466565b6125be6060830186612466565b6125cb6080830185611ddf565b6125d860a0830184611ca0565b979650505050505050565b5f815190506125f181611c05565b92915050565b5f805f6060848603121561260e5761260d611b9e565b5b5f61261b868287016125e3565b935050602061262c868287016125e3565b925050604061263d868287016125e3565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220124b33b210b8cace565e3ef777d7542d1e9f1bd5a6841a08937b6ddbcc22a79d64736f6c63430008140033

Deployed Bytecode

0x6080604052600436106100f6575f3560e01c806370a082311161008957806395d89b411161005857806395d89b4114610315578063a8aa1b311461033f578063a9059cbb14610369578063dd62ed3e146103a5576100fd565b806370a0823114610271578063715018a6146102ad578063893d20e8146102c35780638c41180e146102ed576100fd565b8063293230b8116100c5578063293230b8146101cd578063313ce567146101e35780633f4218e01461020d57806348ff2b8b14610249576100fd565b806306fdde0314610101578063095ea7b31461012b57806318160ddd1461016757806323b872dd14610191576100fd565b366100fd57005b5f80fd5b34801561010c575f80fd5b506101156103e1565b6040516101229190611b7e565b60405180910390f35b348015610136575f80fd5b50610151600480360381019061014c9190611c2f565b61041e565b60405161015e9190611c87565b60405180910390f35b348015610172575f80fd5b5061017b610434565b6040516101889190611caf565b60405180910390f35b34801561019c575f80fd5b506101b760048036038101906101b29190611cc8565b610473565b6040516101c49190611c87565b60405180910390f35b3480156101d8575f80fd5b506101e1610539565b005b3480156101ee575f80fd5b506101f761059e565b6040516102049190611d33565b60405180910390f35b348015610218575f80fd5b50610233600480360381019061022e9190611d4c565b6105a6565b6040516102409190611c87565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a9190611da1565b6105c3565b005b34801561027c575f80fd5b5061029760048036038101906102929190611d4c565b610663565b6040516102a49190611caf565b60405180910390f35b3480156102b8575f80fd5b506102c16106a9565b005b3480156102ce575f80fd5b506102d761077b565b6040516102e49190611dee565b60405180910390f35b3480156102f8575f80fd5b50610313600480360381019061030e9190611da1565b6107a2565b005b348015610320575f80fd5b50610329610842565b6040516103369190611b7e565b60405180910390f35b34801561034a575f80fd5b5061035361087f565b6040516103609190611dee565b60405180910390f35b348015610374575f80fd5b5061038f600480360381019061038a9190611c2f565b6108a4565b60405161039c9190611c87565b60405180910390f35b3480156103b0575f80fd5b506103cb60048036038101906103c69190611e07565b6108ba565b6040516103d89190611caf565b60405180910390f35b60606040518060400160405280600681526020017f45726e6573740000000000000000000000000000000000000000000000000000815250905090565b5f61042a33848461093c565b6001905092915050565b5f61046e6104415f610663565b61046061044f61dead610663565b600154610aff90919063ffffffff16565b610aff90919063ffffffff16565b905090565b5f61047f848484610b14565b61052e8433610529856040518060600160405280602881526020016126486028913960035f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610ced9092919063ffffffff16565b61093c565b600190509392505050565b61054233610d41565b610581576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161057890611e8f565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b5f6012905090565b6004602052805f5260405f205f915054906101000a900460ff1681565b6105cc33610d41565b61060b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161060290611e8f565b60405180910390fd5b8060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106b233610d41565b6106f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e890611e8f565b60405180910390fd5b6101f4600b819055506101f4600c819055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861635f6040516107329190611dee565b60405180910390a15f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107ab33610d41565b6107ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e190611e8f565b60405180910390fd5b8060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600481526020017f4368616400000000000000000000000000000000000000000000000000000000815250905090565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6108b0338484610b14565b6001905092915050565b5f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036109aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a190611f1d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a18576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0f90611fab565b60405180910390fd5b8060035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610af29190611caf565b60405180910390a3505050565b5f8183610b0c9190611ff6565b905092915050565b610b1f838383610d98565b610b298383610f06565b610b3282610ffd565b610b3d83838361106e565b610b8d8160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610aff90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f610bd98484611096565b610be35781610bef565b610bee84848461113d565b5b9050610c418160025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461129e90919063ffffffff16565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610cdf9190611caf565b60405180910390a350505050565b5f838311158290610d34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d2b9190611b7e565b60405180910390fd5b5082840390509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd90612099565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b90612127565b60405180910390fd5b5f8111610eb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ead906121b5565b60405180910390fd5b610ebf83610663565b811115610f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef890612243565b60405180910390fd5b505050565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015610fa4575060045f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15610ff957600760149054906101000a900460ff16610ff8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fef906122ab565b60405180910390fd5b5b5050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361106b57600160105f82825461106391906122c9565b925050819055505b50565b6110798383836112b3565b15611091576110896013546113e5565b5f6010819055505b505050565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611135575060045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b905092915050565b5f806111498585611621565b1115611293575f61118061115d8686611621565b611172600e54866117a790919063ffffffff16565b6117bc90919063ffffffff16565b90506111d28160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461129e90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112709190611caf565b60405180910390a361128b8184610aff90919063ffffffff16565b915050611297565b8190505b9392505050565b5f81836112ab91906122c9565b905092915050565b5f8060145483101590505f6013546112ca30610663565b1015905060115f9054906101000a900460ff161580156112f55750600f5f9054906101000a900460ff165b801561130d5750600760149054906101000a900460ff165b80156113165750815b8015611369575060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156113c1575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156113d1575060125460105410155b80156113da5750805b925050509392505050565b600160115f6101000a81548160ff0219169083151502179055505f6114516002611443600a54611435600954611427600160085461129e90919063ffffffff16565b61129e90919063ffffffff16565b61129e90919063ffffffff16565b6117bc90919063ffffffff16565b90505f61147b8261146d600854866117bc90919063ffffffff16565b6117a790919063ffffffff16565b90505f6114918285610aff90919063ffffffff16565b90505f4790506114a0826117d1565b5f6114b48247610aff90919063ffffffff16565b90505f6114de6114cf60085488610aff90919063ffffffff16565b836117a790919063ffffffff16565b90505f6114f6600854836117bc90919063ffffffff16565b90505f81111561150b5761150a8682611a07565b5b5f6115346009546115266002866117bc90919063ffffffff16565b6117bc90919063ffffffff16565b90505f8111156115975773a87e6ce4a3b5cc16da171578acc793781bb5bb7b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611595573d5f803e3d5ffd5b505b5f4790505f8111156115fc577315ce3d3a13290816522dd49d70b260720be2995073ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156115fa573d5f803e3d5ffd5b505b5050505050505050505f60115f6101000a81548160ff02191690831515021790555050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806116bd575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156116df576116d86064600e54610aff90919063ffffffff16565b90506117a1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361173d57600c5490506117a1565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361179b57600b5490506117a1565b600d5490505b92915050565b5f81836117b49190612329565b905092915050565b5f81836117c99190612359565b905092915050565b5f600267ffffffffffffffff8111156117ed576117ec61239a565b5b60405190808252806020026020018201604052801561181b5781602001602082028036833780820191505090505b50905030815f81518110611832576118316123c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156118d6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118fa9190612408565b8160018151811061190e5761190d6123c7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506119743060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461093c565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016119d695949392919061252c565b5f604051808303815f87803b1580156119ed575f80fd5b505af11580156119ff573d5f803e3d5ffd5b505050505050565b611a333060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461093c565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7198230855f80731733f84658e8c140fa2c2548ece486cc4830e711426040518863ffffffff1660e01b8152600401611aac96959493929190612584565b60606040518083038185885af1158015611ac8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611aed91906125f7565b5050505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611b2b578082015181840152602081019050611b10565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611b5082611af4565b611b5a8185611afe565b9350611b6a818560208601611b0e565b611b7381611b36565b840191505092915050565b5f6020820190508181035f830152611b968184611b46565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611bcb82611ba2565b9050919050565b611bdb81611bc1565b8114611be5575f80fd5b50565b5f81359050611bf681611bd2565b92915050565b5f819050919050565b611c0e81611bfc565b8114611c18575f80fd5b50565b5f81359050611c2981611c05565b92915050565b5f8060408385031215611c4557611c44611b9e565b5b5f611c5285828601611be8565b9250506020611c6385828601611c1b565b9150509250929050565b5f8115159050919050565b611c8181611c6d565b82525050565b5f602082019050611c9a5f830184611c78565b92915050565b611ca981611bfc565b82525050565b5f602082019050611cc25f830184611ca0565b92915050565b5f805f60608486031215611cdf57611cde611b9e565b5b5f611cec86828701611be8565b9350506020611cfd86828701611be8565b9250506040611d0e86828701611c1b565b9150509250925092565b5f60ff82169050919050565b611d2d81611d18565b82525050565b5f602082019050611d465f830184611d24565b92915050565b5f60208284031215611d6157611d60611b9e565b5b5f611d6e84828501611be8565b91505092915050565b611d8081611c6d565b8114611d8a575f80fd5b50565b5f81359050611d9b81611d77565b92915050565b5f8060408385031215611db757611db6611b9e565b5b5f611dc485828601611be8565b9250506020611dd585828601611d8d565b9150509250929050565b611de881611bc1565b82525050565b5f602082019050611e015f830184611ddf565b92915050565b5f8060408385031215611e1d57611e1c611b9e565b5b5f611e2a85828601611be8565b9250506020611e3b85828601611be8565b9150509250929050565b7f214f574e455200000000000000000000000000000000000000000000000000005f82015250565b5f611e79600683611afe565b9150611e8482611e45565b602082019050919050565b5f6020820190508181035f830152611ea681611e6d565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f611f07602483611afe565b9150611f1282611ead565b604082019050919050565b5f6020820190508181035f830152611f3481611efb565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f611f95602283611afe565b9150611fa082611f3b565b604082019050919050565b5f6020820190508181035f830152611fc281611f89565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61200082611bfc565b915061200b83611bfc565b925082820390508181111561202357612022611fc9565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f612083602583611afe565b915061208e82612029565b604082019050919050565b5f6020820190508181035f8301526120b081612077565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f612111602383611afe565b915061211c826120b7565b604082019050919050565b5f6020820190508181035f83015261213e81612105565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f61219f602983611afe565b91506121aa82612145565b604082019050919050565b5f6020820190508181035f8301526121cc81612193565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f7265205f8201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b5f61222d603183611afe565b9150612238826121d3565b604082019050919050565b5f6020820190508181035f83015261225a81612221565b9050919050565b7f74726164696e67416c6c6f7765640000000000000000000000000000000000005f82015250565b5f612295600e83611afe565b91506122a082612261565b602082019050919050565b5f6020820190508181035f8301526122c281612289565b9050919050565b5f6122d382611bfc565b91506122de83611bfc565b92508282019050808211156122f6576122f5611fc9565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61233382611bfc565b915061233e83611bfc565b92508261234e5761234d6122fc565b5b828204905092915050565b5f61236382611bfc565b915061236e83611bfc565b925082820261237c81611bfc565b9150828204841483151761239357612392611fc9565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061240281611bd2565b92915050565b5f6020828403121561241d5761241c611b9e565b5b5f61242a848285016123f4565b91505092915050565b5f819050919050565b5f819050919050565b5f61245f61245a61245584612433565b61243c565b611bfc565b9050919050565b61246f81612445565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6124a781611bc1565b82525050565b5f6124b8838361249e565b60208301905092915050565b5f602082019050919050565b5f6124da82612475565b6124e4818561247f565b93506124ef8361248f565b805f5b8381101561251f57815161250688826124ad565b9750612511836124c4565b9250506001810190506124f2565b5085935050505092915050565b5f60a08201905061253f5f830188611ca0565b61254c6020830187612466565b818103604083015261255e81866124d0565b905061256d6060830185611ddf565b61257a6080830184611ca0565b9695505050505050565b5f60c0820190506125975f830189611ddf565b6125a46020830188611ca0565b6125b16040830187612466565b6125be6060830186612466565b6125cb6080830185611ddf565b6125d860a0830184611ca0565b979650505050505050565b5f815190506125f181611c05565b92915050565b5f805f6060848603121561260e5761260d611b9e565b5b5f61261b868287016125e3565b935050602061262c868287016125e3565b925050604061263d868287016125e3565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220124b33b210b8cace565e3ef777d7542d1e9f1bd5a6841a08937b6ddbcc22a79d64736f6c63430008140033

Deployed Bytecode Sourcemap

5660:10589:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7921:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9336:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9528:148;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15461:442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8198:83;;;;;;;;;;;;;:::i;:::-;;8107;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6058:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9204:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8389:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10240:180;;;;;;;;;;;;;:::i;:::-;;8289:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9081:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8012:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6174:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8516:190;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8714:168;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7921:83;7958:13;7991:5;;;;;;;;;;;;;;;;;7984:12;;7921:83;:::o;9336:184::-;9436:4;9453:37;9462:10;9474:7;9483:6;9453:8;:37::i;:::-;9508:4;9501:11;;9336:184;;;;:::o;9528:148::-;9581:7;9608:60;9646:21;9664:1;9646:9;:21::i;:::-;9608:33;9625:15;6911:42;9625:9;:15::i;:::-;9608:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;9601:67;;9528:148;:::o;15461:442::-;15593:4;15610:36;15620:6;15628:9;15639:6;15610:9;:36::i;:::-;15657:216;15680:6;15701:10;15726:136;15780:6;15726:136;;;;;;;;;;;;;;;;;:11;:19;15738:6;15726:19;;;;;;;;;;;;;;;:31;15746:10;15726:31;;;;;;;;;;;;;;;;:35;;:136;;;;;:::i;:::-;15657:8;:216::i;:::-;15891:4;15884:11;;15461:442;;;;;:::o;8198:83::-;3824:19;3832:10;3824:7;:19::i;:::-;3816:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8269:4:::1;8252:14;;:21;;;;;;;;;;;;;;;;;;8198:83::o:0;8107:::-;8148:5;5864:2;8166:16;;8107:83;:::o;6058:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;9204:124::-;3824:19;3832:10;3824:7;:19::i;:::-;3816:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9312:8:::1;9288:11;:21;9300:8;9288:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;9204:124:::0;;:::o;8389:119::-;8455:7;8482:9;:18;8492:7;8482:18;;;;;;;;;;;;;;;;8475:25;;8389:119;;;:::o;10240:180::-;3824:19;3832:10;3824:7;:19::i;:::-;3816:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10308:3:::1;10297:8;:14;;;;10332:3;10322:7;:13;;;;10351:32;10380:1;10351:32;;;;;;:::i;:::-;;;;;;;;10410:1;10394:5:::0;::::1;:18;;;;;;;;;;;;;;;;;;10240:180::o:0;8289:92::-;8341:7;8368:5;;;;;;;;;;;8361:12;;8289:92;:::o;9081:115::-;3824:19;3832:10;3824:7;:19::i;:::-;3816:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9180:8:::1;9162:5;:15;9168:8;9162:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;9081:115:::0;;:::o;8012:87::-;8051:13;8084:7;;;;;;;;;;;;;;;;;8077:14;;8012:87;:::o;6174:19::-;;;;;;;;;;;;;:::o;8516:190::-;8619:4;8636:40;8646:10;8658:9;8669:6;8636:9;:40::i;:::-;8694:4;8687:11;;8516:190;;;;:::o;8714:168::-;8820:7;8847:11;:18;8859:5;8847:18;;;;;;;;;;;;;;;:27;8866:7;8847:27;;;;;;;;;;;;;;;;8840:34;;8714:168;;;;:::o;15911:335::-;16021:1;16004:19;;:5;:19;;;15996:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16102:1;16083:21;;:7;:21;;;16075:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16184:6;16154:11;:18;16166:5;16154:18;;;;;;;;;;;;;;;:27;16173:7;16154:27;;;;;;;;;;;;;;;:36;;;;16222:7;16206:32;;16215:5;16206:32;;;16231:6;16206:32;;;;;;:::i;:::-;;;;;;;;15911:335;;;:::o;193:98::-;251:7;282:1;278;:5;;;;:::i;:::-;271:12;;193:98;;;;:::o;10428:634::-;10551:37;10562:6;10570:9;10581:6;10551:10;:37::i;:::-;10599:38;10619:6;10627:9;10599:19;:38::i;:::-;10648:27;10665:9;10648:16;:27::i;:::-;10686:35;10695:6;10703:9;10714:6;10686:8;:35::i;:::-;10752:29;10774:6;10752:9;:17;10762:6;10752:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;10732:9;:17;10742:6;10732:17;;;;;;;;;;;;;;;:49;;;;10792:22;10817:32;10831:6;10839:9;10817:13;:32::i;:::-;:104;;10915:6;10817:104;;;10865:34;10873:6;10881:9;10892:6;10865:7;:34::i;:::-;10817:104;10792:129;;10955:40;10980:14;10955:9;:20;10965:9;10955:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10932:9;:20;10942:9;10932:20;;;;;;;;;;;;;;;:63;;;;11028:9;11011:43;;11020:6;11011:43;;;11039:14;11011:43;;;;;;:::i;:::-;;;;;;;;10540:522;10428:634;;;:::o;1858:240::-;1978:7;2036:1;2031;:6;;2039:12;2023:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2078:1;2074;:5;2067:12;;1858:240;;;;;:::o;3882:105::-;3939:4;3974:5;;;;;;;;;;;3963:16;;:7;:16;;;3956:23;;3882:105;;;:::o;9684:548::-;9840:1;9822:20;;:6;:20;;;9814:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9924:1;9903:23;;:9;:23;;;9895:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10016:1;9999:6;:19;9977:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;10130:17;10140:6;10130:9;:17::i;:::-;10120:6;:27;;10098:126;;;;;;;;;;;;:::i;:::-;;;;;;;;;9684:548;;;:::o;11070:242::-;11189:11;:19;11201:6;11189:19;;;;;;;;;;;;;;;;;;;;;;;;;11188:20;:47;;;;;11213:11;:22;11225:9;11213:22;;;;;;;;;;;;;;;;;;;;;;;;;11212:23;11188:47;11184:121;;;11260:14;;;;;;;;;;;11252:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11184:121;11070:242;;:::o;11320:145::-;11402:4;;;;;;;;;;;11389:17;;:9;:17;;;11385:73;;11444:1;11423:9;;:23;;;;;;;:::i;:::-;;;;;;;;11385:73;11320:145;:::o;14031:270::-;14158:41;14173:6;14181:9;14192:6;14158:14;:41::i;:::-;14154:140;;;14216:29;14231:13;;14216:14;:29::i;:::-;14280:1;14260:9;:22;;;;14154:140;14031:270;;;:::o;14309:185::-;14415:4;14440:11;:19;14452:6;14440:19;;;;;;;;;;;;;;;;;;;;;;;;;14439:20;:47;;;;;14464:11;:22;14476:9;14464:22;;;;;;;;;;;;;;;;;;;;;;;;;14463:23;14439:47;14432:54;;14309:185;;;;:::o;14918:535::-;15038:7;15095:1;15062:30;15074:6;15082:9;15062:11;:30::i;:::-;:34;15058:364;;;15113:17;15133:91;15179:30;15191:6;15199:9;15179:11;:30::i;:::-;15133:23;15144:11;;15133:6;:10;;:23;;;;:::i;:::-;:27;;:91;;;;:::i;:::-;15113:111;;15266:39;15295:9;15266;:24;15284:4;15266:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15239:9;:24;15257:4;15239:24;;;;;;;;;;;;;;;:66;;;;15350:4;15325:42;;15334:6;15325:42;;;15357:9;15325:42;;;;;;:::i;:::-;;;;;;;;15389:21;15400:9;15389:6;:10;;:21;;;;:::i;:::-;15382:28;;;;;15058:364;15439:6;15432:13;;14918:535;;;;;;:::o;87:98::-;145:7;176:1;172;:5;;;;:::i;:::-;165:12;;87:98;;;;:::o;13486:537::-;13618:4;13635:13;13661:14;;13651:6;:24;;13635:40;;13686:19;13736:13;;13708:24;13726:4;13708:9;:24::i;:::-;:41;;13686:63;;13781:8;;;;;;;;;;;13780:9;:37;;;;;13806:11;;;;;;;;;;;13780:37;:68;;;;;13834:14;;;;;;;;;;;13780:68;:93;;;;;13865:8;13780:93;:130;;;;;13891:11;:19;13903:6;13891:19;;;;;;;;;;;;;;;;;;;;;;;;;13890:20;13780:130;:164;;;;;13940:4;;;;;;;;;;;13927:17;;:9;:17;;;13780:164;:204;;;;;13974:10;;13961:9;;:23;;13780:204;:235;;;;;14001:14;13780:235;13760:255;;;;13486:537;;;;;:::o;11473:1192::-;6819:4;6808:8;;:15;;;;;;;;;;;;;;;;;;11544:20:::1;11567:90;11655:1;11582:57;11624:14;;11582:37;11606:12;;11582:19;11599:1;11582:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;11567:87;;:90;;;;:::i;:::-;11544:113;;11668:32;11703:66;11746:12;11703:24;11714:12;;11703:6;:10;;:24;;;;:::i;:::-;:28;;:66;;;;:::i;:::-;11668:101;;11780:14;11797:36;11808:24;11797:6;:10;;:36;;;;:::i;:::-;11780:53;;11844:22;11869:21;11844:46;;11901:24;11918:6;11901:16;:24::i;:::-;11936:20;11959:41;11985:14;11959:21;:25;;:41;;;;:::i;:::-;11936:64;;12011:19;12033:48;12050:30;12067:12;;12050;:16;;:30;;;;:::i;:::-;12033:12;:16;;:48;;;;:::i;:::-;12011:70;;12092:29;12124;12140:12;;12124:11;:15;;:29;;;;:::i;:::-;12092:61;;12200:1;12168:21;:34;12164:128;;;12219:61;12232:24;12258:21;12219:12;:61::i;:::-;12164:128;12302:20;12325:36;12348:12;;12325:18;12341:1;12325:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;12302:59;;12391:1;12376:12;:16;12372:99;;;7123:42;12409:36;;:50;12446:12;12409:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12372:99;12481:24;12508:21;12481:48;;12571:1;12544:16;:29;12540:118;;;7018:42;12590:38;;:56;12629:16;12590:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12540:118;11533:1132;;;;;;;;;6857:5:::0;6846:8;;:16;;;;;;;;;;;;;;;;;;11473:1192;:::o;14502:408::-;14606:7;14630:5;:13;14636:6;14630:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;14647:5;:16;14653:9;14647:16;;;;;;;;;;;;;;;;;;;;;;;;;14630:33;14626:102;;;14687:29;14711:3;14687:11;;:15;;:29;;;;:::i;:::-;14680:36;;;;14626:102;14755:4;;;;;;;;;;;14742:17;;:9;:17;;;14738:64;;14783:7;;14776:14;;;;14738:64;14826:4;;;;;;;;;;;14816:14;;:6;:14;;;14812:62;;14854:8;;14847:15;;;;14812:62;14891:11;;14884:18;;14502:408;;;;;:::o;405:98::-;463:7;494:1;490;:5;;;;:::i;:::-;483:12;;405:98;;;;:::o;299:::-;357:7;388:1;384;:5;;;;:::i;:::-;377:12;;299:98;;;;:::o;13034:444::-;13100:21;13138:1;13124:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13100:40;;13169:4;13151;13156:1;13151:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13195:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13185:4;13190:1;13185:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13219:53;13236:4;13251:6;;;;;;;;;;;13260:11;13219:8;:53::i;:::-;13283:6;;;;;;;;;;;:57;;;13355:11;13381:1;13397:4;13424;13444:15;13283:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13089:389;13034:444;:::o;12673:353::-;12754:53;12771:4;12786:6;;;;;;;;;;;12795:11;12754:8;:53::i;:::-;12818:6;;;;;;;;;;;:22;;;12848:9;12881:4;12901:11;12927:1;12943;7228:42;12992:15;12818:200;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12673:353;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:116::-;5258:21;5273:5;5258:21;:::i;:::-;5251:5;5248:32;5238:60;;5294:1;5291;5284:12;5238:60;5188:116;:::o;5310:133::-;5353:5;5391:6;5378:20;5369:29;;5407:30;5431:5;5407:30;:::i;:::-;5310:133;;;;:::o;5449:468::-;5514:6;5522;5571:2;5559:9;5550:7;5546:23;5542:32;5539:119;;;5577:79;;:::i;:::-;5539:119;5697:1;5722:53;5767:7;5758:6;5747:9;5743:22;5722:53;:::i;:::-;5712:63;;5668:117;5824:2;5850:50;5892:7;5883:6;5872:9;5868:22;5850:50;:::i;:::-;5840:60;;5795:115;5449:468;;;;;:::o;5923:118::-;6010:24;6028:5;6010:24;:::i;:::-;6005:3;5998:37;5923:118;;:::o;6047:222::-;6140:4;6178:2;6167:9;6163:18;6155:26;;6191:71;6259:1;6248:9;6244:17;6235:6;6191:71;:::i;:::-;6047:222;;;;:::o;6275:474::-;6343:6;6351;6400:2;6388:9;6379:7;6375:23;6371:32;6368:119;;;6406:79;;:::i;:::-;6368:119;6526:1;6551:53;6596:7;6587:6;6576:9;6572:22;6551:53;:::i;:::-;6541:63;;6497:117;6653:2;6679:53;6724:7;6715:6;6704:9;6700:22;6679:53;:::i;:::-;6669:63;;6624:118;6275:474;;;;;:::o;6755:156::-;6895:8;6891:1;6883:6;6879:14;6872:32;6755:156;:::o;6917:365::-;7059:3;7080:66;7144:1;7139:3;7080:66;:::i;:::-;7073:73;;7155:93;7244:3;7155:93;:::i;:::-;7273:2;7268:3;7264:12;7257:19;;6917:365;;;:::o;7288:419::-;7454:4;7492:2;7481:9;7477:18;7469:26;;7541:9;7535:4;7531:20;7527:1;7516:9;7512:17;7505:47;7569:131;7695:4;7569:131;:::i;:::-;7561:139;;7288:419;;;:::o;7713:223::-;7853:34;7849:1;7841:6;7837:14;7830:58;7922:6;7917:2;7909:6;7905:15;7898:31;7713:223;:::o;7942:366::-;8084:3;8105:67;8169:2;8164:3;8105:67;:::i;:::-;8098:74;;8181:93;8270:3;8181:93;:::i;:::-;8299:2;8294:3;8290:12;8283:19;;7942:366;;;:::o;8314:419::-;8480:4;8518:2;8507:9;8503:18;8495:26;;8567:9;8561:4;8557:20;8553:1;8542:9;8538:17;8531:47;8595:131;8721:4;8595:131;:::i;:::-;8587:139;;8314:419;;;:::o;8739:221::-;8879:34;8875:1;8867:6;8863:14;8856:58;8948:4;8943:2;8935:6;8931:15;8924:29;8739:221;:::o;8966:366::-;9108:3;9129:67;9193:2;9188:3;9129:67;:::i;:::-;9122:74;;9205:93;9294:3;9205:93;:::i;:::-;9323:2;9318:3;9314:12;9307:19;;8966:366;;;:::o;9338:419::-;9504:4;9542:2;9531:9;9527:18;9519:26;;9591:9;9585:4;9581:20;9577:1;9566:9;9562:17;9555:47;9619:131;9745:4;9619:131;:::i;:::-;9611:139;;9338:419;;;:::o;9763:180::-;9811:77;9808:1;9801:88;9908:4;9905:1;9898:15;9932:4;9929:1;9922:15;9949:194;9989:4;10009:20;10027:1;10009:20;:::i;:::-;10004:25;;10043:20;10061:1;10043:20;:::i;:::-;10038:25;;10087:1;10084;10080:9;10072:17;;10111:1;10105:4;10102:11;10099:37;;;10116:18;;:::i;:::-;10099:37;9949:194;;;;:::o;10149:224::-;10289:34;10285:1;10277:6;10273:14;10266:58;10358:7;10353:2;10345:6;10341:15;10334:32;10149:224;:::o;10379:366::-;10521:3;10542:67;10606:2;10601:3;10542:67;:::i;:::-;10535:74;;10618:93;10707:3;10618:93;:::i;:::-;10736:2;10731:3;10727:12;10720:19;;10379:366;;;:::o;10751:419::-;10917:4;10955:2;10944:9;10940:18;10932:26;;11004:9;10998:4;10994:20;10990:1;10979:9;10975:17;10968:47;11032:131;11158:4;11032:131;:::i;:::-;11024:139;;10751:419;;;:::o;11176:222::-;11316:34;11312:1;11304:6;11300:14;11293:58;11385:5;11380:2;11372:6;11368:15;11361:30;11176:222;:::o;11404:366::-;11546:3;11567:67;11631:2;11626:3;11567:67;:::i;:::-;11560:74;;11643:93;11732:3;11643:93;:::i;:::-;11761:2;11756:3;11752:12;11745:19;;11404:366;;;:::o;11776:419::-;11942:4;11980:2;11969:9;11965:18;11957:26;;12029:9;12023:4;12019:20;12015:1;12004:9;12000:17;11993:47;12057:131;12183:4;12057:131;:::i;:::-;12049:139;;11776:419;;;:::o;12201:228::-;12341:34;12337:1;12329:6;12325:14;12318:58;12410:11;12405:2;12397:6;12393:15;12386:36;12201:228;:::o;12435:366::-;12577:3;12598:67;12662:2;12657:3;12598:67;:::i;:::-;12591:74;;12674:93;12763:3;12674:93;:::i;:::-;12792:2;12787:3;12783:12;12776:19;;12435:366;;;:::o;12807:419::-;12973:4;13011:2;13000:9;12996:18;12988:26;;13060:9;13054:4;13050:20;13046:1;13035:9;13031:17;13024:47;13088:131;13214:4;13088:131;:::i;:::-;13080:139;;12807:419;;;:::o;13232:236::-;13372:34;13368:1;13360:6;13356:14;13349:58;13441:19;13436:2;13428:6;13424:15;13417:44;13232:236;:::o;13474:366::-;13616:3;13637:67;13701:2;13696:3;13637:67;:::i;:::-;13630:74;;13713:93;13802:3;13713:93;:::i;:::-;13831:2;13826:3;13822:12;13815:19;;13474:366;;;:::o;13846:419::-;14012:4;14050:2;14039:9;14035:18;14027:26;;14099:9;14093:4;14089:20;14085:1;14074:9;14070:17;14063:47;14127:131;14253:4;14127:131;:::i;:::-;14119:139;;13846:419;;;:::o;14271:164::-;14411:16;14407:1;14399:6;14395:14;14388:40;14271:164;:::o;14441:366::-;14583:3;14604:67;14668:2;14663:3;14604:67;:::i;:::-;14597:74;;14680:93;14769:3;14680:93;:::i;:::-;14798:2;14793:3;14789:12;14782:19;;14441:366;;;:::o;14813:419::-;14979:4;15017:2;15006:9;15002:18;14994:26;;15066:9;15060:4;15056:20;15052:1;15041:9;15037:17;15030:47;15094:131;15220:4;15094:131;:::i;:::-;15086:139;;14813:419;;;:::o;15238:191::-;15278:3;15297:20;15315:1;15297:20;:::i;:::-;15292:25;;15331:20;15349:1;15331:20;:::i;:::-;15326:25;;15374:1;15371;15367:9;15360:16;;15395:3;15392:1;15389:10;15386:36;;;15402:18;;:::i;:::-;15386:36;15238:191;;;;:::o;15435:180::-;15483:77;15480:1;15473:88;15580:4;15577:1;15570:15;15604:4;15601:1;15594:15;15621:185;15661:1;15678:20;15696:1;15678:20;:::i;:::-;15673:25;;15712:20;15730:1;15712:20;:::i;:::-;15707:25;;15751:1;15741:35;;15756:18;;:::i;:::-;15741:35;15798:1;15795;15791:9;15786:14;;15621:185;;;;:::o;15812:410::-;15852:7;15875:20;15893:1;15875:20;:::i;:::-;15870:25;;15909:20;15927:1;15909:20;:::i;:::-;15904:25;;15964:1;15961;15957:9;15986:30;16004:11;15986:30;:::i;:::-;15975:41;;16165:1;16156:7;16152:15;16149:1;16146:22;16126:1;16119:9;16099:83;16076:139;;16195:18;;:::i;:::-;16076:139;15860:362;15812:410;;;;:::o;16228:180::-;16276:77;16273:1;16266:88;16373:4;16370:1;16363:15;16397:4;16394:1;16387:15;16414:180;16462:77;16459:1;16452:88;16559:4;16556:1;16549:15;16583:4;16580:1;16573:15;16600:143;16657:5;16688:6;16682:13;16673:22;;16704:33;16731:5;16704:33;:::i;:::-;16600:143;;;;:::o;16749:351::-;16819:6;16868:2;16856:9;16847:7;16843:23;16839:32;16836:119;;;16874:79;;:::i;:::-;16836:119;16994:1;17019:64;17075:7;17066:6;17055:9;17051:22;17019:64;:::i;:::-;17009:74;;16965:128;16749:351;;;;:::o;17106:85::-;17151:7;17180:5;17169:16;;17106:85;;;:::o;17197:60::-;17225:3;17246:5;17239:12;;17197:60;;;:::o;17263:158::-;17321:9;17354:61;17372:42;17381:32;17407:5;17381:32;:::i;:::-;17372:42;:::i;:::-;17354:61;:::i;:::-;17341:74;;17263:158;;;:::o;17427:147::-;17522:45;17561:5;17522:45;:::i;:::-;17517:3;17510:58;17427:147;;:::o;17580:114::-;17647:6;17681:5;17675:12;17665:22;;17580:114;;;:::o;17700:184::-;17799:11;17833:6;17828:3;17821:19;17873:4;17868:3;17864:14;17849:29;;17700:184;;;;:::o;17890:132::-;17957:4;17980:3;17972:11;;18010:4;18005:3;18001:14;17993:22;;17890:132;;;:::o;18028:108::-;18105:24;18123:5;18105:24;:::i;:::-;18100:3;18093:37;18028:108;;:::o;18142:179::-;18211:10;18232:46;18274:3;18266:6;18232:46;:::i;:::-;18310:4;18305:3;18301:14;18287:28;;18142:179;;;;:::o;18327:113::-;18397:4;18429;18424:3;18420:14;18412:22;;18327:113;;;:::o;18476:732::-;18595:3;18624:54;18672:5;18624:54;:::i;:::-;18694:86;18773:6;18768:3;18694:86;:::i;:::-;18687:93;;18804:56;18854:5;18804:56;:::i;:::-;18883:7;18914:1;18899:284;18924:6;18921:1;18918:13;18899:284;;;19000:6;18994:13;19027:63;19086:3;19071:13;19027:63;:::i;:::-;19020:70;;19113:60;19166:6;19113:60;:::i;:::-;19103:70;;18959:224;18946:1;18943;18939:9;18934:14;;18899:284;;;18903:14;19199:3;19192:10;;18600:608;;;18476:732;;;;:::o;19214:831::-;19477:4;19515:3;19504:9;19500:19;19492:27;;19529:71;19597:1;19586:9;19582:17;19573:6;19529:71;:::i;:::-;19610:80;19686:2;19675:9;19671:18;19662:6;19610:80;:::i;:::-;19737:9;19731:4;19727:20;19722:2;19711:9;19707:18;19700:48;19765:108;19868:4;19859:6;19765:108;:::i;:::-;19757:116;;19883:72;19951:2;19940:9;19936:18;19927:6;19883:72;:::i;:::-;19965:73;20033:3;20022:9;20018:19;20009:6;19965:73;:::i;:::-;19214:831;;;;;;;;:::o;20051:807::-;20300:4;20338:3;20327:9;20323:19;20315:27;;20352:71;20420:1;20409:9;20405:17;20396:6;20352:71;:::i;:::-;20433:72;20501:2;20490:9;20486:18;20477:6;20433:72;:::i;:::-;20515:80;20591:2;20580:9;20576:18;20567:6;20515:80;:::i;:::-;20605;20681:2;20670:9;20666:18;20657:6;20605:80;:::i;:::-;20695:73;20763:3;20752:9;20748:19;20739:6;20695:73;:::i;:::-;20778;20846:3;20835:9;20831:19;20822:6;20778:73;:::i;:::-;20051:807;;;;;;;;;:::o;20864:143::-;20921:5;20952:6;20946:13;20937:22;;20968:33;20995:5;20968:33;:::i;:::-;20864:143;;;;:::o;21013:663::-;21101:6;21109;21117;21166:2;21154:9;21145:7;21141:23;21137:32;21134:119;;;21172:79;;:::i;:::-;21134:119;21292:1;21317:64;21373:7;21364:6;21353:9;21349:22;21317:64;:::i;:::-;21307:74;;21263:128;21430:2;21456:64;21512:7;21503:6;21492:9;21488:22;21456:64;:::i;:::-;21446:74;;21401:129;21569:2;21595:64;21651:7;21642:6;21631:9;21627:22;21595:64;:::i;:::-;21585:74;;21540:129;21013:663;;;;;:::o

Swarm Source

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