ETH Price: $2,966.73 (-1.78%)
Gas: 2 Gwei

Token

Clarinets (CLARINETS)
 

Overview

Max Total Supply

777,777,777,777,777 CLARINETS

Holders

130

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
3,484,881,673,009.22603323 CLARINETS

Value
$0.00
0x522111f71627a3188c2a9d9961160be1839ec3d1
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:
CLARINETS

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-20
*/

/**

https://x.com/Matt_Furie/status/1726451440007401614?s=20


https://t.me/Clarinets_ERC


*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.16;


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) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public 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 CLARINETS is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Clarinets';
    string private constant _symbol = 'CLARINETS';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 777777777777777 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 200; // 10000;
    uint256 private _maxTransferPercent = 200;
    uint256 private _maxWalletPercent = 300;
    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 = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 1000;
    uint256 private burnFee = 0;
    uint256 private totalFee = 3000;
    uint256 private sellFee = 6000;
    uint256 private transferFee = 6000;
    uint256 private denominator = 10000;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 1;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0xAE4F8FFF855A2dE864cd082C4fdd447F11E3DA4a; 
    address internal constant marketing_receiver = 0xAE4F8FFF855A2dE864cd082C4fdd447F11E3DA4a;
    address internal constant liquidity_receiver = 0xAE4F8FFF855A2dE864cd082C4fdd447F11E3DA4a;

    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 _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}

    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 _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        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 setStructure1(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        sellFee = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(1) && sellFee <= denominator.div(1), "totalFee and sellFee cannot be more than 20%");
    }

    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 10000;
        uint256 newTransfer = (totalSupply() * _trans) / 10000;
        uint256 newWallet = (totalSupply() * _wallet) / 10000;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
    
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_balances[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }

    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
    }

    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }

    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 setSwapbackSettings1(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    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);
        if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        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":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"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":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure1","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setSwapbackSettings1","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"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a6200001491906200071a565b6602c36280289c716200002891906200076b565b60015560c860025560c860035561012c6004556000600a60146101000a81548160ff0219169083151502179055506000600b556000600c556103e8600d556000600e55610bb8600f556117706010556117706011556127106012556001601360006101000a81548160ff0219169083151502179055506001601655620186a06103e8600154620000b991906200076b565b620000c59190620007fb565b601755620186a0600a600154620000dd91906200076b565b620000e99190620007fb565b601855348015620000f957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001a3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001c991906200089d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000231573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200025791906200089d565b6040518363ffffffff1660e01b815260040162000276929190620008e0565b6020604051808303816000875af115801562000296573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002bc91906200089d565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ae4f8fff855a2de864cd082c4fdd447f11e3da4a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073ae4f8fff855a2de864cd082c4fdd447f11e3da4a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516200057091906200091e565b60405180910390a350506200093b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200060e57808604811115620005e657620005e562000580565b5b6001851615620005f65780820291505b80810290506200060685620005af565b9450620005c6565b94509492505050565b600082620006295760019050620006fc565b81620006395760009050620006fc565b81600181146200065257600281146200065d5762000693565b6001915050620006fc565b60ff84111562000672576200067162000580565b5b8360020a9150848211156200068c576200068b62000580565b5b50620006fc565b5060208310610133831016604e8410600b8410161715620006cd5782820a905083811115620006c757620006c662000580565b5b620006fc565b620006dc8484846001620005bc565b92509050818404811115620006f657620006f562000580565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007278262000703565b915062000734836200070d565b9250620007637fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000617565b905092915050565b6000620007788262000703565b9150620007858362000703565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620007c157620007c062000580565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008088262000703565b9150620008158362000703565b925082620008285762000827620007cc565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008658262000838565b9050919050565b620008778162000858565b81146200088357600080fd5b50565b60008151905062000897816200086c565b92915050565b600060208284031215620008b657620008b562000833565b5b6000620008c68482850162000886565b91505092915050565b620008da8162000858565b82525050565b6000604082019050620008f76000830185620008cf565b620009066020830184620008cf565b9392505050565b620009188162000703565b82525050565b60006020820190506200093560008301846200090d565b92915050565b61356b806200094b6000396000f3fe6080604052600436106101445760003560e01c806348ff2b8b116100b657806395d89b411161006f57806395d89b4114610469578063a8aa1b3114610494578063a9059cbb146104bf578063dd62ed3e146104fc578063e436d52e14610539578063f2fde38b146105625761014b565b806348ff2b8b1461035957806370a082311461038257806378109e54146103bf5780637d1db4a5146103ea578063893d20e8146104155780638c41180e146104405761014b565b806323b872dd1161010857806323b872dd14610237578063293230b8146102745780632f54bf6e1461028b578063313ce567146102c857806334c5d2ce146102f35780633f4218e01461031c5761014b565b8063058d60f61461015057806306fdde0314610179578063095ea7b3146101a457806318160ddd146101e15780631f976b7e1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610177600480360381019061017291906125a9565b61058b565b005b34801561018557600080fd5b5061018e61063f565b60405161019b919061268c565b60405180910390f35b3480156101b057600080fd5b506101cb60048036038101906101c6919061270c565b61067c565b6040516101d89190612767565b60405180910390f35b3480156101ed57600080fd5b506101f6610693565b6040516102039190612791565b60405180910390f35b34801561021857600080fd5b506102216106d4565b60405161022e9190612791565b60405180910390f35b34801561024357600080fd5b5061025e600480360381019061025991906127ac565b6106fd565b60405161026b9190612767565b60405180910390f35b34801561028057600080fd5b506102896107c8565b005b34801561029757600080fd5b506102b260048036038101906102ad91906127ff565b61082d565b6040516102bf9190612767565b60405180910390f35b3480156102d457600080fd5b506102dd610886565b6040516102ea9190612848565b60405180910390f35b3480156102ff57600080fd5b5061031a600480360381019061031591906125a9565b61088f565b005b34801561032857600080fd5b50610343600480360381019061033e91906127ff565b6109ef565b6040516103509190612767565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b919061288f565b610a0f565b005b34801561038e57600080fd5b506103a960048036038101906103a491906127ff565b610ab2565b6040516103b69190612791565b60405180910390f35b3480156103cb57600080fd5b506103d4610afb565b6040516103e19190612791565b60405180910390f35b3480156103f657600080fd5b506103ff610b24565b60405161040c9190612791565b60405180910390f35b34801561042157600080fd5b5061042a610b4d565b60405161043791906128de565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061288f565b610b76565b005b34801561047557600080fd5b5061047e610c19565b60405161048b919061268c565b60405180910390f35b3480156104a057600080fd5b506104a9610c56565b6040516104b691906128de565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e1919061270c565b610c7c565b6040516104f39190612767565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e91906128f9565b610c93565b6040516105309190612791565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b9190612939565b610d1a565b005b34801561056e57600080fd5b5061058960048036038101906105849190612a19565b610e19565b005b6105943361082d565b6105d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ca90612a92565b60405180910390fd5b82601681905550610604620186a06105f684600154610edb90919063ffffffff16565b610ef190919063ffffffff16565b601781905550610634620186a061062683600154610edb90919063ffffffff16565b610ef190919063ffffffff16565b601881905550505050565b60606040518060400160405280600981526020017f436c6172696e6574730000000000000000000000000000000000000000000000815250905090565b6000610689338484610f07565b6001905092915050565b60006106cf6106a26000610ab2565b6106c16106b061dead610ab2565b6001546110d090919063ffffffff16565b6110d090919063ffffffff16565b905090565b60006012546003546106e4610693565b6106ee9190612ae1565b6106f89190612b6a565b905090565b600061070a8484846110e6565b6107bd84336107b88560405180606001604052806028815260200161350e60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112df9092919063ffffffff16565b610f07565b600190509392505050565b6107d13361082d565b610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080790612a92565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6108983361082d565b6108d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ce90612a92565b60405180910390fd5b6000612710846108e5610693565b6108ef9190612ae1565b6108f99190612b6a565b9050600061271084610909610693565b6109139190612ae1565b61091d9190612b6a565b905060006127108461092d610693565b6109379190612ae1565b6109419190612b6a565b905085600281905550846003819055508360048190555060006109896103e861097b600561096d610693565b610edb90919063ffffffff16565b610ef190919063ffffffff16565b905080841015801561099b5750808310155b80156109a75750808210155b6109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90612c0d565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610a183361082d565b610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e90612a92565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610b0b610693565b610b159190612ae1565b610b1f9190612b6a565b905090565b6000601254600254610b34610693565b610b3e9190612ae1565b610b489190612b6a565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b7f3361082d565b610bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb590612a92565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600981526020017f434c4152494e4554530000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c893384846110e6565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d233361082d565b610d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5990612a92565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610da96001601254610ef190919063ffffffff16565b600f5411158015610dd15750610dcb6001601254610ef190919063ffffffff16565b60105411155b610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790612c9f565b60405180910390fd5b50505050505050565b610e223361082d565b610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890612a92565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610ed09190612d1e565b60405180910390a150565b60008183610ee99190612ae1565b905092915050565b60008183610eff9190612b6a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90612dab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc90612e3d565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110c39190612791565b60405180910390a3505050565b600081836110de9190612e5d565b905092915050565b6110f1838383611334565b6110fb83836114a5565b6111068383836115a2565b6111108383611780565b61111b83838361184b565b611126838383611a8a565b61117881600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006111c78484611ab3565b6111d157816111dd565b6111dc848484611b61565b5b905061123181600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112d19190612791565b60405180910390a350505050565b6000838311158290611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e919061268c565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90612f03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990612f95565b60405180910390fd5b60008111611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c90613027565b60405180910390fd5b61145e83610ab2565b8111156114a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611497906130b9565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115495750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561159e57600a60149054906101000a900460ff1661159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613125565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116465750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116a05750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116da575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561177b576116e7610afb565b61173982600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b111561177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190613191565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156118275750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118475760016014600082825461183f91906131b1565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611993576118a86106d4565b811115806118ff5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119535750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990613231565b60405180910390fd5b5b61199b610b24565b811115806119f25750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a465750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c90613231565b60405180910390fd5b505050565b611a95838383611d1f565b15611aae57611aa5601754611e59565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b595750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611b6e85856120aa565b1115611cfe576000611ba6611b8386866120aa565b611b9860125486610ef190919063ffffffff16565b610edb90919063ffffffff16565b9050611bfa81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c9a9190612791565b60405180910390a36000600e541115611ce357611ce23061dead611cdd600e54611ccf60125489610ef190919063ffffffff16565b610edb90919063ffffffff16565b6110e6565b5b611cf681846110d090919063ffffffff16565b915050611d02565b8190505b9392505050565b60008183611d1791906131b1565b905092915050565b60008060185483101590506000601754611d3830610ab2565b10159050601560009054906101000a900460ff16158015611d655750601360009054906101000a900460ff165b8015611d7d5750600a60149054906101000a900460ff165b8015611d865750815b8015611ddc5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e355750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611e45575060165460145410155b8015611e4e5750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611ec76002611eb9600d54611eab600c54611e9d6001600b54611d0990919063ffffffff16565b611d0990919063ffffffff16565b611d0990919063ffffffff16565b610edb90919063ffffffff16565b90506000611ef282611ee4600b5486610edb90919063ffffffff16565b610ef190919063ffffffff16565b90506000611f0982856110d090919063ffffffff16565b90506000479050611f1982612239565b6000611f2e82476110d090919063ffffffff16565b90506000611f59611f4a600b54886110d090919063ffffffff16565b83610ef190919063ffffffff16565b90506000611f72600b5483610edb90919063ffffffff16565b90506000811115611f8857611f87868261247c565b5b6000611fb2600c54611fa4600286610edb90919063ffffffff16565b610edb90919063ffffffff16565b905060008111156120195773ae4f8fff855a2de864cd082c4fdd447f11e3da4a73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612017573d6000803e3d6000fd5b505b600047905060008111156120835773ae4f8fff855a2de864cd082c4fdd447f11e3da4a73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612081573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061214d5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561216f5761216860646012546110d090919063ffffffff16565b9050612233565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121ce576010549050612233565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361222d57600f549050612233565b60115490505b92915050565b6000600267ffffffffffffffff81111561225657612255613251565b5b6040519080825280602002602001820160405280156122845781602001602082028036833780820191505090505b509050308160008151811061229c5761229b613280565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612343573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236791906132c4565b8160018151811061237b5761237a613280565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123e230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f07565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124469594939291906133ea565b600060405180830381600087803b15801561246057600080fd5b505af1158015612474573d6000803e3d6000fd5b505050505050565b6124a930600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f07565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073ae4f8fff855a2de864cd082c4fdd447f11e3da4a426040518863ffffffff1660e01b815260040161252496959493929190613444565b60606040518083038185885af1158015612542573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061256791906134ba565b5050505050565b600080fd5b6000819050919050565b61258681612573565b811461259157600080fd5b50565b6000813590506125a38161257d565b92915050565b6000806000606084860312156125c2576125c161256e565b5b60006125d086828701612594565b93505060206125e186828701612594565b92505060406125f286828701612594565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b8381101561263657808201518184015260208101905061261b565b60008484015250505050565b6000601f19601f8301169050919050565b600061265e826125fc565b6126688185612607565b9350612678818560208601612618565b61268181612642565b840191505092915050565b600060208201905081810360008301526126a68184612653565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126d9826126ae565b9050919050565b6126e9816126ce565b81146126f457600080fd5b50565b600081359050612706816126e0565b92915050565b600080604083850312156127235761272261256e565b5b6000612731858286016126f7565b925050602061274285828601612594565b9150509250929050565b60008115159050919050565b6127618161274c565b82525050565b600060208201905061277c6000830184612758565b92915050565b61278b81612573565b82525050565b60006020820190506127a66000830184612782565b92915050565b6000806000606084860312156127c5576127c461256e565b5b60006127d3868287016126f7565b93505060206127e4868287016126f7565b92505060406127f586828701612594565b9150509250925092565b6000602082840312156128155761281461256e565b5b6000612823848285016126f7565b91505092915050565b600060ff82169050919050565b6128428161282c565b82525050565b600060208201905061285d6000830184612839565b92915050565b61286c8161274c565b811461287757600080fd5b50565b60008135905061288981612863565b92915050565b600080604083850312156128a6576128a561256e565b5b60006128b4858286016126f7565b92505060206128c58582860161287a565b9150509250929050565b6128d8816126ce565b82525050565b60006020820190506128f360008301846128cf565b92915050565b600080604083850312156129105761290f61256e565b5b600061291e858286016126f7565b925050602061292f858286016126f7565b9150509250929050565b600080600080600080600060e0888a0312156129585761295761256e565b5b60006129668a828b01612594565b97505060206129778a828b01612594565b96505060406129888a828b01612594565b95505060606129998a828b01612594565b94505060806129aa8a828b01612594565b93505060a06129bb8a828b01612594565b92505060c06129cc8a828b01612594565b91505092959891949750929550565b60006129e6826126ae565b9050919050565b6129f6816129db565b8114612a0157600080fd5b50565b600081359050612a13816129ed565b92915050565b600060208284031215612a2f57612a2e61256e565b5b6000612a3d84828501612a04565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612a7c600683612607565b9150612a8782612a46565b602082019050919050565b60006020820190508181036000830152612aab81612a6f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aec82612573565b9150612af783612573565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b3057612b2f612ab2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b7582612573565b9150612b8083612573565b925082612b9057612b8f612b3b565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612bf7602e83612607565b9150612c0282612b9b565b604082019050919050565b60006020820190508181036000830152612c2681612bea565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612c89602c83612607565b9150612c9482612c2d565b604082019050919050565b60006020820190508181036000830152612cb881612c7c565b9050919050565b6000819050919050565b6000612ce4612cdf612cda846126ae565b612cbf565b6126ae565b9050919050565b6000612cf682612cc9565b9050919050565b6000612d0882612ceb565b9050919050565b612d1881612cfd565b82525050565b6000602082019050612d336000830184612d0f565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612d95602483612607565b9150612da082612d39565b604082019050919050565b60006020820190508181036000830152612dc481612d88565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e27602283612607565b9150612e3282612dcb565b604082019050919050565b60006020820190508181036000830152612e5681612e1a565b9050919050565b6000612e6882612573565b9150612e7383612573565b9250828203905081811115612e8b57612e8a612ab2565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612eed602583612607565b9150612ef882612e91565b604082019050919050565b60006020820190508181036000830152612f1c81612ee0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612f7f602383612607565b9150612f8a82612f23565b604082019050919050565b60006020820190508181036000830152612fae81612f72565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613011602983612607565b915061301c82612fb5565b604082019050919050565b6000602082019050818103600083015261304081613004565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006130a3603183612607565b91506130ae82613047565b604082019050919050565b600060208201905081810360008301526130d281613096565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b600061310f600e83612607565b915061311a826130d9565b602082019050919050565b6000602082019050818103600083015261313e81613102565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b600061317b601e83612607565b915061318682613145565b602082019050919050565b600060208201905081810360008301526131aa8161316e565b9050919050565b60006131bc82612573565b91506131c783612573565b92508282019050808211156131df576131de612ab2565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061321b601183612607565b9150613226826131e5565b602082019050919050565b6000602082019050818103600083015261324a8161320e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506132be816126e0565b92915050565b6000602082840312156132da576132d961256e565b5b60006132e8848285016132af565b91505092915050565b6000819050919050565b600061331661331161330c846132f1565b612cbf565b612573565b9050919050565b613326816132fb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613361816126ce565b82525050565b60006133738383613358565b60208301905092915050565b6000602082019050919050565b60006133978261332c565b6133a18185613337565b93506133ac83613348565b8060005b838110156133dd5781516133c48882613367565b97506133cf8361337f565b9250506001810190506133b0565b5085935050505092915050565b600060a0820190506133ff6000830188612782565b61340c602083018761331d565b818103604083015261341e818661338c565b905061342d60608301856128cf565b61343a6080830184612782565b9695505050505050565b600060c08201905061345960008301896128cf565b6134666020830188612782565b613473604083018761331d565b613480606083018661331d565b61348d60808301856128cf565b61349a60a0830184612782565b979650505050505050565b6000815190506134b48161257d565b92915050565b6000806000606084860312156134d3576134d261256e565b5b60006134e1868287016134a5565b93505060206134f2868287016134a5565b9250506040613503868287016134a5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203c45a92fcfb1222cd43e8afed7ce37bf559bb54b5bbaf7d0cf260597b5fd57fe64736f6c63430008100033

Deployed Bytecode

0x6080604052600436106101445760003560e01c806348ff2b8b116100b657806395d89b411161006f57806395d89b4114610469578063a8aa1b3114610494578063a9059cbb146104bf578063dd62ed3e146104fc578063e436d52e14610539578063f2fde38b146105625761014b565b806348ff2b8b1461035957806370a082311461038257806378109e54146103bf5780637d1db4a5146103ea578063893d20e8146104155780638c41180e146104405761014b565b806323b872dd1161010857806323b872dd14610237578063293230b8146102745780632f54bf6e1461028b578063313ce567146102c857806334c5d2ce146102f35780633f4218e01461031c5761014b565b8063058d60f61461015057806306fdde0314610179578063095ea7b3146101a457806318160ddd146101e15780631f976b7e1461020c5761014b565b3661014b57005b600080fd5b34801561015c57600080fd5b50610177600480360381019061017291906125a9565b61058b565b005b34801561018557600080fd5b5061018e61063f565b60405161019b919061268c565b60405180910390f35b3480156101b057600080fd5b506101cb60048036038101906101c6919061270c565b61067c565b6040516101d89190612767565b60405180910390f35b3480156101ed57600080fd5b506101f6610693565b6040516102039190612791565b60405180910390f35b34801561021857600080fd5b506102216106d4565b60405161022e9190612791565b60405180910390f35b34801561024357600080fd5b5061025e600480360381019061025991906127ac565b6106fd565b60405161026b9190612767565b60405180910390f35b34801561028057600080fd5b506102896107c8565b005b34801561029757600080fd5b506102b260048036038101906102ad91906127ff565b61082d565b6040516102bf9190612767565b60405180910390f35b3480156102d457600080fd5b506102dd610886565b6040516102ea9190612848565b60405180910390f35b3480156102ff57600080fd5b5061031a600480360381019061031591906125a9565b61088f565b005b34801561032857600080fd5b50610343600480360381019061033e91906127ff565b6109ef565b6040516103509190612767565b60405180910390f35b34801561036557600080fd5b50610380600480360381019061037b919061288f565b610a0f565b005b34801561038e57600080fd5b506103a960048036038101906103a491906127ff565b610ab2565b6040516103b69190612791565b60405180910390f35b3480156103cb57600080fd5b506103d4610afb565b6040516103e19190612791565b60405180910390f35b3480156103f657600080fd5b506103ff610b24565b60405161040c9190612791565b60405180910390f35b34801561042157600080fd5b5061042a610b4d565b60405161043791906128de565b60405180910390f35b34801561044c57600080fd5b506104676004803603810190610462919061288f565b610b76565b005b34801561047557600080fd5b5061047e610c19565b60405161048b919061268c565b60405180910390f35b3480156104a057600080fd5b506104a9610c56565b6040516104b691906128de565b60405180910390f35b3480156104cb57600080fd5b506104e660048036038101906104e1919061270c565b610c7c565b6040516104f39190612767565b60405180910390f35b34801561050857600080fd5b50610523600480360381019061051e91906128f9565b610c93565b6040516105309190612791565b60405180910390f35b34801561054557600080fd5b50610560600480360381019061055b9190612939565b610d1a565b005b34801561056e57600080fd5b5061058960048036038101906105849190612a19565b610e19565b005b6105943361082d565b6105d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ca90612a92565b60405180910390fd5b82601681905550610604620186a06105f684600154610edb90919063ffffffff16565b610ef190919063ffffffff16565b601781905550610634620186a061062683600154610edb90919063ffffffff16565b610ef190919063ffffffff16565b601881905550505050565b60606040518060400160405280600981526020017f436c6172696e6574730000000000000000000000000000000000000000000000815250905090565b6000610689338484610f07565b6001905092915050565b60006106cf6106a26000610ab2565b6106c16106b061dead610ab2565b6001546110d090919063ffffffff16565b6110d090919063ffffffff16565b905090565b60006012546003546106e4610693565b6106ee9190612ae1565b6106f89190612b6a565b905090565b600061070a8484846110e6565b6107bd84336107b88560405180606001604052806028815260200161350e60289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546112df9092919063ffffffff16565b610f07565b600190509392505050565b6107d13361082d565b610810576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080790612a92565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6108983361082d565b6108d7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108ce90612a92565b60405180910390fd5b6000612710846108e5610693565b6108ef9190612ae1565b6108f99190612b6a565b9050600061271084610909610693565b6109139190612ae1565b61091d9190612b6a565b905060006127108461092d610693565b6109379190612ae1565b6109419190612b6a565b905085600281905550846003819055508360048190555060006109896103e861097b600561096d610693565b610edb90919063ffffffff16565b610ef190919063ffffffff16565b905080841015801561099b5750808310155b80156109a75750808210155b6109e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109dd90612c0d565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610a183361082d565b610a57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4e90612a92565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610b0b610693565b610b159190612ae1565b610b1f9190612b6a565b905090565b6000601254600254610b34610693565b610b3e9190612ae1565b610b489190612b6a565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b7f3361082d565b610bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb590612a92565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60606040518060400160405280600981526020017f434c4152494e4554530000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610c893384846110e6565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d233361082d565b610d62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5990612a92565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f819055508160108190555080601181905550610da96001601254610ef190919063ffffffff16565b600f5411158015610dd15750610dcb6001601254610ef190919063ffffffff16565b60105411155b610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0790612c9f565b60405180910390fd5b50505050505050565b610e223361082d565b610e61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5890612a92565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610ed09190612d1e565b60405180910390a150565b60008183610ee99190612ae1565b905092915050565b60008183610eff9190612b6a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6d90612dab565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610fe5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fdc90612e3d565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110c39190612791565b60405180910390a3505050565b600081836110de9190612e5d565b905092915050565b6110f1838383611334565b6110fb83836114a5565b6111068383836115a2565b6111108383611780565b61111b83838361184b565b611126838383611a8a565b61117881600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546110d090919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006111c78484611ab3565b6111d157816111dd565b6111dc848484611b61565b5b905061123181600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112d19190612791565b60405180910390a350505050565b6000838311158290611327576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131e919061268c565b60405180910390fd5b5082840390509392505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161139a90612f03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611412576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161140990612f95565b60405180910390fd5b60008111611455576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144c90613027565b60405180910390fd5b61145e83610ab2565b8111156114a0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611497906130b9565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115495750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561159e57600a60149054906101000a900460ff1661159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613125565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116465750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156116a05750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156116da575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561177b576116e7610afb565b61173982600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b111561177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177190613191565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156118275750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118475760016014600082825461183f91906131b1565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611993576118a86106d4565b811115806118ff5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119535750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611992576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161198990613231565b60405180910390fd5b5b61199b610b24565b811115806119f25750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611a465750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7c90613231565b60405180910390fd5b505050565b611a95838383611d1f565b15611aae57611aa5601754611e59565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611b595750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611b6e85856120aa565b1115611cfe576000611ba6611b8386866120aa565b611b9860125486610ef190919063ffffffff16565b610edb90919063ffffffff16565b9050611bfa81600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d0990919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c9a9190612791565b60405180910390a36000600e541115611ce357611ce23061dead611cdd600e54611ccf60125489610ef190919063ffffffff16565b610edb90919063ffffffff16565b6110e6565b5b611cf681846110d090919063ffffffff16565b915050611d02565b8190505b9392505050565b60008183611d1791906131b1565b905092915050565b60008060185483101590506000601754611d3830610ab2565b10159050601560009054906101000a900460ff16158015611d655750601360009054906101000a900460ff165b8015611d7d5750600a60149054906101000a900460ff165b8015611d865750815b8015611ddc5750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e355750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611e45575060165460145410155b8015611e4e5750805b925050509392505050565b6001601560006101000a81548160ff0219169083151502179055506000611ec76002611eb9600d54611eab600c54611e9d6001600b54611d0990919063ffffffff16565b611d0990919063ffffffff16565b611d0990919063ffffffff16565b610edb90919063ffffffff16565b90506000611ef282611ee4600b5486610edb90919063ffffffff16565b610ef190919063ffffffff16565b90506000611f0982856110d090919063ffffffff16565b90506000479050611f1982612239565b6000611f2e82476110d090919063ffffffff16565b90506000611f59611f4a600b54886110d090919063ffffffff16565b83610ef190919063ffffffff16565b90506000611f72600b5483610edb90919063ffffffff16565b90506000811115611f8857611f87868261247c565b5b6000611fb2600c54611fa4600286610edb90919063ffffffff16565b610edb90919063ffffffff16565b905060008111156120195773ae4f8fff855a2de864cd082c4fdd447f11e3da4a73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612017573d6000803e3d6000fd5b505b600047905060008111156120835773ae4f8fff855a2de864cd082c4fdd447f11e3da4a73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612081573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061214d5750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561216f5761216860646012546110d090919063ffffffff16565b9050612233565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036121ce576010549050612233565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361222d57600f549050612233565b60115490505b92915050565b6000600267ffffffffffffffff81111561225657612255613251565b5b6040519080825280602002602001820160405280156122845781602001602082028036833780820191505090505b509050308160008151811061229c5761229b613280565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612343573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236791906132c4565b8160018151811061237b5761237a613280565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506123e230600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f07565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016124469594939291906133ea565b600060405180830381600087803b15801561246057600080fd5b505af1158015612474573d6000803e3d6000fd5b505050505050565b6124a930600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610f07565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073ae4f8fff855a2de864cd082c4fdd447f11e3da4a426040518863ffffffff1660e01b815260040161252496959493929190613444565b60606040518083038185885af1158015612542573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061256791906134ba565b5050505050565b600080fd5b6000819050919050565b61258681612573565b811461259157600080fd5b50565b6000813590506125a38161257d565b92915050565b6000806000606084860312156125c2576125c161256e565b5b60006125d086828701612594565b93505060206125e186828701612594565b92505060406125f286828701612594565b9150509250925092565b600081519050919050565b600082825260208201905092915050565b60005b8381101561263657808201518184015260208101905061261b565b60008484015250505050565b6000601f19601f8301169050919050565b600061265e826125fc565b6126688185612607565b9350612678818560208601612618565b61268181612642565b840191505092915050565b600060208201905081810360008301526126a68184612653565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006126d9826126ae565b9050919050565b6126e9816126ce565b81146126f457600080fd5b50565b600081359050612706816126e0565b92915050565b600080604083850312156127235761272261256e565b5b6000612731858286016126f7565b925050602061274285828601612594565b9150509250929050565b60008115159050919050565b6127618161274c565b82525050565b600060208201905061277c6000830184612758565b92915050565b61278b81612573565b82525050565b60006020820190506127a66000830184612782565b92915050565b6000806000606084860312156127c5576127c461256e565b5b60006127d3868287016126f7565b93505060206127e4868287016126f7565b92505060406127f586828701612594565b9150509250925092565b6000602082840312156128155761281461256e565b5b6000612823848285016126f7565b91505092915050565b600060ff82169050919050565b6128428161282c565b82525050565b600060208201905061285d6000830184612839565b92915050565b61286c8161274c565b811461287757600080fd5b50565b60008135905061288981612863565b92915050565b600080604083850312156128a6576128a561256e565b5b60006128b4858286016126f7565b92505060206128c58582860161287a565b9150509250929050565b6128d8816126ce565b82525050565b60006020820190506128f360008301846128cf565b92915050565b600080604083850312156129105761290f61256e565b5b600061291e858286016126f7565b925050602061292f858286016126f7565b9150509250929050565b600080600080600080600060e0888a0312156129585761295761256e565b5b60006129668a828b01612594565b97505060206129778a828b01612594565b96505060406129888a828b01612594565b95505060606129998a828b01612594565b94505060806129aa8a828b01612594565b93505060a06129bb8a828b01612594565b92505060c06129cc8a828b01612594565b91505092959891949750929550565b60006129e6826126ae565b9050919050565b6129f6816129db565b8114612a0157600080fd5b50565b600081359050612a13816129ed565b92915050565b600060208284031215612a2f57612a2e61256e565b5b6000612a3d84828501612a04565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612a7c600683612607565b9150612a8782612a46565b602082019050919050565b60006020820190508181036000830152612aab81612a6f565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612aec82612573565b9150612af783612573565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612b3057612b2f612ab2565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612b7582612573565b9150612b8083612573565b925082612b9057612b8f612b3b565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612bf7602e83612607565b9150612c0282612b9b565b604082019050919050565b60006020820190508181036000830152612c2681612bea565b9050919050565b7f746f74616c46656520616e642073656c6c4665652063616e6e6f74206265206d60008201527f6f7265207468616e203230250000000000000000000000000000000000000000602082015250565b6000612c89602c83612607565b9150612c9482612c2d565b604082019050919050565b60006020820190508181036000830152612cb881612c7c565b9050919050565b6000819050919050565b6000612ce4612cdf612cda846126ae565b612cbf565b6126ae565b9050919050565b6000612cf682612cc9565b9050919050565b6000612d0882612ceb565b9050919050565b612d1881612cfd565b82525050565b6000602082019050612d336000830184612d0f565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612d95602483612607565b9150612da082612d39565b604082019050919050565b60006020820190508181036000830152612dc481612d88565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612e27602283612607565b9150612e3282612dcb565b604082019050919050565b60006020820190508181036000830152612e5681612e1a565b9050919050565b6000612e6882612573565b9150612e7383612573565b9250828203905081811115612e8b57612e8a612ab2565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612eed602583612607565b9150612ef882612e91565b604082019050919050565b60006020820190508181036000830152612f1c81612ee0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612f7f602383612607565b9150612f8a82612f23565b604082019050919050565b60006020820190508181036000830152612fae81612f72565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613011602983612607565b915061301c82612fb5565b604082019050919050565b6000602082019050818103600083015261304081613004565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006130a3603183612607565b91506130ae82613047565b604082019050919050565b600060208201905081810360008301526130d281613096565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b600061310f600e83612607565b915061311a826130d9565b602082019050919050565b6000602082019050818103600083015261313e81613102565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b600061317b601e83612607565b915061318682613145565b602082019050919050565b600060208201905081810360008301526131aa8161316e565b9050919050565b60006131bc82612573565b91506131c783612573565b92508282019050808211156131df576131de612ab2565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061321b601183612607565b9150613226826131e5565b602082019050919050565b6000602082019050818103600083015261324a8161320e565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506132be816126e0565b92915050565b6000602082840312156132da576132d961256e565b5b60006132e8848285016132af565b91505092915050565b6000819050919050565b600061331661331161330c846132f1565b612cbf565b612573565b9050919050565b613326816132fb565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613361816126ce565b82525050565b60006133738383613358565b60208301905092915050565b6000602082019050919050565b60006133978261332c565b6133a18185613337565b93506133ac83613348565b8060005b838110156133dd5781516133c48882613367565b97506133cf8361337f565b9250506001810190506133b0565b5085935050505092915050565b600060a0820190506133ff6000830188612782565b61340c602083018761331d565b818103604083015261341e818661338c565b905061342d60608301856128cf565b61343a6080830184612782565b9695505050505050565b600060c08201905061345960008301896128cf565b6134666020830188612782565b613473604083018761331d565b613480606083018661331d565b61348d60808301856128cf565b61349a60a0830184612782565b979650505050505050565b6000815190506134b48161257d565b92915050565b6000806000606084860312156134d3576134d261256e565b5b60006134e1868287016134a5565b93505060206134f2868287016134a5565b9250506040613503868287016134a5565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212203c45a92fcfb1222cd43e8afed7ce37bf559bb54b5bbaf7d0cf260597b5fd57fe64736f6c63430008100033

Deployed Bytecode Sourcemap

4717:11978:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14474:316;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7100:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8220:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8359:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8736:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16038:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7323:67;;;;;;;;;;;;;:::i;:::-;;3097:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7250:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10540:584;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5286:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8106:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7480:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8497:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8617:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7396:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8001:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7173:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5404:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7589:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7734:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10004:528;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3190:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14474:316;3056:19;3064:10;3056:7;:19::i;:::-;3048:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14617:11:::1;14604:10;:24;;;;14646:53;14691:6;14646:32;14663:14;14646:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;14630:13;:69;;;;14728:54;14774:6;14728:33;14745:15;14728:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;14711:14;:71;;;;14474:316:::0;;;:::o;7100:67::-;7137:13;7160:5;;;;;;;;;;;;;;;;;7153:12;;7100:67;:::o;8220:133::-;8295:4;8302:37;8311:10;8323:7;8332:6;8302:8;:37::i;:::-;8347:4;8340:11;;8220:133;;;;:::o;8359:132::-;8412:7;8429:60;8467:21;8485:1;8467:9;:21::i;:::-;8429:33;8446:15;6155:42;8446:9;:15::i;:::-;8429:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8422:67;;8359:132;:::o;8736:119::-;8787:7;8842:11;;8820:19;;8804:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8797:56;;8736:119;:::o;16038:309::-;16136:4;16153:36;16163:6;16171:9;16182:6;16153:9;:36::i;:::-;16200:117;16209:6;16217:10;16229:87;16265:6;16229:87;;;;;;;;;;;;;;;;;:11;:19;16241:6;16229:19;;;;;;;;;;;;;;;:31;16249:10;16229:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;16200:8;:117::i;:::-;16335:4;16328:11;;16038:309;;;;;:::o;7323:67::-;3056:19;3064:10;3056:7;:19::i;:::-;3048:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7384:4:::1;7367:14;;:21;;;;;;;;;;;;;;;;;;7323:67::o:0;3097:87::-;3152:4;3177:5;;;;;;;;;;;3166:16;;:7;:16;;;3159:23;;3097:87;;;:::o;7250:67::-;7291:5;4932:1;7299:16;;7250:67;:::o;10540:584::-;3056:19;3064:10;3056:7;:19::i;:::-;3048:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10640:13:::1;10681:5;10673:4;10657:13;:11;:13::i;:::-;:20;;;;:::i;:::-;10656:30;;;;:::i;:::-;10640:46;;10697:19;10746:5;10736:6;10720:13;:11;:13::i;:::-;:22;;;;:::i;:::-;10719:32;;;;:::i;:::-;10697:54;;10762:17;10810:5;10799:7;10783:13;:11;:13::i;:::-;:23;;;;:::i;:::-;10782:33;;;;:::i;:::-;10762:53;;10848:4;10826:19;:26;;;;10885:6;10863:19;:28;;;;10922:7;10902:17;:27;;;;10940:13;10956:30;10981:4;10956:20;10974:1;10956:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;10940:46;;11014:5;11005;:14;;:38;;;;;11038:5;11023:11;:20;;11005:38;:60;;;;;11060:5;11047:9;:18;;11005:60;10997:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;10629:495;;;;10540:584:::0;;;:::o;5286:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8106:108::-;3056:19;3064:10;3056:7;:19::i;:::-;3048:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8204:8:::1;8180:11;:21;8192:8;8180:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8106:108:::0;;:::o;7480:103::-;7546:7;7563:9;:18;7573:7;7563:18;;;;;;;;;;;;;;;;7556:25;;7480:103;;;:::o;8497:114::-;8545:7;8598:11;;8578:17;;8562:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;8555:54;;8497:114;:::o;8617:113::-;8662:7;8717:11;;8695:19;;8679:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;8672:56;;8617:113;:::o;7396:78::-;7448:7;7466:5;;;;;;;;;;;7459:12;;7396:78;:::o;8001:99::-;3056:19;3064:10;3056:7;:19::i;:::-;3048:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8090:8:::1;8072:5;:15;8078:8;8072:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;8001:99:::0;;:::o;7173:71::-;7212:13;7235:7;;;;;;;;;;;;;;;;;7228:14;;7173:71;:::o;5404:19::-;;;;;;;;;;;;;:::o;7589:139::-;7667:4;7674:40;7684:10;7696:9;7707:6;7674:9;:40::i;:::-;7722:4;7715:11;;7589:139;;;;:::o;7734:127::-;7815:7;7832:11;:18;7844:5;7832:18;;;;;;;;;;;;;;;:27;7851:7;7832:27;;;;;;;;;;;;;;;;7825:34;;7734:127;;;;:::o;10004:528::-;3056:19;3064:10;3056:7;:19::i;:::-;3048:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10196:10:::1;10181:12;:25;;;;10232:10;10217:12;:25;;;;10263:5;10253:7;:15;;;;10296:12;10279:14;:29;;;;10330:6;10319:8;:17;;;;10357:5;10347:7;:15;;;;10387:6;10373:11;:20;;;;10424:18;10440:1;10424:11;;:15;;:18;;;;:::i;:::-;10412:8;;:30;;:63;;;;;10457:18;10473:1;10457:11;;:15;;:18;;;;:::i;:::-;10446:7;;:29;;10412:63;10404:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;10004:528:::0;;;;;;;:::o;3190:111::-;3056:19;3064:10;3056:7;:19::i;:::-;3048:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3264:3:::1;3256:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3274:25;3295:3;3274:25;;;;;;:::i;:::-;;;;;;;;3190:111:::0;:::o;371:82::-;429:7;450:1;446;:5;;;;:::i;:::-;439:12;;371:82;;;;:::o;459:::-;517:7;538:1;534;:5;;;;:::i;:::-;527:12;;459:82;;;;:::o;16355:335::-;16465:1;16448:19;;:5;:19;;;16440:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16546:1;16527:21;;:7;:21;;;16519:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16628:6;16598:11;:18;16610:5;16598:18;;;;;;;;;;;;;;;:27;16617:7;16598:27;;;;;;;;;;;;;;;:36;;;;16666:7;16650:32;;16659:5;16650:32;;;16675:6;16650:32;;;;;;:::i;:::-;;;;;;;;16355:335;;;:::o;283:82::-;341:7;362:1;358;:5;;;;:::i;:::-;351:12;;283:82;;;;:::o;9310:686::-;9399:37;9410:6;9418:9;9429:6;9399:10;:37::i;:::-;9447:38;9467:6;9475:9;9447:19;:38::i;:::-;9496:41;9511:6;9519:9;9530:6;9496:14;:41::i;:::-;9549:35;9566:6;9574:9;9549:16;:35::i;:::-;9595:39;9608:6;9616:9;9627:6;9595:12;:39::i;:::-;9646:35;9655:6;9663:9;9674:6;9646:8;:35::i;:::-;9712:29;9734:6;9712:9;:17;9722:6;9712:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;9692:9;:17;9702:6;9692:17;;;;;;;;;;;;;;;:49;;;;9752:22;9777:32;9791:6;9799:9;9777:13;:32::i;:::-;:78;;9849:6;9777:78;;;9812:34;9820:6;9828:9;9839:6;9812:7;:34::i;:::-;9777:78;9752:103;;9889:40;9914:14;9889:9;:20;9899:9;9889:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;9866:9;:20;9876:9;9866:20;;;;;;;;;;;;;;;:63;;;;9962:9;9945:43;;9954:6;9945:43;;;9973:14;9945:43;;;;;;:::i;:::-;;;;;;;;9388:608;9310:686;;;:::o;1496:162::-;1582:7;1625:1;1620;:6;;1628:12;1612:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1654:1;1650;:5;1643:12;;1496:162;;;;;:::o;8863:439::-;8985:1;8967:20;;:6;:20;;;8959:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9069:1;9048:23;;:9;:23;;;9040:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;9147:1;9130:6;:19;9122:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;9224:17;9234:6;9224:9;:17::i;:::-;9214:6;:27;;9206:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;8863:439;;;:::o;11132:191::-;11225:11;:19;11237:6;11225:19;;;;;;;;;;;;;;;;;;;;;;;;;11224:20;:47;;;;;11249:11;:22;11261:9;11249:22;;;;;;;;;;;;;;;;;;;;;;;;;11248:23;11224:47;11221:95;;;11281:14;;;;;;;;;;;11273:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11221:95;11132:191;;:::o;11335:333::-;11439:11;:19;11451:6;11439:19;;;;;;;;;;;;;;;;;;;;;;;;;11438:20;:47;;;;;11463:11;:22;11475:9;11463:22;;;;;;;;;;;;;;;;;;;;;;;;;11462:23;11438:47;:77;;;;;11510:4;;;;;;;;;;;11489:26;;:9;:26;;;;11438:77;:107;;;;;6155:42;11519:26;;:9;:26;;;;11438:107;11435:226;;;11607:17;:15;:17::i;:::-;11570:32;11595:6;11570:9;:20;11580:9;11570:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11569:55;;11561:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11435:226;11335:333;;;:::o;11676:159::-;11773:4;;;;;;;;;;;11760:17;;:9;:17;;;:41;;;;;11782:11;:19;11794:6;11782:19;;;;;;;;;;;;;;;;;;;;;;;;;11781:20;11760:41;11757:71;;;11824:1;11803:9;;:23;;;;;;;:::i;:::-;;;;;;;;11757:71;11676:159;;:::o;11843:349::-;11954:4;;;;;;;;;;;11944:14;;:6;:14;;;11941:130;;11978:20;:18;:20::i;:::-;11968:6;:30;;:53;;;;12002:11;:19;12014:6;12002:19;;;;;;;;;;;;;;;;;;;;;;;;;11968:53;:79;;;;12025:11;:22;12037:9;12025:22;;;;;;;;;;;;;;;;;;;;;;;;;11968:79;11960:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;11941:130;12099:14;:12;:14::i;:::-;12089:6;:24;;:47;;;;12117:11;:19;12129:6;12117:19;;;;;;;;;;;;;;;;;;;;;;;;;12089:47;:73;;;;12140:11;:22;12152:9;12140:22;;;;;;;;;;;;;;;;;;;;;;;;;12089:73;12081:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;11843:349;;;:::o;14798:197::-;14890:41;14905:6;14913:9;14924:6;14890:14;:41::i;:::-;14887:101;;;14933:29;14948:13;;14933:14;:29::i;:::-;14984:1;14964:9;:22;;;;14887:101;14798:197;;;:::o;15003:160::-;15084:4;15109:11;:19;15121:6;15109:19;;;;;;;;;;;;;;;;;;;;;;;;;15108:20;:47;;;;;15133:11;:22;15145:9;15133:22;;;;;;;;;;;;;;;;;;;;;;;;;15132:23;15108:47;15101:54;;15003:160;;;;:::o;15484:546::-;15570:7;15626:1;15593:30;15605:6;15613:9;15593:11;:30::i;:::-;:34;15590:418;;;15639:17;15659:59;15687:30;15699:6;15707:9;15687:11;:30::i;:::-;15659:23;15670:11;;15659:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15639:79;;15756:39;15785:9;15756;:24;15774:4;15756:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15729:9;:24;15747:4;15729:24;;;;;;;;;;;;;;;:66;;;;15836:4;15811:42;;15820:6;15811:42;;;15843:9;15811:42;;;;;;:::i;:::-;;;;;;;;15885:1;15867:7;;:20;15864:104;;;15889:77;15907:4;6155:42;15929:36;15957:7;;15929:23;15940:11;;15929:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;15889:9;:77::i;:::-;15864:104;15985:21;15996:9;15985:6;:10;;:21;;;;:::i;:::-;15978:28;;;;;15590:418;16016:6;16009:13;;15484:546;;;;;;:::o;195:82::-;253:7;274:1;270;:5;;;;:::i;:::-;263:12;;195:82;;;;:::o;14067:399::-;14165:4;14182:13;14208:14;;14198:6;:24;;14182:40;;14233:19;14283:13;;14255:24;14273:4;14255:9;:24::i;:::-;:41;;14233:63;;14315:8;;;;;;;;;;;14314:9;:24;;;;;14327:11;;;;;;;;;;;14314:24;:42;;;;;14342:14;;;;;;;;;;;14314:42;:54;;;;;14360:8;14314:54;:78;;;;;14373:11;:19;14385:6;14373:19;;;;;;;;;;;;;;;;;;;;;;;;;14372:20;14314:78;:99;;;;;14409:4;;;;;;;;;;;14396:17;;:9;:17;;;14314:99;:126;;;;;14430:10;;14417:9;;:23;;14314:126;:144;;;;;14444:14;14314:144;14307:151;;;;14067:399;;;;;:::o;12200:1066::-;6087:4;6076:8;;:15;;;;;;;;;;;;;;;;;;12271:20:::1;12294:66;12358:1;12295:57;12337:14;;12295:37;12319:12;;12295:19;12312:1;12295:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;12294:63;;:66;;;;:::i;:::-;12271:89;;12371:32;12406:42;12435:12;12406:24;12417:12;;12406:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;12371:77;;12459:14;12476:36;12487:24;12476:6;:10;;:36;;;;:::i;:::-;12459:53;;12523:22;12548:21;12523:46;;12580:24;12597:6;12580:16;:24::i;:::-;12615:20;12638:41;12664:14;12638:21;:25;;:41;;;;:::i;:::-;12615:64;;12690:19;12711:48;12728:30;12745:12;;12728;:16;;:30;;;;:::i;:::-;12711:12;:16;;:48;;;;:::i;:::-;12690:69;;12770:29;12802;12818:12;;12802:11;:15;;:29;;;;:::i;:::-;12770:61;;12877:1;12845:21;:34;12842:103;;;12881:61;12894:24;12920:21;12881:12;:61::i;:::-;12842:103;12955:20;12978:36;13001:12;;12978:18;12994:1;12978:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;12955:59;;13043:1;13028:12;:16;13025:73;;;6350:42;13046:36;;:50;13083:12;13046:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13025:73;13108:24;13135:21;13108:48;;13197:1;13170:16;:29;13167:92;;;6253:42;13201:38;;:56;13240:16;13201:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13167:92;12260:1006;;;;;;;;;6107:5:::0;6096:8;;:16;;;;;;;;;;;;;;;;;;12200:1066;:::o;15171:305::-;15250:7;15273:5;:13;15279:6;15273:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;15290:5;:16;15296:9;15290:16;;;;;;;;;;;;;;;;;;;;;;;;;15273:33;15270:76;;;15315:29;15339:3;15315:11;;:15;;:29;;;;:::i;:::-;15308:36;;;;15270:76;15372:4;;;;;;;;;;;15359:17;;:9;:17;;;15356:38;;15385:7;;15378:14;;;;15356:38;15417:4;;;;;;;;;;;15407:14;;:6;:14;;;15404:36;;15430:8;;15423:15;;;;15404:36;15457:11;;15450:18;;15171:305;;;;;:::o;13625:434::-;13691:21;13729:1;13715:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13691:40;;13760:4;13742;13747:1;13742:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13786:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13776:4;13781:1;13776:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13810:53;13827:4;13842:6;;;;;;;;;;;13851:11;13810:8;:53::i;:::-;13874:6;;;;;;;;;;;:57;;;13946:11;13972:1;13988:4;14015;14035:15;13874:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13680:379;13625:434;:::o;13274:343::-;13355:53;13372:4;13387:6;;;;;;;;;;;13396:11;13355:8;:53::i;:::-;13419:6;;;;;;;;;;;:22;;;13449:9;13482:4;13502:11;13528:1;13544;6446:42;13593:15;13419:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13274:343;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:619::-;767:6;775;783;832:2;820:9;811:7;807:23;803:32;800:119;;;838:79;;:::i;:::-;800:119;958:1;983:53;1028:7;1019:6;1008:9;1004:22;983:53;:::i;:::-;973:63;;929:117;1085:2;1111:53;1156:7;1147:6;1136:9;1132:22;1111:53;:::i;:::-;1101:63;;1056:118;1213:2;1239:53;1284:7;1275:6;1264:9;1260:22;1239:53;:::i;:::-;1229:63;;1184:118;690:619;;;;;:::o;1315:99::-;1367:6;1401:5;1395:12;1385:22;;1315:99;;;:::o;1420:169::-;1504:11;1538:6;1533:3;1526:19;1578:4;1573:3;1569:14;1554:29;;1420:169;;;;:::o;1595:246::-;1676:1;1686:113;1700:6;1697:1;1694:13;1686:113;;;1785:1;1780:3;1776:11;1770:18;1766:1;1761:3;1757:11;1750:39;1722:2;1719:1;1715:10;1710:15;;1686:113;;;1833:1;1824:6;1819:3;1815:16;1808:27;1657:184;1595:246;;;:::o;1847:102::-;1888:6;1939:2;1935:7;1930:2;1923:5;1919:14;1915:28;1905:38;;1847:102;;;:::o;1955:377::-;2043:3;2071:39;2104:5;2071:39;:::i;:::-;2126:71;2190:6;2185:3;2126:71;:::i;:::-;2119:78;;2206:65;2264:6;2259:3;2252:4;2245:5;2241:16;2206:65;:::i;:::-;2296:29;2318:6;2296:29;:::i;:::-;2291:3;2287:39;2280:46;;2047:285;1955:377;;;;:::o;2338:313::-;2451:4;2489:2;2478:9;2474:18;2466:26;;2538:9;2532:4;2528:20;2524:1;2513:9;2509:17;2502:47;2566:78;2639:4;2630:6;2566:78;:::i;:::-;2558:86;;2338:313;;;;:::o;2657:126::-;2694:7;2734:42;2727:5;2723:54;2712:65;;2657:126;;;:::o;2789:96::-;2826:7;2855:24;2873:5;2855:24;:::i;:::-;2844:35;;2789:96;;;:::o;2891:122::-;2964:24;2982:5;2964:24;:::i;:::-;2957:5;2954:35;2944:63;;3003:1;3000;2993:12;2944:63;2891:122;:::o;3019:139::-;3065:5;3103:6;3090:20;3081:29;;3119:33;3146:5;3119:33;:::i;:::-;3019:139;;;;:::o;3164:474::-;3232:6;3240;3289:2;3277:9;3268:7;3264:23;3260:32;3257:119;;;3295:79;;:::i;:::-;3257:119;3415:1;3440:53;3485:7;3476:6;3465:9;3461:22;3440:53;:::i;:::-;3430:63;;3386:117;3542:2;3568:53;3613:7;3604:6;3593:9;3589:22;3568:53;:::i;:::-;3558:63;;3513:118;3164:474;;;;;:::o;3644:90::-;3678:7;3721:5;3714:13;3707:21;3696:32;;3644:90;;;:::o;3740:109::-;3821:21;3836:5;3821:21;:::i;:::-;3816:3;3809:34;3740:109;;:::o;3855:210::-;3942:4;3980:2;3969:9;3965:18;3957:26;;3993:65;4055:1;4044:9;4040:17;4031:6;3993:65;:::i;:::-;3855:210;;;;:::o;4071:118::-;4158:24;4176:5;4158:24;:::i;:::-;4153:3;4146:37;4071:118;;:::o;4195:222::-;4288:4;4326:2;4315:9;4311:18;4303:26;;4339:71;4407:1;4396:9;4392:17;4383:6;4339:71;:::i;:::-;4195:222;;;;:::o;4423:619::-;4500:6;4508;4516;4565:2;4553:9;4544:7;4540:23;4536:32;4533:119;;;4571:79;;:::i;:::-;4533:119;4691:1;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;:::i;:::-;4706:63;;4662:117;4818:2;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4789:118;4946:2;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4917:118;4423:619;;;;;:::o;5048:329::-;5107:6;5156:2;5144:9;5135:7;5131:23;5127:32;5124:119;;;5162:79;;:::i;:::-;5124:119;5282:1;5307:53;5352:7;5343:6;5332:9;5328:22;5307:53;:::i;:::-;5297:63;;5253:117;5048:329;;;;:::o;5383:86::-;5418:7;5458:4;5451:5;5447:16;5436:27;;5383:86;;;:::o;5475:112::-;5558:22;5574:5;5558:22;:::i;:::-;5553:3;5546:35;5475:112;;:::o;5593:214::-;5682:4;5720:2;5709:9;5705:18;5697:26;;5733:67;5797:1;5786:9;5782:17;5773:6;5733:67;:::i;:::-;5593:214;;;;:::o;5813:116::-;5883:21;5898:5;5883:21;:::i;:::-;5876:5;5873:32;5863:60;;5919:1;5916;5909:12;5863:60;5813:116;:::o;5935:133::-;5978:5;6016:6;6003:20;5994:29;;6032:30;6056:5;6032:30;:::i;:::-;5935:133;;;;:::o;6074:468::-;6139:6;6147;6196:2;6184:9;6175:7;6171:23;6167:32;6164:119;;;6202:79;;:::i;:::-;6164:119;6322:1;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6293:117;6449:2;6475:50;6517:7;6508:6;6497:9;6493:22;6475:50;:::i;:::-;6465:60;;6420:115;6074:468;;;;;:::o;6548:118::-;6635:24;6653:5;6635:24;:::i;:::-;6630:3;6623:37;6548:118;;:::o;6672:222::-;6765:4;6803:2;6792:9;6788:18;6780:26;;6816:71;6884:1;6873:9;6869:17;6860:6;6816:71;:::i;:::-;6672:222;;;;:::o;6900:474::-;6968:6;6976;7025:2;7013:9;7004:7;7000:23;6996:32;6993:119;;;7031:79;;:::i;:::-;6993:119;7151:1;7176:53;7221:7;7212:6;7201:9;7197:22;7176:53;:::i;:::-;7166:63;;7122:117;7278:2;7304:53;7349:7;7340:6;7329:9;7325:22;7304:53;:::i;:::-;7294:63;;7249:118;6900:474;;;;;:::o;7380:1203::-;7493:6;7501;7509;7517;7525;7533;7541;7590:3;7578:9;7569:7;7565:23;7561:33;7558:120;;;7597:79;;:::i;:::-;7558:120;7717:1;7742:53;7787:7;7778:6;7767:9;7763:22;7742:53;:::i;:::-;7732:63;;7688:117;7844:2;7870:53;7915:7;7906:6;7895:9;7891:22;7870:53;:::i;:::-;7860:63;;7815:118;7972:2;7998:53;8043:7;8034:6;8023:9;8019:22;7998:53;:::i;:::-;7988:63;;7943:118;8100:2;8126:53;8171:7;8162:6;8151:9;8147:22;8126:53;:::i;:::-;8116:63;;8071:118;8228:3;8255:53;8300:7;8291:6;8280:9;8276:22;8255:53;:::i;:::-;8245:63;;8199:119;8357:3;8384:53;8429:7;8420:6;8409:9;8405:22;8384:53;:::i;:::-;8374:63;;8328:119;8486:3;8513:53;8558:7;8549:6;8538:9;8534:22;8513:53;:::i;:::-;8503:63;;8457:119;7380:1203;;;;;;;;;;:::o;8589:104::-;8634:7;8663:24;8681:5;8663:24;:::i;:::-;8652:35;;8589:104;;;:::o;8699:138::-;8780:32;8806:5;8780:32;:::i;:::-;8773:5;8770:43;8760:71;;8827:1;8824;8817:12;8760:71;8699:138;:::o;8843:155::-;8897:5;8935:6;8922:20;8913:29;;8951:41;8986:5;8951:41;:::i;:::-;8843:155;;;;:::o;9004:345::-;9071:6;9120:2;9108:9;9099:7;9095:23;9091:32;9088:119;;;9126:79;;:::i;:::-;9088:119;9246:1;9271:61;9324:7;9315:6;9304:9;9300:22;9271:61;:::i;:::-;9261:71;;9217:125;9004:345;;;;:::o;9355:156::-;9495:8;9491:1;9483:6;9479:14;9472:32;9355:156;:::o;9517:365::-;9659:3;9680:66;9744:1;9739:3;9680:66;:::i;:::-;9673:73;;9755:93;9844:3;9755:93;:::i;:::-;9873:2;9868:3;9864:12;9857:19;;9517:365;;;:::o;9888:419::-;10054:4;10092:2;10081:9;10077:18;10069:26;;10141:9;10135:4;10131:20;10127:1;10116:9;10112:17;10105:47;10169:131;10295:4;10169:131;:::i;:::-;10161:139;;9888:419;;;:::o;10313:180::-;10361:77;10358:1;10351:88;10458:4;10455:1;10448:15;10482:4;10479:1;10472:15;10499:348;10539:7;10562:20;10580:1;10562:20;:::i;:::-;10557:25;;10596:20;10614:1;10596:20;:::i;:::-;10591:25;;10784:1;10716:66;10712:74;10709:1;10706:81;10701:1;10694:9;10687:17;10683:105;10680:131;;;10791:18;;:::i;:::-;10680:131;10839:1;10836;10832:9;10821:20;;10499:348;;;;:::o;10853:180::-;10901:77;10898:1;10891:88;10998:4;10995:1;10988:15;11022:4;11019:1;11012:15;11039:185;11079:1;11096:20;11114:1;11096:20;:::i;:::-;11091:25;;11130:20;11148:1;11130:20;:::i;:::-;11125:25;;11169:1;11159:35;;11174:18;;:::i;:::-;11159:35;11216:1;11213;11209:9;11204:14;;11039:185;;;;:::o;11230:233::-;11370:34;11366:1;11358:6;11354:14;11347:58;11439:16;11434:2;11426:6;11422:15;11415:41;11230:233;:::o;11469:366::-;11611:3;11632:67;11696:2;11691:3;11632:67;:::i;:::-;11625:74;;11708:93;11797:3;11708:93;:::i;:::-;11826:2;11821:3;11817:12;11810:19;;11469:366;;;:::o;11841:419::-;12007:4;12045:2;12034:9;12030:18;12022:26;;12094:9;12088:4;12084:20;12080:1;12069:9;12065:17;12058:47;12122:131;12248:4;12122:131;:::i;:::-;12114:139;;11841:419;;;:::o;12266:231::-;12406:34;12402:1;12394:6;12390:14;12383:58;12475:14;12470:2;12462:6;12458:15;12451:39;12266:231;:::o;12503:366::-;12645:3;12666:67;12730:2;12725:3;12666:67;:::i;:::-;12659:74;;12742:93;12831:3;12742:93;:::i;:::-;12860:2;12855:3;12851:12;12844:19;;12503:366;;;:::o;12875:419::-;13041:4;13079:2;13068:9;13064:18;13056:26;;13128:9;13122:4;13118:20;13114:1;13103:9;13099:17;13092:47;13156:131;13282:4;13156:131;:::i;:::-;13148:139;;12875:419;;;:::o;13300:60::-;13328:3;13349:5;13342:12;;13300:60;;;:::o;13366:142::-;13416:9;13449:53;13467:34;13476:24;13494:5;13476:24;:::i;:::-;13467:34;:::i;:::-;13449:53;:::i;:::-;13436:66;;13366:142;;;:::o;13514:126::-;13564:9;13597:37;13628:5;13597:37;:::i;:::-;13584:50;;13514:126;;;:::o;13646:134::-;13704:9;13737:37;13768:5;13737:37;:::i;:::-;13724:50;;13646:134;;;:::o;13786:147::-;13881:45;13920:5;13881:45;:::i;:::-;13876:3;13869:58;13786:147;;:::o;13939:238::-;14040:4;14078:2;14067:9;14063:18;14055:26;;14091:79;14167:1;14156:9;14152:17;14143:6;14091:79;:::i;:::-;13939:238;;;;:::o;14183:223::-;14323:34;14319:1;14311:6;14307:14;14300:58;14392:6;14387:2;14379:6;14375:15;14368:31;14183:223;:::o;14412:366::-;14554:3;14575:67;14639:2;14634:3;14575:67;:::i;:::-;14568:74;;14651:93;14740:3;14651:93;:::i;:::-;14769:2;14764:3;14760:12;14753:19;;14412:366;;;:::o;14784:419::-;14950:4;14988:2;14977:9;14973:18;14965:26;;15037:9;15031:4;15027:20;15023:1;15012:9;15008:17;15001:47;15065:131;15191:4;15065:131;:::i;:::-;15057:139;;14784:419;;;:::o;15209:221::-;15349:34;15345:1;15337:6;15333:14;15326:58;15418:4;15413:2;15405:6;15401:15;15394:29;15209:221;:::o;15436:366::-;15578:3;15599:67;15663:2;15658:3;15599:67;:::i;:::-;15592:74;;15675:93;15764:3;15675:93;:::i;:::-;15793:2;15788:3;15784:12;15777:19;;15436:366;;;:::o;15808:419::-;15974:4;16012:2;16001:9;15997:18;15989:26;;16061:9;16055:4;16051:20;16047:1;16036:9;16032:17;16025:47;16089:131;16215:4;16089:131;:::i;:::-;16081:139;;15808:419;;;:::o;16233:194::-;16273:4;16293:20;16311:1;16293:20;:::i;:::-;16288:25;;16327:20;16345:1;16327:20;:::i;:::-;16322:25;;16371:1;16368;16364:9;16356:17;;16395:1;16389:4;16386:11;16383:37;;;16400:18;;:::i;:::-;16383:37;16233:194;;;;:::o;16433:224::-;16573:34;16569:1;16561:6;16557:14;16550:58;16642:7;16637:2;16629:6;16625:15;16618:32;16433:224;:::o;16663:366::-;16805:3;16826:67;16890:2;16885:3;16826:67;:::i;:::-;16819:74;;16902:93;16991:3;16902:93;:::i;:::-;17020:2;17015:3;17011:12;17004:19;;16663:366;;;:::o;17035:419::-;17201:4;17239:2;17228:9;17224:18;17216:26;;17288:9;17282:4;17278:20;17274:1;17263:9;17259:17;17252:47;17316:131;17442:4;17316:131;:::i;:::-;17308:139;;17035:419;;;:::o;17460:222::-;17600:34;17596:1;17588:6;17584:14;17577:58;17669:5;17664:2;17656:6;17652:15;17645:30;17460:222;:::o;17688:366::-;17830:3;17851:67;17915:2;17910:3;17851:67;:::i;:::-;17844:74;;17927:93;18016:3;17927:93;:::i;:::-;18045:2;18040:3;18036:12;18029:19;;17688:366;;;:::o;18060:419::-;18226:4;18264:2;18253:9;18249:18;18241:26;;18313:9;18307:4;18303:20;18299:1;18288:9;18284:17;18277:47;18341:131;18467:4;18341:131;:::i;:::-;18333:139;;18060:419;;;:::o;18485:228::-;18625:34;18621:1;18613:6;18609:14;18602:58;18694:11;18689:2;18681:6;18677:15;18670:36;18485:228;:::o;18719:366::-;18861:3;18882:67;18946:2;18941:3;18882:67;:::i;:::-;18875:74;;18958:93;19047:3;18958:93;:::i;:::-;19076:2;19071:3;19067:12;19060:19;;18719:366;;;:::o;19091:419::-;19257:4;19295:2;19284:9;19280:18;19272:26;;19344:9;19338:4;19334:20;19330:1;19319:9;19315:17;19308:47;19372:131;19498:4;19372:131;:::i;:::-;19364:139;;19091:419;;;:::o;19516:236::-;19656:34;19652:1;19644:6;19640:14;19633:58;19725:19;19720:2;19712:6;19708:15;19701:44;19516:236;:::o;19758:366::-;19900:3;19921:67;19985:2;19980:3;19921:67;:::i;:::-;19914:74;;19997:93;20086:3;19997:93;:::i;:::-;20115:2;20110:3;20106:12;20099:19;;19758:366;;;:::o;20130:419::-;20296:4;20334:2;20323:9;20319:18;20311:26;;20383:9;20377:4;20373:20;20369:1;20358:9;20354:17;20347:47;20411:131;20537:4;20411:131;:::i;:::-;20403:139;;20130:419;;;:::o;20555:164::-;20695:16;20691:1;20683:6;20679:14;20672:40;20555:164;:::o;20725:366::-;20867:3;20888:67;20952:2;20947:3;20888:67;:::i;:::-;20881:74;;20964:93;21053:3;20964:93;:::i;:::-;21082:2;21077:3;21073:12;21066:19;;20725:366;;;:::o;21097:419::-;21263:4;21301:2;21290:9;21286:18;21278:26;;21350:9;21344:4;21340:20;21336:1;21325:9;21321:17;21314:47;21378:131;21504:4;21378:131;:::i;:::-;21370:139;;21097:419;;;:::o;21522:180::-;21662:32;21658:1;21650:6;21646:14;21639:56;21522:180;:::o;21708:366::-;21850:3;21871:67;21935:2;21930:3;21871:67;:::i;:::-;21864:74;;21947:93;22036:3;21947:93;:::i;:::-;22065:2;22060:3;22056:12;22049:19;;21708:366;;;:::o;22080:419::-;22246:4;22284:2;22273:9;22269:18;22261:26;;22333:9;22327:4;22323:20;22319:1;22308:9;22304:17;22297:47;22361:131;22487:4;22361:131;:::i;:::-;22353:139;;22080:419;;;:::o;22505:191::-;22545:3;22564:20;22582:1;22564:20;:::i;:::-;22559:25;;22598:20;22616:1;22598:20;:::i;:::-;22593:25;;22641:1;22638;22634:9;22627:16;;22662:3;22659:1;22656:10;22653:36;;;22669:18;;:::i;:::-;22653:36;22505:191;;;;:::o;22702:167::-;22842:19;22838:1;22830:6;22826:14;22819:43;22702:167;:::o;22875:366::-;23017:3;23038:67;23102:2;23097:3;23038:67;:::i;:::-;23031:74;;23114:93;23203:3;23114:93;:::i;:::-;23232:2;23227:3;23223:12;23216:19;;22875:366;;;:::o;23247:419::-;23413:4;23451:2;23440:9;23436:18;23428:26;;23500:9;23494:4;23490:20;23486:1;23475:9;23471:17;23464:47;23528:131;23654:4;23528:131;:::i;:::-;23520:139;;23247:419;;;:::o;23672:180::-;23720:77;23717:1;23710:88;23817:4;23814:1;23807:15;23841:4;23838:1;23831:15;23858:180;23906:77;23903:1;23896:88;24003:4;24000:1;23993:15;24027:4;24024:1;24017:15;24044:143;24101:5;24132:6;24126:13;24117:22;;24148:33;24175:5;24148:33;:::i;:::-;24044:143;;;;:::o;24193:351::-;24263:6;24312:2;24300:9;24291:7;24287:23;24283:32;24280:119;;;24318:79;;:::i;:::-;24280:119;24438:1;24463:64;24519:7;24510:6;24499:9;24495:22;24463:64;:::i;:::-;24453:74;;24409:128;24193:351;;;;:::o;24550:85::-;24595:7;24624:5;24613:16;;24550:85;;;:::o;24641:158::-;24699:9;24732:61;24750:42;24759:32;24785:5;24759:32;:::i;:::-;24750:42;:::i;:::-;24732:61;:::i;:::-;24719:74;;24641:158;;;:::o;24805:147::-;24900:45;24939:5;24900:45;:::i;:::-;24895:3;24888:58;24805:147;;:::o;24958:114::-;25025:6;25059:5;25053:12;25043:22;;24958:114;;;:::o;25078:184::-;25177:11;25211:6;25206:3;25199:19;25251:4;25246:3;25242:14;25227:29;;25078:184;;;;:::o;25268:132::-;25335:4;25358:3;25350:11;;25388:4;25383:3;25379:14;25371:22;;25268:132;;;:::o;25406:108::-;25483:24;25501:5;25483:24;:::i;:::-;25478:3;25471:37;25406:108;;:::o;25520:179::-;25589:10;25610:46;25652:3;25644:6;25610:46;:::i;:::-;25688:4;25683:3;25679:14;25665:28;;25520:179;;;;:::o;25705:113::-;25775:4;25807;25802:3;25798:14;25790:22;;25705:113;;;:::o;25854:732::-;25973:3;26002:54;26050:5;26002:54;:::i;:::-;26072:86;26151:6;26146:3;26072:86;:::i;:::-;26065:93;;26182:56;26232:5;26182:56;:::i;:::-;26261:7;26292:1;26277:284;26302:6;26299:1;26296:13;26277:284;;;26378:6;26372:13;26405:63;26464:3;26449:13;26405:63;:::i;:::-;26398:70;;26491:60;26544:6;26491:60;:::i;:::-;26481:70;;26337:224;26324:1;26321;26317:9;26312:14;;26277:284;;;26281:14;26577:3;26570:10;;25978:608;;;25854:732;;;;:::o;26592:831::-;26855:4;26893:3;26882:9;26878:19;26870:27;;26907:71;26975:1;26964:9;26960:17;26951:6;26907:71;:::i;:::-;26988:80;27064:2;27053:9;27049:18;27040:6;26988:80;:::i;:::-;27115:9;27109:4;27105:20;27100:2;27089:9;27085:18;27078:48;27143:108;27246:4;27237:6;27143:108;:::i;:::-;27135:116;;27261:72;27329:2;27318:9;27314:18;27305:6;27261:72;:::i;:::-;27343:73;27411:3;27400:9;27396:19;27387:6;27343:73;:::i;:::-;26592:831;;;;;;;;:::o;27429:807::-;27678:4;27716:3;27705:9;27701:19;27693:27;;27730:71;27798:1;27787:9;27783:17;27774:6;27730:71;:::i;:::-;27811:72;27879:2;27868:9;27864:18;27855:6;27811:72;:::i;:::-;27893:80;27969:2;27958:9;27954:18;27945:6;27893:80;:::i;:::-;27983;28059:2;28048:9;28044:18;28035:6;27983:80;:::i;:::-;28073:73;28141:3;28130:9;28126:19;28117:6;28073:73;:::i;:::-;28156;28224:3;28213:9;28209:19;28200:6;28156:73;:::i;:::-;27429:807;;;;;;;;;:::o;28242:143::-;28299:5;28330:6;28324:13;28315:22;;28346:33;28373:5;28346:33;:::i;:::-;28242:143;;;;:::o;28391:663::-;28479:6;28487;28495;28544:2;28532:9;28523:7;28519:23;28515:32;28512:119;;;28550:79;;:::i;:::-;28512:119;28670:1;28695:64;28751:7;28742:6;28731:9;28727:22;28695:64;:::i;:::-;28685:74;;28641:128;28808:2;28834:64;28890:7;28881:6;28870:9;28866:22;28834:64;:::i;:::-;28824:74;;28779:129;28947:2;28973:64;29029:7;29020:6;29009:9;29005:22;28973:64;:::i;:::-;28963:74;;28918:129;28391:663;;;;;:::o

Swarm Source

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