ETH Price: $2,671.07 (+0.64%)
Gas: 22 Gwei

Token

Bidenomics ($Bidenomics)
 

Overview

Max Total Supply

9,900,000,000 $Bidenomics

Holders

114

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.023749541 $Bidenomics

Value
$0.00
0xf639d8f4a90d799a42c114867d5f0e39a35536e7
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:
Bidenomics

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-18
*/

/*
https://www.bidenomics.money/
https://t.me/BidenomicsERC
https://twitter.com/BidenomicsERC 
https://medium.com/@bidenomicserc
*/

// SPDX-License-Identifier: MIT

pragma solidity 0.8.19;


library SafeMath {

    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 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 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 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 totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}

abstract contract Ownable {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

contract Bidenomics is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Bidenomics';
    string private constant _symbol = '$Bidenomics';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 10000000000 * (10 ** _decimals);
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping;
    uint256 swapAmount = 4;
    uint256 private swapThreshold = ( _totalSupply * 1000 ) / 100000;
    uint256 private minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 2000;
    uint256 private sellFee = 3000;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x41ffF8BCe8aF09FA476307c988564d90E6A2B046; 
    address internal marketing_receiver = 0x41ffF8BCe8aF09FA476307c988564d90E6A2B046;
    address internal liquidity_receiver = 0x41ffF8BCe8aF09FA476307c988564d90E6A2B046;
    uint256 public _maxTxAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxSellAmount = ( _totalSupply * 200 ) / 10000;
    uint256 public _maxWalletToken = ( _totalSupply * 200 ) / 10000;

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

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function totalSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}

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

    function setContractSwapSettings(uint256 _swapAmount, uint256 _swapThreshold, uint256 _minTokenAmount) external onlyOwner {
        swapAmount = _swapAmount; swapThreshold = _totalSupply.mul(_swapThreshold).div(uint256(100000)); 
        minTokenAmount = _totalSupply.mul(_minTokenAmount).div(uint256(100000));
    }

    function setTransactionRequirements(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity; marketingFee = _marketing; burnFee = _burn; developmentFee = _development; totalFee = _total; sellFee = _sell; transferFee = _trans;
    }

    function setTransactionLimits(uint256 _buy, uint256 _sell, uint256 _wallet) external onlyOwner {
        uint256 newTx = _totalSupply.mul(_buy).div(10000); uint256 newTransfer = _totalSupply.mul(_sell).div(10000); uint256 newWallet = _totalSupply.mul(_wallet).div(10000);
        _maxTxAmount = newTx; _maxSellAmount = newTransfer; _maxWalletToken = newWallet;
        uint256 limit = totalSupply().mul(5).div(1000);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }

    function setInternalAddresses(address _marketing, address _liquidity, address _development) external onlyOwner {
        marketing_receiver = _marketing; liquidity_receiver = _liquidity; development_receiver = _development;
        isFeeExempt[_marketing] = true; isFeeExempt[_liquidity] = true; isFeeExempt[_development] = true;
    }

    function setisBot(address[] calldata addresses, bool _enabled) external onlyOwner {
        for(uint i=0; i < addresses.length; i++){
        isBot[addresses[i]] = _enabled; }
    }

    function manualSwap() external onlyOwner {
        uint256 amount = balanceOf(address(this));
        if(amount > swapThreshold){amount = swapThreshold;}
        swapAndLiquify(amount);
    }

    function rescueERC20(address _address, uint256 percent) external onlyOwner {
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(development_receiver, _amount);
    }

    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 contractBalance = address(this).balance;
        if(contractBalance > uint256(0)){payable(development_receiver).transfer(contractBalance);}
    }

    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 shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }

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

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

    function _transfer(address sender, address recipient, uint256 amount) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
        require((_balances[recipient].add(amount)) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
        if(sender != pair){require(amount <= _maxSellAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded"); 
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
        if(shouldContractSwap(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapAmount","type":"uint256"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_minTokenAmount","type":"uint256"}],"name":"setContractSwapSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_marketing","type":"address"},{"internalType":"address","name":"_liquidity","type":"address"},{"internalType":"address","name":"_development","type":"address"}],"name":"setInternalAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setTransactionLimits","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":"setTransactionRequirements","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a62000014919062000904565b6402540be40062000026919062000955565b6001556000600760146101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055506004600a55620186a06103e86001546200007a919062000955565b620000869190620009cf565b600b55620186a0600a6001546200009e919062000955565b620000aa9190620009cf565b600c556000600d556000600e556000600f5560006010556107d0601155610bb860125560006013556127106014557341fff8bce8af09fa476307c988564d90e6a2b046601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507341fff8bce8af09fa476307c988564d90e6a2b046601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507341fff8bce8af09fa476307c988564d90e6a2b046601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061271060c8600154620001eb919062000955565b620001f79190620009cf565b60185561271060c86001546200020e919062000955565b6200021a9190620009cf565b60195561271060c860015462000231919062000955565b6200023d9190620009cf565b601a553480156200024d57600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200031d919062000a71565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000385573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ab919062000a71565b6040518363ffffffff1660e01b8152600401620003ca92919062000ab4565b6020604051808303816000875af1158015620003ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000410919062000a71565b905081600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516200075a919062000af2565b60405180910390a3505062000b0f565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007f857808604811115620007d057620007cf6200076a565b5b6001851615620007e05780820291505b8081029050620007f08562000799565b9450620007b0565b94509492505050565b600082620008135760019050620008e6565b81620008235760009050620008e6565b81600181146200083c576002811462000847576200087d565b6001915050620008e6565b60ff8411156200085c576200085b6200076a565b5b8360020a9150848211156200087657620008756200076a565b5b50620008e6565b5060208310610133831016604e8410600b8410161715620008b75782820a905083811115620008b157620008b06200076a565b5b620008e6565b620008c68484846001620007a6565b92509050818404811115620008e057620008df6200076a565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200091182620008ed565b91506200091e83620008f7565b92506200094d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000801565b905092915050565b60006200096282620008ed565b91506200096f83620008ed565b92508282026200097f81620008ed565b915082820484148315176200099957620009986200076a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009dc82620008ed565b9150620009e983620008ed565b925082620009fc57620009fb620009a0565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a398262000a0c565b9050919050565b62000a4b8162000a2c565b811462000a5757600080fd5b50565b60008151905062000a6b8162000a40565b92915050565b60006020828403121562000a8a5762000a8962000a07565b5b600062000a9a8482850162000a5a565b91505092915050565b62000aae8162000a2c565b82525050565b600060408201905062000acb600083018562000aa3565b62000ada602083018462000aa3565b9392505050565b62000aec81620008ed565b82525050565b600060208201905062000b09600083018462000ae1565b92915050565b613a018062000b1f6000396000f3fe6080604052600436106101855760003560e01c80637cca52fe116100d15780639cc353511161008a578063a9059cbb11610064578063a9059cbb14610569578063cb7f97d7146105a6578063dd62ed3e146105cf578063f2fde38b1461060c5761018c565b80639cc35351146104ec5780639d8740cb14610515578063a8aa1b311461053e5761018c565b80637cca52fe146103ee5780637d1db4a514610419578063893d20e8146104445780638cd4426d1461046f5780639213c3581461049857806395d89b41146104c15761018c565b80632f54bf6e1161013e57806348ff2b8b1161011857806348ff2b8b1461034657806351bc3c851461036f57806370a082311461038657806378109e54146103c35761018c565b80632f54bf6e146102a1578063313ce567146102de5780633f4218e0146103095761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f9578063229b6a5e1461022457806323b872dd1461024d578063293230b81461028a5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610635565b6040516101b391906129d3565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612a93565b610672565b6040516101f09190612aee565b60405180910390f35b34801561020557600080fd5b5061020e610689565b60405161021b9190612b18565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612bc4565b6106ca565b005b34801561025957600080fd5b50610274600480360381019061026f9190612c24565b6107b7565b6040516102819190612aee565b60405180910390f35b34801561029657600080fd5b5061029f610882565b005b3480156102ad57600080fd5b506102c860048036038101906102c39190612c77565b6108e7565b6040516102d59190612aee565b60405180910390f35b3480156102ea57600080fd5b506102f3610940565b6040516103009190612cc0565b60405180910390f35b34801561031557600080fd5b50610330600480360381019061032b9190612c77565b610949565b60405161033d9190612aee565b60405180910390f35b34801561035257600080fd5b5061036d60048036038101906103689190612cdb565b610969565b005b34801561037b57600080fd5b50610384610a0c565b005b34801561039257600080fd5b506103ad60048036038101906103a89190612c77565b610a7d565b6040516103ba9190612b18565b60405180910390f35b3480156103cf57600080fd5b506103d8610ac6565b6040516103e59190612b18565b60405180910390f35b3480156103fa57600080fd5b50610403610acc565b6040516104109190612b18565b60405180910390f35b34801561042557600080fd5b5061042e610ad2565b60405161043b9190612b18565b60405180910390f35b34801561045057600080fd5b50610459610ad8565b6040516104669190612d2a565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190612a93565b610b01565b005b3480156104a457600080fd5b506104bf60048036038101906104ba9190612d45565b610c92565b005b3480156104cd57600080fd5b506104d6610eaa565b6040516104e391906129d3565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190612d98565b610ee7565b005b34801561052157600080fd5b5061053c60048036038101906105379190612d98565b611062565b005b34801561054a57600080fd5b50610553611116565b6040516105609190612d2a565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190612a93565b61113c565b60405161059d9190612aee565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190612deb565b611153565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612e8d565b6111d5565b6040516106039190612b18565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e9190612f0b565b61125c565b005b60606040518060400160405280600a81526020017f426964656e6f6d69637300000000000000000000000000000000000000000000815250905090565b600061067f33848461131e565b6001905092915050565b60006106c56106986000610a7d565b6106b76106a661dead610a7d565b6001546114e790919063ffffffff16565b6114e790919063ffffffff16565b905090565b6106d3336108e7565b610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990612f84565b60405180910390fd5b60005b838390508110156107b157816005600086868581811061073857610737612fa4565b5b905060200201602081019061074d9190612c77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107a990613002565b915050610715565b50505050565b60006107c48484846114fd565b6108778433610872856040518060600160405280602881526020016139a460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dc79092919063ffffffff16565b61131e565b600190509392505050565b61088b336108e7565b6108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c190612f84565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60046020528060005260406000206000915054906101000a900460ff1681565b610972336108e7565b6109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890612f84565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a15336108e7565b610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b90612f84565b60405180910390fd5b6000610a5f30610a7d565b9050600b54811115610a7157600b5490505b610a7a81611e1c565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b60195481565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b0a336108e7565b610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090612f84565b60405180910390fd5b6000610bea6064610bdc848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b8d9190612d2a565b602060405180830381865afa158015610baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bce919061305f565b61208990919063ffffffff16565b61209f90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610c4992919061308c565b6020604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c91906130ca565b50505050565b610c9b336108e7565b610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190612f84565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60606040518060400160405280600b81526020017f24426964656e6f6d696373000000000000000000000000000000000000000000815250905090565b610ef0336108e7565b610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2690612f84565b60405180910390fd5b6000610f5a612710610f4c8660015461208990919063ffffffff16565b61209f90919063ffffffff16565b90506000610f87612710610f798660015461208990919063ffffffff16565b61209f90919063ffffffff16565b90506000610fb4612710610fa68660015461208990919063ffffffff16565b61209f90919063ffffffff16565b9050826018819055508160198190555080601a819055506000610ffc6103e8610fee6005610fe0610689565b61208990919063ffffffff16565b61209f90919063ffffffff16565b905080841015801561100e5750808310155b801561101a5750808210155b611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090613169565b60405180910390fd5b50505050505050565b61106b336108e7565b6110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a190612f84565b60405180910390fd5b82600a819055506110db620186a06110cd8460015461208990919063ffffffff16565b61209f90919063ffffffff16565b600b8190555061110b620186a06110fd8360015461208990919063ffffffff16565b61209f90919063ffffffff16565b600c81905550505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111493384846114fd565b6001905092915050565b61115c336108e7565b61119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119290612f84565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f8190555082601181905550816012819055508060138190555050505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611265336108e7565b6112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90612f84565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161131391906131e8565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361138d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138490613275565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390613307565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114da9190612b18565b60405180910390a3505050565b600081836114f59190613327565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361156c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611563906133cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d29061345f565b60405180910390fd5b6115e483610a7d565b811115611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906134f1565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116ca5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561171f57600760149054906101000a900460ff1661171e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117159061355d565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117c35750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561181d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611857575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118f357601a546118b182600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b11156118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e9906135c9565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a3657601954811115806119a25750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119f65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c90613635565b60405180910390fd5b5b60185481111580611a905750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ae45750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a90613635565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611bca5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bea57600160086000828254611be29190613655565b925050819055505b611bf58383836120cb565b15611c0e57611c05600b54611e1c565b60006008819055505b611c6081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114e790919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611caf8484612205565b611cb95781611cc5565b611cc48484846122b3565b5b9050611d1981600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db99190612b18565b60405180910390a350505050565b6000838311158290611e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0691906129d3565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff0219169083151502179055506000611e8a6002611e7c600f54611e6e600e54611e606001600d546120b590919063ffffffff16565b6120b590919063ffffffff16565b6120b590919063ffffffff16565b61208990919063ffffffff16565b90506000611eb582611ea7600d548661208990919063ffffffff16565b61209f90919063ffffffff16565b90506000611ecc82856114e790919063ffffffff16565b90506000479050611edc82612471565b6000611ef182476114e790919063ffffffff16565b90506000611f1c611f0d600d54886114e790919063ffffffff16565b8361209f90919063ffffffff16565b90506000611f35600d548361208990919063ffffffff16565b90506000811115611f4b57611f4a86826126b4565b5b6000611f75600e54611f6760028661208990919063ffffffff16565b61208990919063ffffffff16565b90506000811115611fea57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fe8573d6000803e3d6000fd5b505b6000479050600081111561206257601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612060573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b600081836120979190613689565b905092915050565b600081836120ad91906136fa565b905092915050565b600081836120c39190613655565b905092915050565b600080600c5483101590506000600b546120e430610a7d565b10159050600960009054906101000a900460ff161580156121115750600760159054906101000a900460ff165b80156121295750600760149054906101000a900460ff165b80156121325750815b80156121885750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121e15750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156121f15750600a5460085410155b80156121fa5750805b925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122ab5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806122c085856127b4565b11156124665760006122f86122d586866127b4565b6122ea6014548661209f90919063ffffffff16565b61208990919063ffffffff16565b905061234c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123ec9190612b18565b60405180910390a36000601054118015612410575060105461240e86866127b4565b115b1561244b5761244a3061dead6124456010546124376014548961209f90919063ffffffff16565b61208990919063ffffffff16565b6114fd565b5b61245e81846114e790919063ffffffff16565b91505061246a565b8190505b9392505050565b6000600267ffffffffffffffff81111561248e5761248d61372b565b5b6040519080825280602002602001820160405280156124bc5781602001602082028036833780820191505090505b50905030816000815181106124d4576124d3612fa4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259f919061376f565b816001815181106125b3576125b2612fa4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061261a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461131e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161267e959493929190613895565b600060405180830381600087803b15801561269857600080fd5b505af11580156126ac573d6000803e3d6000fd5b505050505050565b6126e130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461131e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161276a969594939291906138ef565b60606040518083038185885af1158015612788573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127ad9190613950565b5050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128575750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128795761287260646014546114e790919063ffffffff16565b905061293d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128d857601254905061293d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361293757601154905061293d565b60135490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561297d578082015181840152602081019050612962565b60008484015250505050565b6000601f19601f8301169050919050565b60006129a582612943565b6129af818561294e565b93506129bf81856020860161295f565b6129c881612989565b840191505092915050565b600060208201905081810360008301526129ed818461299a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a2a826129ff565b9050919050565b612a3a81612a1f565b8114612a4557600080fd5b50565b600081359050612a5781612a31565b92915050565b6000819050919050565b612a7081612a5d565b8114612a7b57600080fd5b50565b600081359050612a8d81612a67565b92915050565b60008060408385031215612aaa57612aa96129f5565b5b6000612ab885828601612a48565b9250506020612ac985828601612a7e565b9150509250929050565b60008115159050919050565b612ae881612ad3565b82525050565b6000602082019050612b036000830184612adf565b92915050565b612b1281612a5d565b82525050565b6000602082019050612b2d6000830184612b09565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b5857612b57612b33565b5b8235905067ffffffffffffffff811115612b7557612b74612b38565b5b602083019150836020820283011115612b9157612b90612b3d565b5b9250929050565b612ba181612ad3565b8114612bac57600080fd5b50565b600081359050612bbe81612b98565b92915050565b600080600060408486031215612bdd57612bdc6129f5565b5b600084013567ffffffffffffffff811115612bfb57612bfa6129fa565b5b612c0786828701612b42565b93509350506020612c1a86828701612baf565b9150509250925092565b600080600060608486031215612c3d57612c3c6129f5565b5b6000612c4b86828701612a48565b9350506020612c5c86828701612a48565b9250506040612c6d86828701612a7e565b9150509250925092565b600060208284031215612c8d57612c8c6129f5565b5b6000612c9b84828501612a48565b91505092915050565b600060ff82169050919050565b612cba81612ca4565b82525050565b6000602082019050612cd56000830184612cb1565b92915050565b60008060408385031215612cf257612cf16129f5565b5b6000612d0085828601612a48565b9250506020612d1185828601612baf565b9150509250929050565b612d2481612a1f565b82525050565b6000602082019050612d3f6000830184612d1b565b92915050565b600080600060608486031215612d5e57612d5d6129f5565b5b6000612d6c86828701612a48565b9350506020612d7d86828701612a48565b9250506040612d8e86828701612a48565b9150509250925092565b600080600060608486031215612db157612db06129f5565b5b6000612dbf86828701612a7e565b9350506020612dd086828701612a7e565b9250506040612de186828701612a7e565b9150509250925092565b600080600080600080600060e0888a031215612e0a57612e096129f5565b5b6000612e188a828b01612a7e565b9750506020612e298a828b01612a7e565b9650506040612e3a8a828b01612a7e565b9550506060612e4b8a828b01612a7e565b9450506080612e5c8a828b01612a7e565b93505060a0612e6d8a828b01612a7e565b92505060c0612e7e8a828b01612a7e565b91505092959891949750929550565b60008060408385031215612ea457612ea36129f5565b5b6000612eb285828601612a48565b9250506020612ec385828601612a48565b9150509250929050565b6000612ed8826129ff565b9050919050565b612ee881612ecd565b8114612ef357600080fd5b50565b600081359050612f0581612edf565b92915050565b600060208284031215612f2157612f206129f5565b5b6000612f2f84828501612ef6565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612f6e60068361294e565b9150612f7982612f38565b602082019050919050565b60006020820190508181036000830152612f9d81612f61565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061300d82612a5d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361303f5761303e612fd3565b5b600182019050919050565b60008151905061305981612a67565b92915050565b600060208284031215613075576130746129f5565b5b60006130838482850161304a565b91505092915050565b60006040820190506130a16000830185612d1b565b6130ae6020830184612b09565b9392505050565b6000815190506130c481612b98565b92915050565b6000602082840312156130e0576130df6129f5565b5b60006130ee848285016130b5565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000613153602e8361294e565b915061315e826130f7565b604082019050919050565b6000602082019050818103600083015261318281613146565b9050919050565b6000819050919050565b60006131ae6131a96131a4846129ff565b613189565b6129ff565b9050919050565b60006131c082613193565b9050919050565b60006131d2826131b5565b9050919050565b6131e2816131c7565b82525050565b60006020820190506131fd60008301846131d9565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061325f60248361294e565b915061326a82613203565b604082019050919050565b6000602082019050818103600083015261328e81613252565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132f160228361294e565b91506132fc82613295565b604082019050919050565b60006020820190508181036000830152613320816132e4565b9050919050565b600061333282612a5d565b915061333d83612a5d565b925082820390508181111561335557613354612fd3565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133b760258361294e565b91506133c28261335b565b604082019050919050565b600060208201905081810360008301526133e6816133aa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061344960238361294e565b9150613454826133ed565b604082019050919050565b600060208201905081810360008301526134788161343c565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006134db60318361294e565b91506134e68261347f565b604082019050919050565b6000602082019050818103600083015261350a816134ce565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613547600e8361294e565b915061355282613511565b602082019050919050565b600060208201905081810360008301526135768161353a565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006135b3601e8361294e565b91506135be8261357d565b602082019050919050565b600060208201905081810360008301526135e2816135a6565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061361f60118361294e565b915061362a826135e9565b602082019050919050565b6000602082019050818103600083015261364e81613612565b9050919050565b600061366082612a5d565b915061366b83612a5d565b925082820190508082111561368357613682612fd3565b5b92915050565b600061369482612a5d565b915061369f83612a5d565b92508282026136ad81612a5d565b915082820484148315176136c4576136c3612fd3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061370582612a5d565b915061371083612a5d565b9250826137205761371f6136cb565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061376981612a31565b92915050565b600060208284031215613785576137846129f5565b5b60006137938482850161375a565b91505092915050565b6000819050919050565b60006137c16137bc6137b78461379c565b613189565b612a5d565b9050919050565b6137d1816137a6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61380c81612a1f565b82525050565b600061381e8383613803565b60208301905092915050565b6000602082019050919050565b6000613842826137d7565b61384c81856137e2565b9350613857836137f3565b8060005b8381101561388857815161386f8882613812565b975061387a8361382a565b92505060018101905061385b565b5085935050505092915050565b600060a0820190506138aa6000830188612b09565b6138b760208301876137c8565b81810360408301526138c98186613837565b90506138d86060830185612d1b565b6138e56080830184612b09565b9695505050505050565b600060c0820190506139046000830189612d1b565b6139116020830188612b09565b61391e60408301876137c8565b61392b60608301866137c8565b6139386080830185612d1b565b61394560a0830184612b09565b979650505050505050565b600080600060608486031215613969576139686129f5565b5b60006139778682870161304a565b93505060206139888682870161304a565b92505060406139998682870161304a565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d849edb2b1f2f92bdffef673eb848870345534fd2f22663f04b0031ee69f18cc64736f6c63430008130033

Deployed Bytecode

0x6080604052600436106101855760003560e01c80637cca52fe116100d15780639cc353511161008a578063a9059cbb11610064578063a9059cbb14610569578063cb7f97d7146105a6578063dd62ed3e146105cf578063f2fde38b1461060c5761018c565b80639cc35351146104ec5780639d8740cb14610515578063a8aa1b311461053e5761018c565b80637cca52fe146103ee5780637d1db4a514610419578063893d20e8146104445780638cd4426d1461046f5780639213c3581461049857806395d89b41146104c15761018c565b80632f54bf6e1161013e57806348ff2b8b1161011857806348ff2b8b1461034657806351bc3c851461036f57806370a082311461038657806378109e54146103c35761018c565b80632f54bf6e146102a1578063313ce567146102de5780633f4218e0146103095761018c565b806306fdde0314610191578063095ea7b3146101bc57806318160ddd146101f9578063229b6a5e1461022457806323b872dd1461024d578063293230b81461028a5761018c565b3661018c57005b600080fd5b34801561019d57600080fd5b506101a6610635565b6040516101b391906129d3565b60405180910390f35b3480156101c857600080fd5b506101e360048036038101906101de9190612a93565b610672565b6040516101f09190612aee565b60405180910390f35b34801561020557600080fd5b5061020e610689565b60405161021b9190612b18565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612bc4565b6106ca565b005b34801561025957600080fd5b50610274600480360381019061026f9190612c24565b6107b7565b6040516102819190612aee565b60405180910390f35b34801561029657600080fd5b5061029f610882565b005b3480156102ad57600080fd5b506102c860048036038101906102c39190612c77565b6108e7565b6040516102d59190612aee565b60405180910390f35b3480156102ea57600080fd5b506102f3610940565b6040516103009190612cc0565b60405180910390f35b34801561031557600080fd5b50610330600480360381019061032b9190612c77565b610949565b60405161033d9190612aee565b60405180910390f35b34801561035257600080fd5b5061036d60048036038101906103689190612cdb565b610969565b005b34801561037b57600080fd5b50610384610a0c565b005b34801561039257600080fd5b506103ad60048036038101906103a89190612c77565b610a7d565b6040516103ba9190612b18565b60405180910390f35b3480156103cf57600080fd5b506103d8610ac6565b6040516103e59190612b18565b60405180910390f35b3480156103fa57600080fd5b50610403610acc565b6040516104109190612b18565b60405180910390f35b34801561042557600080fd5b5061042e610ad2565b60405161043b9190612b18565b60405180910390f35b34801561045057600080fd5b50610459610ad8565b6040516104669190612d2a565b60405180910390f35b34801561047b57600080fd5b5061049660048036038101906104919190612a93565b610b01565b005b3480156104a457600080fd5b506104bf60048036038101906104ba9190612d45565b610c92565b005b3480156104cd57600080fd5b506104d6610eaa565b6040516104e391906129d3565b60405180910390f35b3480156104f857600080fd5b50610513600480360381019061050e9190612d98565b610ee7565b005b34801561052157600080fd5b5061053c60048036038101906105379190612d98565b611062565b005b34801561054a57600080fd5b50610553611116565b6040516105609190612d2a565b60405180910390f35b34801561057557600080fd5b50610590600480360381019061058b9190612a93565b61113c565b60405161059d9190612aee565b60405180910390f35b3480156105b257600080fd5b506105cd60048036038101906105c89190612deb565b611153565b005b3480156105db57600080fd5b506105f660048036038101906105f19190612e8d565b6111d5565b6040516106039190612b18565b60405180910390f35b34801561061857600080fd5b50610633600480360381019061062e9190612f0b565b61125c565b005b60606040518060400160405280600a81526020017f426964656e6f6d69637300000000000000000000000000000000000000000000815250905090565b600061067f33848461131e565b6001905092915050565b60006106c56106986000610a7d565b6106b76106a661dead610a7d565b6001546114e790919063ffffffff16565b6114e790919063ffffffff16565b905090565b6106d3336108e7565b610712576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070990612f84565b60405180910390fd5b60005b838390508110156107b157816005600086868581811061073857610737612fa4565b5b905060200201602081019061074d9190612c77565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107a990613002565b915050610715565b50505050565b60006107c48484846114fd565b6108778433610872856040518060600160405280602881526020016139a460289139600360008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dc79092919063ffffffff16565b61131e565b600190509392505050565b61088b336108e7565b6108ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c190612f84565b60405180910390fd5b6001600760146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b60046020528060005260406000206000915054906101000a900460ff1681565b610972336108e7565b6109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890612f84565b60405180910390fd5b80600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610a15336108e7565b610a54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4b90612f84565b60405180910390fd5b6000610a5f30610a7d565b9050600b54811115610a7157600b5490505b610a7a81611e1c565b50565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b601a5481565b60195481565b60185481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610b0a336108e7565b610b49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4090612f84565b60405180910390fd5b6000610bea6064610bdc848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610b8d9190612d2a565b602060405180830381865afa158015610baa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bce919061305f565b61208990919063ffffffff16565b61209f90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610c4992919061308c565b6020604051808303816000875af1158015610c68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c91906130ca565b50505050565b610c9b336108e7565b610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190612f84565b60405180910390fd5b82601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050565b60606040518060400160405280600b81526020017f24426964656e6f6d696373000000000000000000000000000000000000000000815250905090565b610ef0336108e7565b610f2f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2690612f84565b60405180910390fd5b6000610f5a612710610f4c8660015461208990919063ffffffff16565b61209f90919063ffffffff16565b90506000610f87612710610f798660015461208990919063ffffffff16565b61209f90919063ffffffff16565b90506000610fb4612710610fa68660015461208990919063ffffffff16565b61209f90919063ffffffff16565b9050826018819055508160198190555080601a819055506000610ffc6103e8610fee6005610fe0610689565b61208990919063ffffffff16565b61209f90919063ffffffff16565b905080841015801561100e5750808310155b801561101a5750808210155b611059576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161105090613169565b60405180910390fd5b50505050505050565b61106b336108e7565b6110aa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a190612f84565b60405180910390fd5b82600a819055506110db620186a06110cd8460015461208990919063ffffffff16565b61209f90919063ffffffff16565b600b8190555061110b620186a06110fd8360015461208990919063ffffffff16565b61209f90919063ffffffff16565b600c81905550505050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006111493384846114fd565b6001905092915050565b61115c336108e7565b61119b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119290612f84565b60405180910390fd5b86600d8190555085600e819055508460108190555083600f8190555082601181905550816012819055508060138190555050505050505050565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611265336108e7565b6112a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129b90612f84565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861638160405161131391906131e8565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361138d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138490613275565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036113fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113f390613307565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516114da9190612b18565b60405180910390a3505050565b600081836114f59190613327565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361156c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611563906133cd565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115d29061345f565b60405180910390fd5b6115e483610a7d565b811115611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906134f1565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116ca5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561171f57600760149054906101000a900460ff1661171e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117159061355d565b60405180910390fd5b5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117c35750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561181d5750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611857575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156118f357601a546118b182600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b11156118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e9906135c9565b60405180910390fd5b5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611a3657601954811115806119a25750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806119f65750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2c90613635565b60405180910390fd5b5b60185481111580611a905750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611ae45750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b1a90613635565b60405180910390fd5b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148015611bca5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611bea57600160086000828254611be29190613655565b925050819055505b611bf58383836120cb565b15611c0e57611c05600b54611e1c565b60006008819055505b611c6081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114e790919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611caf8484612205565b611cb95781611cc5565b611cc48484846122b3565b5b9050611d1981600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611db99190612b18565b60405180910390a350505050565b6000838311158290611e0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e0691906129d3565b60405180910390fd5b5082840390509392505050565b6001600960006101000a81548160ff0219169083151502179055506000611e8a6002611e7c600f54611e6e600e54611e606001600d546120b590919063ffffffff16565b6120b590919063ffffffff16565b6120b590919063ffffffff16565b61208990919063ffffffff16565b90506000611eb582611ea7600d548661208990919063ffffffff16565b61209f90919063ffffffff16565b90506000611ecc82856114e790919063ffffffff16565b90506000479050611edc82612471565b6000611ef182476114e790919063ffffffff16565b90506000611f1c611f0d600d54886114e790919063ffffffff16565b8361209f90919063ffffffff16565b90506000611f35600d548361208990919063ffffffff16565b90506000811115611f4b57611f4a86826126b4565b5b6000611f75600e54611f6760028661208990919063ffffffff16565b61208990919063ffffffff16565b90506000811115611fea57601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611fe8573d6000803e3d6000fd5b505b6000479050600081111561206257601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612060573d6000803e3d6000fd5b505b5050505050505050506000600960006101000a81548160ff02191690831515021790555050565b600081836120979190613689565b905092915050565b600081836120ad91906136fa565b905092915050565b600081836120c39190613655565b905092915050565b600080600c5483101590506000600b546120e430610a7d565b10159050600960009054906101000a900460ff161580156121115750600760159054906101000a900460ff165b80156121295750600760149054906101000a900460ff165b80156121325750815b80156121885750600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156121e15750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b80156121f15750600a5460085410155b80156121fa5750805b925050509392505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156122ab5750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b6000806122c085856127b4565b11156124665760006122f86122d586866127b4565b6122ea6014548661209f90919063ffffffff16565b61208990919063ffffffff16565b905061234c81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b590919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516123ec9190612b18565b60405180910390a36000601054118015612410575060105461240e86866127b4565b115b1561244b5761244a3061dead6124456010546124376014548961209f90919063ffffffff16565b61208990919063ffffffff16565b6114fd565b5b61245e81846114e790919063ffffffff16565b91505061246a565b8190505b9392505050565b6000600267ffffffffffffffff81111561248e5761248d61372b565b5b6040519080825280602002602001820160405280156124bc5781602001602082028036833780820191505090505b50905030816000815181106124d4576124d3612fa4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561257b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061259f919061376f565b816001815181106125b3576125b2612fa4565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061261a30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461131e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161267e959493929190613895565b600060405180830381600087803b15801561269857600080fd5b505af11580156126ac573d6000803e3d6000fd5b505050505050565b6126e130600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461131e565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161276a969594939291906138ef565b60606040518083038185885af1158015612788573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906127ad9190613950565b5050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806128575750600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156128795761287260646014546114e790919063ffffffff16565b905061293d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036128d857601254905061293d565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361293757601154905061293d565b60135490505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561297d578082015181840152602081019050612962565b60008484015250505050565b6000601f19601f8301169050919050565b60006129a582612943565b6129af818561294e565b93506129bf81856020860161295f565b6129c881612989565b840191505092915050565b600060208201905081810360008301526129ed818461299a565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612a2a826129ff565b9050919050565b612a3a81612a1f565b8114612a4557600080fd5b50565b600081359050612a5781612a31565b92915050565b6000819050919050565b612a7081612a5d565b8114612a7b57600080fd5b50565b600081359050612a8d81612a67565b92915050565b60008060408385031215612aaa57612aa96129f5565b5b6000612ab885828601612a48565b9250506020612ac985828601612a7e565b9150509250929050565b60008115159050919050565b612ae881612ad3565b82525050565b6000602082019050612b036000830184612adf565b92915050565b612b1281612a5d565b82525050565b6000602082019050612b2d6000830184612b09565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612b5857612b57612b33565b5b8235905067ffffffffffffffff811115612b7557612b74612b38565b5b602083019150836020820283011115612b9157612b90612b3d565b5b9250929050565b612ba181612ad3565b8114612bac57600080fd5b50565b600081359050612bbe81612b98565b92915050565b600080600060408486031215612bdd57612bdc6129f5565b5b600084013567ffffffffffffffff811115612bfb57612bfa6129fa565b5b612c0786828701612b42565b93509350506020612c1a86828701612baf565b9150509250925092565b600080600060608486031215612c3d57612c3c6129f5565b5b6000612c4b86828701612a48565b9350506020612c5c86828701612a48565b9250506040612c6d86828701612a7e565b9150509250925092565b600060208284031215612c8d57612c8c6129f5565b5b6000612c9b84828501612a48565b91505092915050565b600060ff82169050919050565b612cba81612ca4565b82525050565b6000602082019050612cd56000830184612cb1565b92915050565b60008060408385031215612cf257612cf16129f5565b5b6000612d0085828601612a48565b9250506020612d1185828601612baf565b9150509250929050565b612d2481612a1f565b82525050565b6000602082019050612d3f6000830184612d1b565b92915050565b600080600060608486031215612d5e57612d5d6129f5565b5b6000612d6c86828701612a48565b9350506020612d7d86828701612a48565b9250506040612d8e86828701612a48565b9150509250925092565b600080600060608486031215612db157612db06129f5565b5b6000612dbf86828701612a7e565b9350506020612dd086828701612a7e565b9250506040612de186828701612a7e565b9150509250925092565b600080600080600080600060e0888a031215612e0a57612e096129f5565b5b6000612e188a828b01612a7e565b9750506020612e298a828b01612a7e565b9650506040612e3a8a828b01612a7e565b9550506060612e4b8a828b01612a7e565b9450506080612e5c8a828b01612a7e565b93505060a0612e6d8a828b01612a7e565b92505060c0612e7e8a828b01612a7e565b91505092959891949750929550565b60008060408385031215612ea457612ea36129f5565b5b6000612eb285828601612a48565b9250506020612ec385828601612a48565b9150509250929050565b6000612ed8826129ff565b9050919050565b612ee881612ecd565b8114612ef357600080fd5b50565b600081359050612f0581612edf565b92915050565b600060208284031215612f2157612f206129f5565b5b6000612f2f84828501612ef6565b91505092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612f6e60068361294e565b9150612f7982612f38565b602082019050919050565b60006020820190508181036000830152612f9d81612f61565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061300d82612a5d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361303f5761303e612fd3565b5b600182019050919050565b60008151905061305981612a67565b92915050565b600060208284031215613075576130746129f5565b5b60006130838482850161304a565b91505092915050565b60006040820190506130a16000830185612d1b565b6130ae6020830184612b09565b9392505050565b6000815190506130c481612b98565b92915050565b6000602082840312156130e0576130df6129f5565b5b60006130ee848285016130b5565b91505092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000613153602e8361294e565b915061315e826130f7565b604082019050919050565b6000602082019050818103600083015261318281613146565b9050919050565b6000819050919050565b60006131ae6131a96131a4846129ff565b613189565b6129ff565b9050919050565b60006131c082613193565b9050919050565b60006131d2826131b5565b9050919050565b6131e2816131c7565b82525050565b60006020820190506131fd60008301846131d9565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061325f60248361294e565b915061326a82613203565b604082019050919050565b6000602082019050818103600083015261328e81613252565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006132f160228361294e565b91506132fc82613295565b604082019050919050565b60006020820190508181036000830152613320816132e4565b9050919050565b600061333282612a5d565b915061333d83612a5d565b925082820390508181111561335557613354612fd3565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006133b760258361294e565b91506133c28261335b565b604082019050919050565b600060208201905081810360008301526133e6816133aa565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061344960238361294e565b9150613454826133ed565b604082019050919050565b600060208201905081810360008301526134788161343c565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b60006134db60318361294e565b91506134e68261347f565b604082019050919050565b6000602082019050818103600083015261350a816134ce565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b6000613547600e8361294e565b915061355282613511565b602082019050919050565b600060208201905081810360008301526135768161353a565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b60006135b3601e8361294e565b91506135be8261357d565b602082019050919050565b600060208201905081810360008301526135e2816135a6565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b600061361f60118361294e565b915061362a826135e9565b602082019050919050565b6000602082019050818103600083015261364e81613612565b9050919050565b600061366082612a5d565b915061366b83612a5d565b925082820190508082111561368357613682612fd3565b5b92915050565b600061369482612a5d565b915061369f83612a5d565b92508282026136ad81612a5d565b915082820484148315176136c4576136c3612fd3565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061370582612a5d565b915061371083612a5d565b9250826137205761371f6136cb565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b60008151905061376981612a31565b92915050565b600060208284031215613785576137846129f5565b5b60006137938482850161375a565b91505092915050565b6000819050919050565b60006137c16137bc6137b78461379c565b613189565b612a5d565b9050919050565b6137d1816137a6565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61380c81612a1f565b82525050565b600061381e8383613803565b60208301905092915050565b6000602082019050919050565b6000613842826137d7565b61384c81856137e2565b9350613857836137f3565b8060005b8381101561388857815161386f8882613812565b975061387a8361382a565b92505060018101905061385b565b5085935050505092915050565b600060a0820190506138aa6000830188612b09565b6138b760208301876137c8565b81810360408301526138c98186613837565b90506138d86060830185612d1b565b6138e56080830184612b09565b9695505050505050565b600060c0820190506139046000830189612d1b565b6139116020830188612b09565b61391e60408301876137c8565b61392b60608301866137c8565b6139386080830185612d1b565b61394560a0830184612b09565b979650505050505050565b600080600060608486031215613969576139686129f5565b5b60006139778682870161304a565b93505060206139888682870161304a565b92505060406139998682870161304a565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220d849edb2b1f2f92bdffef673eb848870345534fd2f22663f04b0031ee69f18cc64736f6c63430008130033

Deployed Bytecode Sourcemap

4809:11300:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7253:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8134:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8273:132;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10425:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15454:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7476:67;;;;;;;;;;;;;:::i;:::-;;3713:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7403:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5226:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8020:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10617:195;;;;;;;;;;;;;:::i;:::-;;7633:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6536:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6467:62;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6400:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7549:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10820:242;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10079:338;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7326:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9515:556;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8824:319;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5344:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7742:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9151:356;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7887:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3806:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7253:67;7290:13;7313:5;;;;;;;;;;;;;;;;;7306:12;;7253:67;:::o;8134:133::-;8209:4;8216:37;8225:10;8237:7;8246:6;8216:8;:37::i;:::-;8261:4;8254:11;;8134:133;;;;:::o;8273:132::-;8326:7;8343:60;8381:21;8399:1;8381:9;:21::i;:::-;8343:33;8360:15;6087:42;8360:9;:15::i;:::-;8343:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;8336:67;;8273:132;:::o;10425:184::-;3672:19;3680:10;3672:7;:19::i;:::-;3664:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10522:6:::1;10518:84;10536:9;;:16;;10532:1;:20;10518:84;;;10591:8;10569:5;:19;10575:9;;10585:1;10575:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;10569:19;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10554:3;;;;;:::i;:::-;;;;10518:84;;;;10425:184:::0;;;:::o;15454:309::-;15552:4;15569:36;15579:6;15587:9;15598:6;15569:9;:36::i;:::-;15616:117;15625:6;15633:10;15645:87;15681:6;15645:87;;;;;;;;;;;;;;;;;:11;:19;15657:6;15645:19;;;;;;;;;;;;;;;:31;15665:10;15645:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;15616:8;:117::i;:::-;15751:4;15744:11;;15454:309;;;;;:::o;7476:67::-;3672:19;3680:10;3672:7;:19::i;:::-;3664:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;7537:4:::1;7520:14;;:21;;;;;;;;;;;;;;;;;;7476:67::o:0;3713:87::-;3768:4;3793:5;;;;;;;;;;;3782:16;;:7;:16;;;3775:23;;3713:87;;;:::o;7403:67::-;7444:5;5028:1;7452:16;;7403:67;:::o;5226:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8020:108::-;3672:19;3680:10;3672:7;:19::i;:::-;3664:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8118:8:::1;8094:11;:21;8106:8;8094:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8020:108:::0;;:::o;10617:195::-;3672:19;3680:10;3672:7;:19::i;:::-;3664:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10669:14:::1;10686:24;10704:4;10686:9;:24::i;:::-;10669:41;;10733:13;;10724:6;:22;10721:51;;;10757:13;;10748:22;;10721:51;10782:22;10797:6;10782:14;:22::i;:::-;10658:154;10617:195::o:0;7633:103::-;7699:7;7716:9;:18;7726:7;7716:18;;;;;;;;;;;;;;;;7709:25;;7633:103;;;:::o;6536:63::-;;;;:::o;6467:62::-;;;;:::o;6400:60::-;;;;:::o;7549:78::-;7601:7;7619:5;;;;;;;;;;;7612:12;;7549:78;:::o;10820:242::-;3672:19;3680:10;3672:7;:19::i;:::-;3664:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10906:15:::1;10924:63;10983:3;10924:54;10970:7;10931:8;10924:26;;;10959:4;10924:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;10906:81;;11005:8;10998:25;;;11024:20;;;;;;;;;;;11046:7;10998:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10895:167;10820:242:::0;;:::o;10079:338::-;3672:19;3680:10;3672:7;:19::i;:::-;3664:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;10222:10:::1;10201:18;;:31;;;;;;;;;;;;;;;;;;10255:10;10234:18;;:31;;;;;;;;;;;;;;;;;;10290:12;10267:20;;:35;;;;;;;;;;;;;;;;;;10339:4;10313:11;:23;10325:10;10313:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10371:4;10345:11;:23;10357:10;10345:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;10405:4;10377:11;:25;10389:12;10377:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;10079:338:::0;;;:::o;7326:71::-;7365:13;7388:7;;;;;;;;;;;;;;;;;7381:14;;7326:71;:::o;9515:556::-;3672:19;3680:10;3672:7;:19::i;:::-;3664:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9621:13:::1;9637:33;9664:5;9637:22;9654:4;9637:12;;:16;;:22;;;;:::i;:::-;:26;;:33;;;;:::i;:::-;9621:49;;9672:19;9694:34;9722:5;9694:23;9711:5;9694:12;;:16;;:23;;;;:::i;:::-;:27;;:34;;;;:::i;:::-;9672:56;;9730:17;9750:36;9780:5;9750:25;9767:7;9750:12;;:16;;:25;;;;:::i;:::-;:29;;:36;;;;:::i;:::-;9730:56;;9812:5;9797:12;:20;;;;9836:11;9819:14;:28;;;;9867:9;9849:15;:27;;;;9887:13;9903:30;9928:4;9903:20;9921:1;9903:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;9887:46;;9961:5;9952;:14;;:38;;;;;9985:5;9970:11;:20;;9952:38;:60;;;;;10007:5;9994:9;:18;;9952:60;9944:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;9610:461;;;;9515:556:::0;;;:::o;8824:319::-;3672:19;3680:10;3672:7;:19::i;:::-;3664:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8970:11:::1;8957:10;:24;;;;8999:53;9044:6;8999:32;9016:14;8999:12;;:16;;:32;;;;:::i;:::-;:36;;:53;;;;:::i;:::-;8983:13;:69;;;;9081:54;9127:6;9081:33;9098:15;9081:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;9064:14;:71;;;;8824:319:::0;;;:::o;5344:19::-;;;;;;;;;;;;;:::o;7742:139::-;7820:4;7827:40;7837:10;7849:9;7860:6;7827:9;:40::i;:::-;7875:4;7868:11;;7742:139;;;;:::o;9151:356::-;3672:19;3680:10;3672:7;:19::i;:::-;3664:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9356:10:::1;9341:12;:25;;;;9383:10;9368:12;:25;;;;9405:5;9395:7;:15;;;;9429:12;9412:14;:29;;;;9454:6;9443:8;:17;;;;9472:5;9462:7;:15;;;;9493:6;9479:11;:20;;;;9151:356:::0;;;;;;;:::o;7887:127::-;7968:7;7985:11;:18;7997:5;7985:18;;;;;;;;;;;;;;;:27;8004:7;7985:27;;;;;;;;;;;;;;;;7978:34;;7887:127;;;;:::o;3806:111::-;3672:19;3680:10;3672:7;:19::i;:::-;3664:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3880:3:::1;3872:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3890:25;3911:3;3890:25;;;;;;:::i;:::-;;;;;;;;3806:111:::0;:::o;15771:335::-;15881:1;15864:19;;:5;:19;;;15856:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15962:1;15943:21;;:7;:21;;;15935:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16044:6;16014:11;:18;16026:5;16014:18;;;;;;;;;;;;;;;:27;16033:7;16014:27;;;;;;;;;;;;;;;:36;;;;16082:7;16066:32;;16075:5;16066:32;;;16091:6;16066:32;;;;;;:::i;:::-;;;;;;;;15771:335;;;:::o;1452:98::-;1510:7;1541:1;1537;:5;;;;:::i;:::-;1530:12;;1452:98;;;;:::o;14013:1433::-;14128:1;14110:20;;:6;:20;;;14102:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;14212:1;14191:23;;:9;:23;;;14183:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;14283:17;14293:6;14283:9;:17::i;:::-;14273:6;:27;;14265:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;14368:11;:19;14380:6;14368:19;;;;;;;;;;;;;;;;;;;;;;;;;14367:20;:47;;;;;14392:11;:22;14404:9;14392:22;;;;;;;;;;;;;;;;;;;;;;;;;14391:23;14367:47;14364:95;;;14424:14;;;;;;;;;;;14416:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;14364:95;14473:11;:19;14485:6;14473:19;;;;;;;;;;;;;;;;;;;;;;;;;14472:20;:47;;;;;14497:11;:22;14509:9;14497:22;;;;;;;;;;;;;;;;;;;;;;;;;14496:23;14472:47;:77;;;;;14544:4;;;;;;;;;;;14523:26;;:9;:26;;;;14472:77;:107;;;;;6087:42;14553:26;;:9;:26;;;;14472:107;14469:220;;;14637:15;;14600:32;14625:6;14600:9;:20;14610:9;14600:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14599:53;;14591:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;14469:220;14712:4;;;;;;;;;;;14702:14;;:6;:14;;;14699:124;;14736:14;;14726:6;:24;;:47;;;;14754:11;:19;14766:6;14754:19;;;;;;;;;;;;;;;;;;;;;;;;;14726:47;:73;;;;14777:11;:22;14789:9;14777:22;;;;;;;;;;;;;;;;;;;;;;;;;14726:73;14718:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;14699:124;14851:12;;14841:6;:22;;:45;;;;14867:11;:19;14879:6;14867:19;;;;;;;;;;;;;;;;;;;;;;;;;14841:45;:71;;;;14890:11;:22;14902:9;14890:22;;;;;;;;;;;;;;;;;;;;;;;;;14841:71;14833:101;;;;;;;;;;;;:::i;:::-;;;;;;;;;14962:4;;;;;;;;;;;14949:17;;:9;:17;;;:41;;;;;14971:11;:19;14983:6;14971:19;;;;;;;;;;;;;;;;;;;;;;;;;14970:20;14949:41;14946:71;;;15013:1;14992:9;;:23;;;;;;;:::i;:::-;;;;;;;;14946:71;15030:45;15049:6;15057:9;15068:6;15030:18;:45::i;:::-;15027:105;;;15077:29;15092:13;;15077:14;:29::i;:::-;15128:1;15108:9;:22;;;;15027:105;15162:29;15184:6;15162:9;:17;15172:6;15162:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;15142:9;:17;15152:6;15142:17;;;;;;;;;;;;;;;:49;;;;15202:22;15227:32;15241:6;15249:9;15227:13;:32::i;:::-;:78;;15299:6;15227:78;;;15262:34;15270:6;15278:9;15289:6;15262:7;:34::i;:::-;15227:78;15202:103;;15339:40;15364:14;15339:9;:20;15349:9;15339:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;15316:9;:20;15326:9;15316:20;;;;;;;;;;;;;;;:63;;;;15412:9;15395:43;;15404:6;15395:43;;;15423:14;15395:43;;;;;;:::i;:::-;;;;;;;;14091:1355;14013:1433;;;:::o;1876:240::-;1996:7;2054:1;2049;:6;;2057:12;2041:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2096:1;2092;:5;2085:12;;1876:240;;;;;:::o;11070:1063::-;5713:4;5702:8;;:15;;;;;;;;;;;;;;;;;;11141:20:::1;11164:66;11228:1;11165:57;11207:14;;11165:37;11189:12;;11165:19;11182:1;11165:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;11164:63;;:66;;;;:::i;:::-;11141:89;;11241:32;11276:42;11305:12;11276:24;11287:12;;11276:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;11241:77;;11329:14;11346:36;11357:24;11346:6;:10;;:36;;;;:::i;:::-;11329:53;;11393:22;11418:21;11393:46;;11450:24;11467:6;11450:16;:24::i;:::-;11485:20;11508:41;11534:14;11508:21;:25;;:41;;;;:::i;:::-;11485:64;;11560:19;11581:48;11598:30;11615:12;;11598;:16;;:30;;;;:::i;:::-;11581:12;:16;;:48;;;;:::i;:::-;11560:69;;11640:29;11672;11688:12;;11672:11;:15;;:29;;;;:::i;:::-;11640:61;;11747:1;11715:21;:34;11712:103;;;11751:61;11764:24;11790:21;11751:12;:61::i;:::-;11712:103;11825:20;11848:36;11871:12;;11848:18;11864:1;11848:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;11825:59;;11913:1;11898:12;:16;11895:73;;;11924:18;;;;;;;;;;;11916:36;;:50;11953:12;11916:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11895:73;11978:23;12004:21;11978:47;;12065:1;12039:15;:28;12036:90;;;12077:20;;;;;;;;;;;12069:38;;:55;12108:15;12069:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;12036:90;11130:1003;;;;;;;;;5733:5:::0;5722:8;;:16;;;;;;;;;;;;;;;;;;11070:1063;:::o;1558:98::-;1616:7;1647:1;1643;:5;;;;:::i;:::-;1636:12;;1558:98;;;;:::o;1664:::-;1722:7;1753:1;1749;:5;;;;:::i;:::-;1742:12;;1664:98;;;;:::o;1346:::-;1404:7;1435:1;1431;:5;;;;:::i;:::-;1424:12;;1346:98;;;;:::o;8413:403::-;8515:4;8532:13;8558:14;;8548:6;:24;;8532:40;;8583:19;8633:13;;8605:24;8623:4;8605:9;:24::i;:::-;:41;;8583:63;;8665:8;;;;;;;;;;;8664:9;:24;;;;;8677:11;;;;;;;;;;;8664:24;:42;;;;;8692:14;;;;;;;;;;;8664:42;:54;;;;;8710:8;8664:54;:78;;;;;8723:11;:19;8735:6;8723:19;;;;;;;;;;;;;;;;;;;;;;;;;8722:20;8664:78;:99;;;;;8759:4;;;;;;;;;;;8746:17;;:9;:17;;;8664:99;:126;;;;;8780:10;;8767:9;;:23;;8664:126;:144;;;;;8794:14;8664:144;8657:151;;;;8413:403;;;;;:::o;12934:160::-;13015:4;13040:11;:19;13052:6;13040:19;;;;;;;;;;;;;;;;;;;;;;;;;13039:20;:47;;;;;13064:11;:22;13076:9;13064:22;;;;;;;;;;;;;;;;;;;;;;;;;13063:23;13039:47;13032:54;;12934:160;;;;:::o;13415:590::-;13501:7;13557:1;13524:30;13536:6;13544:9;13524:11;:30::i;:::-;:34;13521:462;;;13570:17;13590:59;13618:30;13630:6;13638:9;13618:11;:30::i;:::-;13590:23;13601:11;;13590:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;13570:79;;13687:39;13716:9;13687;:24;13705:4;13687:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;13660:9;:24;13678:4;13660:24;;;;;;;;;;;;;;;:66;;;;13767:4;13742:42;;13751:6;13742:42;;;13774:9;13742:42;;;;;;:::i;:::-;;;;;;;;13816:1;13798:7;;:20;:64;;;;;13855:7;;13822:30;13834:6;13842:9;13822:11;:30::i;:::-;:40;13798:64;13795:148;;;13864:77;13882:4;6087:42;13904:36;13932:7;;13904:23;13915:11;;13904:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;13864:9;:77::i;:::-;13795:148;13960:21;13971:9;13960:6;:10;;:21;;;;:::i;:::-;13953:28;;;;;13521:462;13991:6;13984:13;;13415:590;;;;;;:::o;12492:434::-;12558:21;12596:1;12582:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12558:40;;12627:4;12609;12614:1;12609:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12653:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12643:4;12648:1;12643:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;12677:53;12694:4;12709:6;;;;;;;;;;;12718:11;12677:8;:53::i;:::-;12741:6;;;;;;;;;;;:57;;;12813:11;12839:1;12855:4;12882;12902:15;12741:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12547:379;12492:434;:::o;12141:343::-;12222:53;12239:4;12254:6;;;;;;;;;;;12263:11;12222:8;:53::i;:::-;12286:6;;;;;;;;;;;:22;;;12316:9;12349:4;12369:11;12395:1;12411;12427:18;;;;;;;;;;;12460:15;12286:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12141:343;;:::o;13102:305::-;13181:7;13204:5;:13;13210:6;13204:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;13221:5;:16;13227:9;13221:16;;;;;;;;;;;;;;;;;;;;;;;;;13204:33;13201:76;;;13246:29;13270:3;13246:11;;:15;;:29;;;;:::i;:::-;13239:36;;;;13201:76;13303:4;;;;;;;;;;;13290:17;;:9;:17;;;13287:38;;13316:7;;13309:14;;;;13287:38;13348:4;;;;;;;;;;;13338:14;;:6;:14;;;13335:36;;13361:8;;13354:15;;;;13335:36;13388:11;;13381:18;;13102:305;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:117::-;3907:1;3904;3897:12;3921:117;4030:1;4027;4020:12;4044:117;4153:1;4150;4143:12;4184:568;4257:8;4267:6;4317:3;4310:4;4302:6;4298:17;4294:27;4284:122;;4325:79;;:::i;:::-;4284:122;4438:6;4425:20;4415:30;;4468:18;4460:6;4457:30;4454:117;;;4490:79;;:::i;:::-;4454:117;4604:4;4596:6;4592:17;4580:29;;4658:3;4650:4;4642:6;4638:17;4628:8;4624:32;4621:41;4618:128;;;4665:79;;:::i;:::-;4618:128;4184:568;;;;;:::o;4758:116::-;4828:21;4843:5;4828:21;:::i;:::-;4821:5;4818:32;4808:60;;4864:1;4861;4854:12;4808:60;4758:116;:::o;4880:133::-;4923:5;4961:6;4948:20;4939:29;;4977:30;5001:5;4977:30;:::i;:::-;4880:133;;;;:::o;5019:698::-;5111:6;5119;5127;5176:2;5164:9;5155:7;5151:23;5147:32;5144:119;;;5182:79;;:::i;:::-;5144:119;5330:1;5319:9;5315:17;5302:31;5360:18;5352:6;5349:30;5346:117;;;5382:79;;:::i;:::-;5346:117;5495:80;5567:7;5558:6;5547:9;5543:22;5495:80;:::i;:::-;5477:98;;;;5273:312;5624:2;5650:50;5692:7;5683:6;5672:9;5668:22;5650:50;:::i;:::-;5640:60;;5595:115;5019:698;;;;;:::o;5723:619::-;5800:6;5808;5816;5865:2;5853:9;5844:7;5840:23;5836:32;5833:119;;;5871:79;;:::i;:::-;5833:119;5991:1;6016:53;6061:7;6052:6;6041:9;6037:22;6016:53;:::i;:::-;6006:63;;5962:117;6118:2;6144:53;6189:7;6180:6;6169:9;6165:22;6144:53;:::i;:::-;6134:63;;6089:118;6246:2;6272:53;6317:7;6308:6;6297:9;6293:22;6272:53;:::i;:::-;6262:63;;6217:118;5723:619;;;;;:::o;6348:329::-;6407:6;6456:2;6444:9;6435:7;6431:23;6427:32;6424:119;;;6462:79;;:::i;:::-;6424:119;6582:1;6607:53;6652:7;6643:6;6632:9;6628:22;6607:53;:::i;:::-;6597:63;;6553:117;6348:329;;;;:::o;6683:86::-;6718:7;6758:4;6751:5;6747:16;6736:27;;6683:86;;;:::o;6775:112::-;6858:22;6874:5;6858:22;:::i;:::-;6853:3;6846:35;6775:112;;:::o;6893:214::-;6982:4;7020:2;7009:9;7005:18;6997:26;;7033:67;7097:1;7086:9;7082:17;7073:6;7033:67;:::i;:::-;6893:214;;;;:::o;7113:468::-;7178:6;7186;7235:2;7223:9;7214:7;7210:23;7206:32;7203:119;;;7241:79;;:::i;:::-;7203:119;7361:1;7386:53;7431:7;7422:6;7411:9;7407:22;7386:53;:::i;:::-;7376:63;;7332:117;7488:2;7514:50;7556:7;7547:6;7536:9;7532:22;7514:50;:::i;:::-;7504:60;;7459:115;7113:468;;;;;:::o;7587:118::-;7674:24;7692:5;7674:24;:::i;:::-;7669:3;7662:37;7587:118;;:::o;7711:222::-;7804:4;7842:2;7831:9;7827:18;7819:26;;7855:71;7923:1;7912:9;7908:17;7899:6;7855:71;:::i;:::-;7711:222;;;;:::o;7939:619::-;8016:6;8024;8032;8081:2;8069:9;8060:7;8056:23;8052:32;8049:119;;;8087:79;;:::i;:::-;8049:119;8207:1;8232:53;8277:7;8268:6;8257:9;8253:22;8232:53;:::i;:::-;8222:63;;8178:117;8334:2;8360:53;8405:7;8396:6;8385:9;8381:22;8360:53;:::i;:::-;8350:63;;8305:118;8462:2;8488:53;8533:7;8524:6;8513:9;8509:22;8488:53;:::i;:::-;8478:63;;8433:118;7939:619;;;;;:::o;8564:::-;8641:6;8649;8657;8706:2;8694:9;8685:7;8681:23;8677:32;8674:119;;;8712:79;;:::i;:::-;8674:119;8832:1;8857:53;8902:7;8893:6;8882:9;8878:22;8857:53;:::i;:::-;8847:63;;8803:117;8959:2;8985:53;9030:7;9021:6;9010:9;9006:22;8985:53;:::i;:::-;8975:63;;8930:118;9087:2;9113:53;9158:7;9149:6;9138:9;9134:22;9113:53;:::i;:::-;9103:63;;9058:118;8564:619;;;;;:::o;9189:1203::-;9302:6;9310;9318;9326;9334;9342;9350;9399:3;9387:9;9378:7;9374:23;9370:33;9367:120;;;9406:79;;:::i;:::-;9367:120;9526:1;9551:53;9596:7;9587:6;9576:9;9572:22;9551:53;:::i;:::-;9541:63;;9497:117;9653:2;9679:53;9724:7;9715:6;9704:9;9700:22;9679:53;:::i;:::-;9669:63;;9624:118;9781:2;9807:53;9852:7;9843:6;9832:9;9828:22;9807:53;:::i;:::-;9797:63;;9752:118;9909:2;9935:53;9980:7;9971:6;9960:9;9956:22;9935:53;:::i;:::-;9925:63;;9880:118;10037:3;10064:53;10109:7;10100:6;10089:9;10085:22;10064:53;:::i;:::-;10054:63;;10008:119;10166:3;10193:53;10238:7;10229:6;10218:9;10214:22;10193:53;:::i;:::-;10183:63;;10137:119;10295:3;10322:53;10367:7;10358:6;10347:9;10343:22;10322:53;:::i;:::-;10312:63;;10266:119;9189:1203;;;;;;;;;;:::o;10398:474::-;10466:6;10474;10523:2;10511:9;10502:7;10498:23;10494:32;10491:119;;;10529:79;;:::i;:::-;10491:119;10649:1;10674:53;10719:7;10710:6;10699:9;10695:22;10674:53;:::i;:::-;10664:63;;10620:117;10776:2;10802:53;10847:7;10838:6;10827:9;10823:22;10802:53;:::i;:::-;10792:63;;10747:118;10398:474;;;;;:::o;10878:104::-;10923:7;10952:24;10970:5;10952:24;:::i;:::-;10941:35;;10878:104;;;:::o;10988:138::-;11069:32;11095:5;11069:32;:::i;:::-;11062:5;11059:43;11049:71;;11116:1;11113;11106:12;11049:71;10988:138;:::o;11132:155::-;11186:5;11224:6;11211:20;11202:29;;11240:41;11275:5;11240:41;:::i;:::-;11132:155;;;;:::o;11293:345::-;11360:6;11409:2;11397:9;11388:7;11384:23;11380:32;11377:119;;;11415:79;;:::i;:::-;11377:119;11535:1;11560:61;11613:7;11604:6;11593:9;11589:22;11560:61;:::i;:::-;11550:71;;11506:125;11293:345;;;;:::o;11644:156::-;11784:8;11780:1;11772:6;11768:14;11761:32;11644:156;:::o;11806:365::-;11948:3;11969:66;12033:1;12028:3;11969:66;:::i;:::-;11962:73;;12044:93;12133:3;12044:93;:::i;:::-;12162:2;12157:3;12153:12;12146:19;;11806:365;;;:::o;12177:419::-;12343:4;12381:2;12370:9;12366:18;12358:26;;12430:9;12424:4;12420:20;12416:1;12405:9;12401:17;12394:47;12458:131;12584:4;12458:131;:::i;:::-;12450:139;;12177:419;;;:::o;12602:180::-;12650:77;12647:1;12640:88;12747:4;12744:1;12737:15;12771:4;12768:1;12761:15;12788:180;12836:77;12833:1;12826:88;12933:4;12930:1;12923:15;12957:4;12954:1;12947:15;12974:233;13013:3;13036:24;13054:5;13036:24;:::i;:::-;13027:33;;13082:66;13075:5;13072:77;13069:103;;13152:18;;:::i;:::-;13069:103;13199:1;13192:5;13188:13;13181:20;;12974:233;;;:::o;13213:143::-;13270:5;13301:6;13295:13;13286:22;;13317:33;13344:5;13317:33;:::i;:::-;13213:143;;;;:::o;13362:351::-;13432:6;13481:2;13469:9;13460:7;13456:23;13452:32;13449:119;;;13487:79;;:::i;:::-;13449:119;13607:1;13632:64;13688:7;13679:6;13668:9;13664:22;13632:64;:::i;:::-;13622:74;;13578:128;13362:351;;;;:::o;13719:332::-;13840:4;13878:2;13867:9;13863:18;13855:26;;13891:71;13959:1;13948:9;13944:17;13935:6;13891:71;:::i;:::-;13972:72;14040:2;14029:9;14025:18;14016:6;13972:72;:::i;:::-;13719:332;;;;;:::o;14057:137::-;14111:5;14142:6;14136:13;14127:22;;14158:30;14182:5;14158:30;:::i;:::-;14057:137;;;;:::o;14200:345::-;14267:6;14316:2;14304:9;14295:7;14291:23;14287:32;14284:119;;;14322:79;;:::i;:::-;14284:119;14442:1;14467:61;14520:7;14511:6;14500:9;14496:22;14467:61;:::i;:::-;14457:71;;14413:125;14200:345;;;;:::o;14551:233::-;14691:34;14687:1;14679:6;14675:14;14668:58;14760:16;14755:2;14747:6;14743:15;14736:41;14551:233;:::o;14790:366::-;14932:3;14953:67;15017:2;15012:3;14953:67;:::i;:::-;14946:74;;15029:93;15118:3;15029:93;:::i;:::-;15147:2;15142:3;15138:12;15131:19;;14790:366;;;:::o;15162:419::-;15328:4;15366:2;15355:9;15351:18;15343:26;;15415:9;15409:4;15405:20;15401:1;15390:9;15386:17;15379:47;15443:131;15569:4;15443:131;:::i;:::-;15435:139;;15162:419;;;:::o;15587:60::-;15615:3;15636:5;15629:12;;15587:60;;;:::o;15653:142::-;15703:9;15736:53;15754:34;15763:24;15781:5;15763:24;:::i;:::-;15754:34;:::i;:::-;15736:53;:::i;:::-;15723:66;;15653:142;;;:::o;15801:126::-;15851:9;15884:37;15915:5;15884:37;:::i;:::-;15871:50;;15801:126;;;:::o;15933:134::-;15991:9;16024:37;16055:5;16024:37;:::i;:::-;16011:50;;15933:134;;;:::o;16073:147::-;16168:45;16207:5;16168:45;:::i;:::-;16163:3;16156:58;16073:147;;:::o;16226:238::-;16327:4;16365:2;16354:9;16350:18;16342:26;;16378:79;16454:1;16443:9;16439:17;16430:6;16378:79;:::i;:::-;16226:238;;;;:::o;16470:223::-;16610:34;16606:1;16598:6;16594:14;16587:58;16679:6;16674:2;16666:6;16662:15;16655:31;16470:223;:::o;16699:366::-;16841:3;16862:67;16926:2;16921:3;16862:67;:::i;:::-;16855:74;;16938:93;17027:3;16938:93;:::i;:::-;17056:2;17051:3;17047:12;17040:19;;16699:366;;;:::o;17071:419::-;17237:4;17275:2;17264:9;17260:18;17252:26;;17324:9;17318:4;17314:20;17310:1;17299:9;17295:17;17288:47;17352:131;17478:4;17352:131;:::i;:::-;17344:139;;17071:419;;;:::o;17496:221::-;17636:34;17632:1;17624:6;17620:14;17613:58;17705:4;17700:2;17692:6;17688:15;17681:29;17496:221;:::o;17723:366::-;17865:3;17886:67;17950:2;17945:3;17886:67;:::i;:::-;17879:74;;17962:93;18051:3;17962:93;:::i;:::-;18080:2;18075:3;18071:12;18064:19;;17723:366;;;:::o;18095:419::-;18261:4;18299:2;18288:9;18284:18;18276:26;;18348:9;18342:4;18338:20;18334:1;18323:9;18319:17;18312:47;18376:131;18502:4;18376:131;:::i;:::-;18368:139;;18095:419;;;:::o;18520:194::-;18560:4;18580:20;18598:1;18580:20;:::i;:::-;18575:25;;18614:20;18632:1;18614:20;:::i;:::-;18609:25;;18658:1;18655;18651:9;18643:17;;18682:1;18676:4;18673:11;18670:37;;;18687:18;;:::i;:::-;18670:37;18520:194;;;;:::o;18720:224::-;18860:34;18856:1;18848:6;18844:14;18837:58;18929:7;18924:2;18916:6;18912:15;18905:32;18720:224;:::o;18950:366::-;19092:3;19113:67;19177:2;19172:3;19113:67;:::i;:::-;19106:74;;19189:93;19278:3;19189:93;:::i;:::-;19307:2;19302:3;19298:12;19291:19;;18950:366;;;:::o;19322:419::-;19488:4;19526:2;19515:9;19511:18;19503:26;;19575:9;19569:4;19565:20;19561:1;19550:9;19546:17;19539:47;19603:131;19729:4;19603:131;:::i;:::-;19595:139;;19322:419;;;:::o;19747:222::-;19887:34;19883:1;19875:6;19871:14;19864:58;19956:5;19951:2;19943:6;19939:15;19932:30;19747:222;:::o;19975:366::-;20117:3;20138:67;20202:2;20197:3;20138:67;:::i;:::-;20131:74;;20214:93;20303:3;20214:93;:::i;:::-;20332:2;20327:3;20323:12;20316:19;;19975:366;;;:::o;20347:419::-;20513:4;20551:2;20540:9;20536:18;20528:26;;20600:9;20594:4;20590:20;20586:1;20575:9;20571:17;20564:47;20628:131;20754:4;20628:131;:::i;:::-;20620:139;;20347:419;;;:::o;20772:236::-;20912:34;20908:1;20900:6;20896:14;20889:58;20981:19;20976:2;20968:6;20964:15;20957:44;20772:236;:::o;21014:366::-;21156:3;21177:67;21241:2;21236:3;21177:67;:::i;:::-;21170:74;;21253:93;21342:3;21253:93;:::i;:::-;21371:2;21366:3;21362:12;21355:19;;21014:366;;;:::o;21386:419::-;21552:4;21590:2;21579:9;21575:18;21567:26;;21639:9;21633:4;21629:20;21625:1;21614:9;21610:17;21603:47;21667:131;21793:4;21667:131;:::i;:::-;21659:139;;21386:419;;;:::o;21811:164::-;21951:16;21947:1;21939:6;21935:14;21928:40;21811:164;:::o;21981:366::-;22123:3;22144:67;22208:2;22203:3;22144:67;:::i;:::-;22137:74;;22220:93;22309:3;22220:93;:::i;:::-;22338:2;22333:3;22329:12;22322:19;;21981:366;;;:::o;22353:419::-;22519:4;22557:2;22546:9;22542:18;22534:26;;22606:9;22600:4;22596:20;22592:1;22581:9;22577:17;22570:47;22634:131;22760:4;22634:131;:::i;:::-;22626:139;;22353:419;;;:::o;22778:180::-;22918:32;22914:1;22906:6;22902:14;22895:56;22778:180;:::o;22964:366::-;23106:3;23127:67;23191:2;23186:3;23127:67;:::i;:::-;23120:74;;23203:93;23292:3;23203:93;:::i;:::-;23321:2;23316:3;23312:12;23305:19;;22964:366;;;:::o;23336:419::-;23502:4;23540:2;23529:9;23525:18;23517:26;;23589:9;23583:4;23579:20;23575:1;23564:9;23560:17;23553:47;23617:131;23743:4;23617:131;:::i;:::-;23609:139;;23336:419;;;:::o;23761:167::-;23901:19;23897:1;23889:6;23885:14;23878:43;23761:167;:::o;23934:366::-;24076:3;24097:67;24161:2;24156:3;24097:67;:::i;:::-;24090:74;;24173:93;24262:3;24173:93;:::i;:::-;24291:2;24286:3;24282:12;24275:19;;23934:366;;;:::o;24306:419::-;24472:4;24510:2;24499:9;24495:18;24487:26;;24559:9;24553:4;24549:20;24545:1;24534:9;24530:17;24523:47;24587:131;24713:4;24587:131;:::i;:::-;24579:139;;24306:419;;;:::o;24731:191::-;24771:3;24790:20;24808:1;24790:20;:::i;:::-;24785:25;;24824:20;24842:1;24824:20;:::i;:::-;24819:25;;24867:1;24864;24860:9;24853:16;;24888:3;24885:1;24882:10;24879:36;;;24895:18;;:::i;:::-;24879:36;24731:191;;;;:::o;24928:410::-;24968:7;24991:20;25009:1;24991:20;:::i;:::-;24986:25;;25025:20;25043:1;25025:20;:::i;:::-;25020:25;;25080:1;25077;25073:9;25102:30;25120:11;25102:30;:::i;:::-;25091:41;;25281:1;25272:7;25268:15;25265:1;25262:22;25242:1;25235:9;25215:83;25192:139;;25311:18;;:::i;:::-;25192:139;24976:362;24928:410;;;;:::o;25344:180::-;25392:77;25389:1;25382:88;25489:4;25486:1;25479:15;25513:4;25510:1;25503:15;25530:185;25570:1;25587:20;25605:1;25587:20;:::i;:::-;25582:25;;25621:20;25639:1;25621:20;:::i;:::-;25616:25;;25660:1;25650:35;;25665:18;;:::i;:::-;25650:35;25707:1;25704;25700:9;25695:14;;25530:185;;;;:::o;25721:180::-;25769:77;25766:1;25759:88;25866:4;25863:1;25856:15;25890:4;25887:1;25880:15;25907:143;25964:5;25995:6;25989:13;25980:22;;26011:33;26038:5;26011:33;:::i;:::-;25907:143;;;;:::o;26056:351::-;26126:6;26175:2;26163:9;26154:7;26150:23;26146:32;26143:119;;;26181:79;;:::i;:::-;26143:119;26301:1;26326:64;26382:7;26373:6;26362:9;26358:22;26326:64;:::i;:::-;26316:74;;26272:128;26056:351;;;;:::o;26413:85::-;26458:7;26487:5;26476:16;;26413:85;;;:::o;26504:158::-;26562:9;26595:61;26613:42;26622:32;26648:5;26622:32;:::i;:::-;26613:42;:::i;:::-;26595:61;:::i;:::-;26582:74;;26504:158;;;:::o;26668:147::-;26763:45;26802:5;26763:45;:::i;:::-;26758:3;26751:58;26668:147;;:::o;26821:114::-;26888:6;26922:5;26916:12;26906:22;;26821:114;;;:::o;26941:184::-;27040:11;27074:6;27069:3;27062:19;27114:4;27109:3;27105:14;27090:29;;26941:184;;;;:::o;27131:132::-;27198:4;27221:3;27213:11;;27251:4;27246:3;27242:14;27234:22;;27131:132;;;:::o;27269:108::-;27346:24;27364:5;27346:24;:::i;:::-;27341:3;27334:37;27269:108;;:::o;27383:179::-;27452:10;27473:46;27515:3;27507:6;27473:46;:::i;:::-;27551:4;27546:3;27542:14;27528:28;;27383:179;;;;:::o;27568:113::-;27638:4;27670;27665:3;27661:14;27653:22;;27568:113;;;:::o;27717:732::-;27836:3;27865:54;27913:5;27865:54;:::i;:::-;27935:86;28014:6;28009:3;27935:86;:::i;:::-;27928:93;;28045:56;28095:5;28045:56;:::i;:::-;28124:7;28155:1;28140:284;28165:6;28162:1;28159:13;28140:284;;;28241:6;28235:13;28268:63;28327:3;28312:13;28268:63;:::i;:::-;28261:70;;28354:60;28407:6;28354:60;:::i;:::-;28344:70;;28200:224;28187:1;28184;28180:9;28175:14;;28140:284;;;28144:14;28440:3;28433:10;;27841:608;;;27717:732;;;;:::o;28455:831::-;28718:4;28756:3;28745:9;28741:19;28733:27;;28770:71;28838:1;28827:9;28823:17;28814:6;28770:71;:::i;:::-;28851:80;28927:2;28916:9;28912:18;28903:6;28851:80;:::i;:::-;28978:9;28972:4;28968:20;28963:2;28952:9;28948:18;28941:48;29006:108;29109:4;29100:6;29006:108;:::i;:::-;28998:116;;29124:72;29192:2;29181:9;29177:18;29168:6;29124:72;:::i;:::-;29206:73;29274:3;29263:9;29259:19;29250:6;29206:73;:::i;:::-;28455:831;;;;;;;;:::o;29292:807::-;29541:4;29579:3;29568:9;29564:19;29556:27;;29593:71;29661:1;29650:9;29646:17;29637:6;29593:71;:::i;:::-;29674:72;29742:2;29731:9;29727:18;29718:6;29674:72;:::i;:::-;29756:80;29832:2;29821:9;29817:18;29808:6;29756:80;:::i;:::-;29846;29922:2;29911:9;29907:18;29898:6;29846:80;:::i;:::-;29936:73;30004:3;29993:9;29989:19;29980:6;29936:73;:::i;:::-;30019;30087:3;30076:9;30072:19;30063:6;30019:73;:::i;:::-;29292:807;;;;;;;;;:::o;30105:663::-;30193:6;30201;30209;30258:2;30246:9;30237:7;30233:23;30229:32;30226:119;;;30264:79;;:::i;:::-;30226:119;30384:1;30409:64;30465:7;30456:6;30445:9;30441:22;30409:64;:::i;:::-;30399:74;;30355:128;30522:2;30548:64;30604:7;30595:6;30584:9;30580:22;30548:64;:::i;:::-;30538:74;;30493:129;30661:2;30687:64;30743:7;30734:6;30723:9;30719:22;30687:64;:::i;:::-;30677:74;;30632:129;30105:663;;;;;:::o

Swarm Source

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