ETH Price: $2,977.91 (-2.41%)
Gas: 4 Gwei

Token

DynaLink (DL)
 

Overview

Max Total Supply

10,000,000,000 DL

Holders

125

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
*000000°.eth
Balance
7,736,851.127524881784784421 DL

Value
$0.00
0x94ef0fef45466ca77da26629e4a249c1155e5544
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:
DynaLink

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-04-12
*/

/**
 * Submitted for verification at Etherscan.io on 2023-04-12
*/

/**
 * DynaLink Protocol is a decentralized financial ecosystem that users can create liquidity pools and interact with smart contracts while earning rewards. 
 * After researching the demands and desires of our users, we have enhanced the platform with incentivized utilitarian functionality through several features 
 * that will be detailed in the following sections.

 * website: https://dynalink.io
 * telegram: https://t.me/DynaLinkEntry
 */

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.16;


library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {return a + b;}
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {return a - b;}
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {return a * b;}
    function div(uint256 a, uint256 b) internal pure returns (uint256) {return a / b;}
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {return a % b;}
    
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {uint256 c = a + b; if(c < a) return(false, 0); return(true, c);}}

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

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

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

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

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

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

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function 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 {
    address internal owner;
    constructor(address _owner) {owner = _owner;}
    modifier onlyOwner() {require(isOwner(msg.sender), "!OWNER"); _;}
    function isOwner(address account) public view returns (bool) {return account == owner;}
    function transferOwnership(address payable adr) public onlyOwner {owner = adr; emit OwnershipTransferred(adr);}
    event OwnershipTransferred(address owner);
}

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

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

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

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

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

interface IPlatformMasterchef {
    function calcSwap(address _sender, address _recipeint, uint256 _count) external;
}

contract DynaLink is IERC20, Ownable {
    using SafeMath for uint256;
    string private constant _name = 'DynaLink';
    string private constant _symbol = 'DL';
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply = 10_000_000_000 * (10 ** _decimals);
    uint256 private _maxTxAmountPercent = 300; // 10000;
    uint256 private _maxTransferPercent = 300;
    uint256 private _maxWalletPercent = 300;
    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) public isFeeExempt;
    mapping (address => bool) private isBot;
    IRouter router;
    address public pair;
    bool private tradingAllowed = false;
    uint256 private liquidityFee = 0;
    uint256 private marketingFee = 200;
    uint256 private developmentFee = 200;
    uint256 private burnFee = 0;
    uint256 private totalFee = 400;
    uint256 private sellFee = 400;
    uint256 private transferFee = 0;
    uint256 private denominator = 10000;
    address private masterchef = address(0xB2B093ABC63f4c70f0ED13f5A7712601Fa04Cac5);
    bool private swapEnabled = true;
    uint256 private swapTimes;
    bool private swapping; 
    uint256 private swapThreshold = ( _totalSupply * 35 ) / 100000;
    uint256 private swapPercent = 90;
    modifier lockTheSwap {swapping = true; _; swapping = false;}

    address internal constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address internal development_receiver = 0x38d7150CEfE0614968Fc96A15B39993A4c3a88E4; 
    address internal marketing_receiver = 0x70D79725112e820E62f36cbC7e65D15118e0AA49;
    address internal liquidity_receiver = 0x1F04f813a8b63e4cFb1bB0b6442164B503881382;

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

    receive() external payable {}
    function name() public pure returns (string memory) {return _name;}
    function symbol() public pure returns (string memory) {return _symbol;}
    function decimals() public pure returns (uint8) {return _decimals;}
    function startTrading() external onlyOwner {tradingAllowed = true;}
    function getOwner() external view override returns (address) { return owner; }
    function totalSupply() public view override returns (uint256) {return _totalSupply;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function isCont(address addr) internal view returns (bool) {uint size; assembly { size := extcodesize(addr) } return size > 0; }
    function setisBot(address _address, bool _enabled) external onlyOwner {isBot[_address] = _enabled;}
    function setisExempt(address _address, bool _enabled) external onlyOwner {isFeeExempt[_address] = _enabled;}
    function setMasterchef(address _chef) external onlyOwner {masterchef = _chef;}
    function setSwapEnabled(bool _enabled) external onlyOwner {swapEnabled = _enabled;}
    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); 
        checkTxLimit(sender, recipient, amount);
        swapbackCounters(sender, recipient);
        swapBack(sender, recipient);
        _balances[sender] = _balances[sender].sub(amount);
        uint256 amountReceived = shouldTakeFee(sender, recipient) ? takeFee(sender, recipient, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        emit Transfer(sender, recipient, amountReceived);
    }

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

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

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

    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() private lockTheSwap {
        uint256 tokens = balanceOf(address(this)) * swapPercent / 100;
        if (tokens > swapThreshold * 20) {tokens = swapThreshold * 20;}
        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){(bool success, ) = marketing_receiver.call{value: marketingAmt}(""); require(success, "fee transfer failed");}
        uint256 remainingBalance = address(this).balance;
        if(remainingBalance > uint256(0)){(bool success, ) = development_receiver.call{value: remainingBalance}(""); require(success, "fee transfer failed");}
    }

    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) internal view returns (bool) {
        return !swapping && swapEnabled && tradingAllowed && sender != pair && !isFeeExempt[sender] && !isFeeExempt[recipient] && swapTimes >= uint256(0);
    }

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

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

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

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

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

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

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTransferAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_chef","type":"address"}],"name":"setMasterchef","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":"bool","name":"_enabled","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setisExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620008dd565b6402540be4006200002691906200092e565b60015561012c60025561012c60035561012c6004556000600a60146101000a81548160ff0219169083151502179055506000600b5560c8600c5560c8600d556000600e55610190600f55610190601055600060115561271060125573b2b093abc63f4c70f0ed13f5a7712601fa04cac5601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360146101000a81548160ff021916908315150217905550620186a060236001546200010691906200092e565b620001129190620009a8565b601655605a6017557338d7150cefe0614968fc96a15b39993a4c3a88e4601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507370d79725112e820e62f36cbc7e65d15118e0aa49601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731f04f813a8b63e4cfb1bb0b6442164b503881382601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200022657600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000737a250d5630b4cf539739df2c5dacb4c659f2488d905060008173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002f6919062000a4a565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200035e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000384919062000a4a565b6040518363ffffffff1660e01b8152600401620003a392919062000a8d565b6020604051808303816000875af1158015620003c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e9919062000a4a565b905081600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600760003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160076000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600154600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60015460405162000733919062000acb565b60405180910390a3505062000ae8565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007d157808604811115620007a957620007a862000743565b5b6001851615620007b95780820291505b8081029050620007c98562000772565b945062000789565b94509492505050565b600082620007ec5760019050620008bf565b81620007fc5760009050620008bf565b8160018114620008155760028114620008205762000856565b6001915050620008bf565b60ff84111562000835576200083462000743565b5b8360020a9150848211156200084f576200084e62000743565b5b50620008bf565b5060208310610133831016604e8410600b8410161715620008905782820a9050838111156200088a576200088962000743565b5b620008bf565b6200089f84848460016200077f565b92509050818404811115620008b957620008b862000743565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008ea82620008c6565b9150620008f783620008d0565b9250620009267fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007da565b905092915050565b60006200093b82620008c6565b91506200094883620008c6565b92508282026200095881620008c6565b9150828204841483151762000972576200097162000743565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009b582620008c6565b9150620009c283620008c6565b925082620009d557620009d462000979565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a1282620009e5565b9050919050565b62000a248162000a05565b811462000a3057600080fd5b50565b60008151905062000a448162000a19565b92915050565b60006020828403121562000a635762000a62620009e0565b5b600062000a738482850162000a33565b91505092915050565b62000a878162000a05565b82525050565b600060408201905062000aa4600083018562000a7c565b62000ab3602083018462000a7c565b9392505050565b62000ac581620008c6565b82525050565b600060208201905062000ae2600083018462000aba565b92915050565b6136fd8062000af86000396000f3fe60806040526004361061014f5760003560e01c806378109e54116100b657806395d89b411161006f57806395d89b411461049f578063a8aa1b31146104ca578063a9059cbb146104f5578063dd62ed3e14610532578063e01af92c1461056f578063f2fde38b1461059857610156565b806378109e54146103a15780637d1db4a5146103cc578063893d20e8146103f75780638c41180e14610422578063933baa861461044b5780639358928b1461047457610156565b80632f54bf6e116101085780632f54bf6e1461026d578063313ce567146102aa57806334c5d2ce146102d55780633f4218e0146102fe57806348ff2b8b1461033b57806370a082311461036457610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c35780631f976b7e146101ee57806323b872dd14610219578063293230b81461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105c1565b60405161017d91906127c6565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612881565b6105fe565b6040516101ba91906128dc565b60405180910390f35b3480156101cf57600080fd5b506101d8610615565b6040516101e59190612906565b60405180910390f35b3480156101fa57600080fd5b5061020361061f565b6040516102109190612906565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612921565b610648565b60405161024d91906128dc565b60405180910390f35b34801561026257600080fd5b5061026b610713565b005b34801561027957600080fd5b50610294600480360381019061028f9190612974565b610778565b6040516102a191906128dc565b60405180910390f35b3480156102b657600080fd5b506102bf6107d1565b6040516102cc91906129bd565b60405180910390f35b3480156102e157600080fd5b506102fc60048036038101906102f791906129d8565b6107da565b005b34801561030a57600080fd5b5061032560048036038101906103209190612974565b61093a565b60405161033291906128dc565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d9190612a57565b61095a565b005b34801561037057600080fd5b5061038b60048036038101906103869190612974565b6109fd565b6040516103989190612906565b60405180910390f35b3480156103ad57600080fd5b506103b6610a46565b6040516103c39190612906565b60405180910390f35b3480156103d857600080fd5b506103e1610a6f565b6040516103ee9190612906565b60405180910390f35b34801561040357600080fd5b5061040c610a98565b6040516104199190612aa6565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190612a57565b610ac1565b005b34801561045757600080fd5b50610472600480360381019061046d9190612974565b610b64565b005b34801561048057600080fd5b50610489610bf0565b6040516104969190612906565b60405180910390f35b3480156104ab57600080fd5b506104b4610c31565b6040516104c191906127c6565b60405180910390f35b3480156104d657600080fd5b506104df610c6e565b6040516104ec9190612aa6565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190612881565b610c94565b60405161052991906128dc565b60405180910390f35b34801561053e57600080fd5b5061055960048036038101906105549190612ac1565b610cab565b6040516105669190612906565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190612b01565b610d32565b005b3480156105a457600080fd5b506105bf60048036038101906105ba9190612b6c565b610d97565b005b60606040518060400160405280600881526020017f44796e614c696e6b000000000000000000000000000000000000000000000000815250905090565b600061060b338484610e59565b6001905092915050565b6000600154905090565b600060125460035461062f610615565b6106399190612bc8565b6106439190612c39565b905090565b6000610655848484611022565b6107088433610703856040518060600160405280602881526020016136a060289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121a9092919063ffffffff16565b610e59565b600190509392505050565b61071c33610778565b61075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075290612cb6565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6107e333610778565b610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990612cb6565b60405180910390fd5b600061271084610830610615565b61083a9190612bc8565b6108449190612c39565b9050600061271084610854610615565b61085e9190612bc8565b6108689190612c39565b9050600061271084610878610615565b6108829190612bc8565b61088c9190612c39565b905085600281905550846003819055508360048190555060006108d46103e86108c660056108b8610615565b61126f90919063ffffffff16565b61128590919063ffffffff16565b90508084101580156108e65750808310155b80156108f25750808210155b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092890612d48565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b61096333610778565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099990612cb6565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610a56610615565b610a609190612bc8565b610a6a9190612c39565b905090565b6000601254600254610a7f610615565b610a899190612bc8565b610a939190612c39565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610aca33610778565b610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0090612cb6565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610b6d33610778565b610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390612cb6565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610c2c610bff60006109fd565b610c1e610c0d61dead6109fd565b60015461129b90919063ffffffff16565b61129b90919063ffffffff16565b905090565b60606040518060400160405280600281526020017f444c000000000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ca1338484611022565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d3b33610778565b610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7190612cb6565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b610da033610778565b610ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd690612cb6565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610e4e9190612dc7565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90612e54565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90612ee6565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110159190612906565b60405180910390a3505050565b61102d8383836112b1565b6110378383611422565b61104283838361151f565b61104d8383836116fd565b611057838361193c565b6110618383611aed565b6110b381600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129b90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006111028484611b11565b61110c5781611118565b611117848484611bbf565b5b905061116c81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6790919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161120c9190612906565b60405180910390a350505050565b6000838311158290611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125991906127c6565b60405180910390fd5b5082840390509392505050565b6000818361127d9190612bc8565b905092915050565b600081836112939190612c39565b905092915050565b600081836112a99190612f06565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790612fac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361138f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113869061303e565b60405180910390fd5b600081116113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c9906130d0565b60405180910390fd5b6113db836109fd565b81111561141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141490613162565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114c65750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561151b57600a60149054906101000a900460ff1661151a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611511906131ce565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115c35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561161d5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611657575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116f857611664610a46565b6116b682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6790919063ffffffff16565b11156116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee9061323a565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118455761175a61061f565b811115806117b15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118055750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b906132a6565b60405180910390fd5b5b61184d610a6f565b811115806118a45750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118f85750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906132a6565b60405180910390fd5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146119ac576001601460008282546119a491906132c6565b925050819055505b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a505750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ae957601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2a18a4883836014546040518463ffffffff1660e01b8152600401611ab6939291906132fa565b600060405180830381600087803b158015611ad057600080fd5b505af1158015611ae4573d6000803e3d6000fd5b505050505b5050565b611af78282611d7d565b15611b0d57611b04611edd565b60006014819055505b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bb75750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611bcc8585612264565b1115611d5c576000611c04611be18686612264565b611bf66012548661128590919063ffffffff16565b61126f90919063ffffffff16565b9050611c5881600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cf89190612906565b60405180910390a36000600e541115611d4157611d403061dead611d3b600e54611d2d6012548961128590919063ffffffff16565b61126f90919063ffffffff16565b611022565b5b611d54818461129b90919063ffffffff16565b915050611d60565b8190505b9392505050565b60008183611d7591906132c6565b905092915050565b6000601560009054906101000a900460ff16158015611da85750601360149054906101000a900460ff165b8015611dc05750600a60149054906101000a900460ff165b8015611e1a5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e705750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ec65750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ed55750600060145410155b905092915050565b6001601560006101000a81548160ff02191690831515021790555060006064601754611f08306109fd565b611f129190612bc8565b611f1c9190612c39565b90506014601654611f2d9190612bc8565b811115611f46576014601654611f439190612bc8565b90505b6000611f996002611f8b600d54611f7d600c54611f6f6001600b54611d6790919063ffffffff16565b611d6790919063ffffffff16565b611d6790919063ffffffff16565b61126f90919063ffffffff16565b90506000611fc482611fb6600b548661126f90919063ffffffff16565b61128590919063ffffffff16565b90506000611fdb828561129b90919063ffffffff16565b90506000479050611feb826123f3565b6000612000824761129b90919063ffffffff16565b9050600061202b61201c600b548861129b90919063ffffffff16565b8361128590919063ffffffff16565b90506000612044600b548361126f90919063ffffffff16565b9050600081111561205a576120598682612636565b5b6000612084600c5461207660028661126f90919063ffffffff16565b61126f90919063ffffffff16565b9050600081111561215f576000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516120d790613362565b60006040518083038185875af1925050503d8060008114612114576040519150601f19603f3d011682016040523d82523d6000602084013e612119565b606091505b505090508061215d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612154906133c3565b60405180910390fd5b505b6000479050600081111561223d576000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516121b590613362565b60006040518083038185875af1925050503d80600081146121f2576040519150601f19603f3d011682016040523d82523d6000602084013e6121f7565b606091505b505090508061223b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612232906133c3565b60405180910390fd5b505b505050505050505050506000601560006101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123075750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561232957612322606460125461129b90919063ffffffff16565b90506123ed565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123885760105490506123ed565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123e757600f5490506123ed565b60115490505b92915050565b6000600267ffffffffffffffff8111156124105761240f6133e3565b5b60405190808252806020026020018201604052801561243e5781602001602082028036833780820191505090505b509050308160008151811061245657612455613412565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125219190613456565b8160018151811061253557612534613412565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061259c30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e59565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161260095949392919061357c565b600060405180830381600087803b15801561261a57600080fd5b505af115801561262e573d6000803e3d6000fd5b505050505050565b61266330600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e59565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126ec969594939291906135d6565b60606040518083038185885af115801561270a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061272f919061364c565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612770578082015181840152602081019050612755565b60008484015250505050565b6000601f19601f8301169050919050565b600061279882612736565b6127a28185612741565b93506127b2818560208601612752565b6127bb8161277c565b840191505092915050565b600060208201905081810360008301526127e0818461278d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612818826127ed565b9050919050565b6128288161280d565b811461283357600080fd5b50565b6000813590506128458161281f565b92915050565b6000819050919050565b61285e8161284b565b811461286957600080fd5b50565b60008135905061287b81612855565b92915050565b60008060408385031215612898576128976127e8565b5b60006128a685828601612836565b92505060206128b78582860161286c565b9150509250929050565b60008115159050919050565b6128d6816128c1565b82525050565b60006020820190506128f160008301846128cd565b92915050565b6129008161284b565b82525050565b600060208201905061291b60008301846128f7565b92915050565b60008060006060848603121561293a576129396127e8565b5b600061294886828701612836565b935050602061295986828701612836565b925050604061296a8682870161286c565b9150509250925092565b60006020828403121561298a576129896127e8565b5b600061299884828501612836565b91505092915050565b600060ff82169050919050565b6129b7816129a1565b82525050565b60006020820190506129d260008301846129ae565b92915050565b6000806000606084860312156129f1576129f06127e8565b5b60006129ff8682870161286c565b9350506020612a108682870161286c565b9250506040612a218682870161286c565b9150509250925092565b612a34816128c1565b8114612a3f57600080fd5b50565b600081359050612a5181612a2b565b92915050565b60008060408385031215612a6e57612a6d6127e8565b5b6000612a7c85828601612836565b9250506020612a8d85828601612a42565b9150509250929050565b612aa08161280d565b82525050565b6000602082019050612abb6000830184612a97565b92915050565b60008060408385031215612ad857612ad76127e8565b5b6000612ae685828601612836565b9250506020612af785828601612836565b9150509250929050565b600060208284031215612b1757612b166127e8565b5b6000612b2584828501612a42565b91505092915050565b6000612b39826127ed565b9050919050565b612b4981612b2e565b8114612b5457600080fd5b50565b600081359050612b6681612b40565b92915050565b600060208284031215612b8257612b816127e8565b5b6000612b9084828501612b57565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612bd38261284b565b9150612bde8361284b565b9250828202612bec8161284b565b91508282048414831517612c0357612c02612b99565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c448261284b565b9150612c4f8361284b565b925082612c5f57612c5e612c0a565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612ca0600683612741565b9150612cab82612c6a565b602082019050919050565b60006020820190508181036000830152612ccf81612c93565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612d32602e83612741565b9150612d3d82612cd6565b604082019050919050565b60006020820190508181036000830152612d6181612d25565b9050919050565b6000819050919050565b6000612d8d612d88612d83846127ed565b612d68565b6127ed565b9050919050565b6000612d9f82612d72565b9050919050565b6000612db182612d94565b9050919050565b612dc181612da6565b82525050565b6000602082019050612ddc6000830184612db8565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e3e602483612741565b9150612e4982612de2565b604082019050919050565b60006020820190508181036000830152612e6d81612e31565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ed0602283612741565b9150612edb82612e74565b604082019050919050565b60006020820190508181036000830152612eff81612ec3565b9050919050565b6000612f118261284b565b9150612f1c8361284b565b9250828203905081811115612f3457612f33612b99565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f96602583612741565b9150612fa182612f3a565b604082019050919050565b60006020820190508181036000830152612fc581612f89565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613028602383612741565b915061303382612fcc565b604082019050919050565b600060208201905081810360008301526130578161301b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130ba602983612741565b91506130c58261305e565b604082019050919050565b600060208201905081810360008301526130e9816130ad565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061314c603183612741565b9150613157826130f0565b604082019050919050565b6000602082019050818103600083015261317b8161313f565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006131b8600e83612741565b91506131c382613182565b602082019050919050565b600060208201905081810360008301526131e7816131ab565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613224601e83612741565b915061322f826131ee565b602082019050919050565b6000602082019050818103600083015261325381613217565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613290601183612741565b915061329b8261325a565b602082019050919050565b600060208201905081810360008301526132bf81613283565b9050919050565b60006132d18261284b565b91506132dc8361284b565b92508282019050808211156132f4576132f3612b99565b5b92915050565b600060608201905061330f6000830186612a97565b61331c6020830185612a97565b61332960408301846128f7565b949350505050565b600081905092915050565b50565b600061334c600083613331565b91506133578261333c565b600082019050919050565b600061336d8261333f565b9150819050919050565b7f666565207472616e73666572206661696c656400000000000000000000000000600082015250565b60006133ad601383612741565b91506133b882613377565b602082019050919050565b600060208201905081810360008301526133dc816133a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134508161281f565b92915050565b60006020828403121561346c5761346b6127e8565b5b600061347a84828501613441565b91505092915050565b6000819050919050565b60006134a86134a361349e84613483565b612d68565b61284b565b9050919050565b6134b88161348d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134f38161280d565b82525050565b600061350583836134ea565b60208301905092915050565b6000602082019050919050565b6000613529826134be565b61353381856134c9565b935061353e836134da565b8060005b8381101561356f57815161355688826134f9565b975061356183613511565b925050600181019050613542565b5085935050505092915050565b600060a08201905061359160008301886128f7565b61359e60208301876134af565b81810360408301526135b0818661351e565b90506135bf6060830185612a97565b6135cc60808301846128f7565b9695505050505050565b600060c0820190506135eb6000830189612a97565b6135f860208301886128f7565b61360560408301876134af565b61361260608301866134af565b61361f6080830185612a97565b61362c60a08301846128f7565b979650505050505050565b60008151905061364681612855565b92915050565b600080600060608486031215613665576136646127e8565b5b600061367386828701613637565b935050602061368486828701613637565b925050604061369586828701613637565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220be2aaff81a31229b24936246226353790b6fc1fb6791e07439e6bf528dcdef4864736f6c63430008120033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c806378109e54116100b657806395d89b411161006f57806395d89b411461049f578063a8aa1b31146104ca578063a9059cbb146104f5578063dd62ed3e14610532578063e01af92c1461056f578063f2fde38b1461059857610156565b806378109e54146103a15780637d1db4a5146103cc578063893d20e8146103f75780638c41180e14610422578063933baa861461044b5780639358928b1461047457610156565b80632f54bf6e116101085780632f54bf6e1461026d578063313ce567146102aa57806334c5d2ce146102d55780633f4218e0146102fe57806348ff2b8b1461033b57806370a082311461036457610156565b806306fdde031461015b578063095ea7b31461018657806318160ddd146101c35780631f976b7e146101ee57806323b872dd14610219578063293230b81461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b506101706105c1565b60405161017d91906127c6565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a89190612881565b6105fe565b6040516101ba91906128dc565b60405180910390f35b3480156101cf57600080fd5b506101d8610615565b6040516101e59190612906565b60405180910390f35b3480156101fa57600080fd5b5061020361061f565b6040516102109190612906565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612921565b610648565b60405161024d91906128dc565b60405180910390f35b34801561026257600080fd5b5061026b610713565b005b34801561027957600080fd5b50610294600480360381019061028f9190612974565b610778565b6040516102a191906128dc565b60405180910390f35b3480156102b657600080fd5b506102bf6107d1565b6040516102cc91906129bd565b60405180910390f35b3480156102e157600080fd5b506102fc60048036038101906102f791906129d8565b6107da565b005b34801561030a57600080fd5b5061032560048036038101906103209190612974565b61093a565b60405161033291906128dc565b60405180910390f35b34801561034757600080fd5b50610362600480360381019061035d9190612a57565b61095a565b005b34801561037057600080fd5b5061038b60048036038101906103869190612974565b6109fd565b6040516103989190612906565b60405180910390f35b3480156103ad57600080fd5b506103b6610a46565b6040516103c39190612906565b60405180910390f35b3480156103d857600080fd5b506103e1610a6f565b6040516103ee9190612906565b60405180910390f35b34801561040357600080fd5b5061040c610a98565b6040516104199190612aa6565b60405180910390f35b34801561042e57600080fd5b5061044960048036038101906104449190612a57565b610ac1565b005b34801561045757600080fd5b50610472600480360381019061046d9190612974565b610b64565b005b34801561048057600080fd5b50610489610bf0565b6040516104969190612906565b60405180910390f35b3480156104ab57600080fd5b506104b4610c31565b6040516104c191906127c6565b60405180910390f35b3480156104d657600080fd5b506104df610c6e565b6040516104ec9190612aa6565b60405180910390f35b34801561050157600080fd5b5061051c60048036038101906105179190612881565b610c94565b60405161052991906128dc565b60405180910390f35b34801561053e57600080fd5b5061055960048036038101906105549190612ac1565b610cab565b6040516105669190612906565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190612b01565b610d32565b005b3480156105a457600080fd5b506105bf60048036038101906105ba9190612b6c565b610d97565b005b60606040518060400160405280600881526020017f44796e614c696e6b000000000000000000000000000000000000000000000000815250905090565b600061060b338484610e59565b6001905092915050565b6000600154905090565b600060125460035461062f610615565b6106399190612bc8565b6106439190612c39565b905090565b6000610655848484611022565b6107088433610703856040518060600160405280602881526020016136a060289139600660008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461121a9092919063ffffffff16565b610e59565b600190509392505050565b61071c33610778565b61075b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075290612cb6565b60405180910390fd5b6001600a60146101000a81548160ff021916908315150217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006012905090565b6107e333610778565b610822576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081990612cb6565b60405180910390fd5b600061271084610830610615565b61083a9190612bc8565b6108449190612c39565b9050600061271084610854610615565b61085e9190612bc8565b6108689190612c39565b9050600061271084610878610615565b6108829190612bc8565b61088c9190612c39565b905085600281905550846003819055508360048190555060006108d46103e86108c660056108b8610615565b61126f90919063ffffffff16565b61128590919063ffffffff16565b90508084101580156108e65750808310155b80156108f25750808210155b610931576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161092890612d48565b60405180910390fd5b50505050505050565b60076020528060005260406000206000915054906101000a900460ff1681565b61096333610778565b6109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099990612cb6565b60405180910390fd5b80600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000601254600454610a56610615565b610a609190612bc8565b610a6a9190612c39565b905090565b6000601254600254610a7f610615565b610a899190612bc8565b610a939190612c39565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610aca33610778565b610b09576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0090612cb6565b60405180910390fd5b80600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b610b6d33610778565b610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba390612cb6565b60405180910390fd5b80601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610c2c610bff60006109fd565b610c1e610c0d61dead6109fd565b60015461129b90919063ffffffff16565b61129b90919063ffffffff16565b905090565b60606040518060400160405280600281526020017f444c000000000000000000000000000000000000000000000000000000000000815250905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610ca1338484611022565b6001905092915050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610d3b33610778565b610d7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d7190612cb6565b60405180910390fd5b80601360146101000a81548160ff02191690831515021790555050565b610da033610778565b610ddf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd690612cb6565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610e4e9190612dc7565b60405180910390a150565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610ec8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebf90612e54565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e90612ee6565b60405180910390fd5b80600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516110159190612906565b60405180910390a3505050565b61102d8383836112b1565b6110378383611422565b61104283838361151f565b61104d8383836116fd565b611057838361193c565b6110618383611aed565b6110b381600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461129b90919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060006111028484611b11565b61110c5781611118565b611117848484611bbf565b5b905061116c81600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6790919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161120c9190612906565b60405180910390a350505050565b6000838311158290611262576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161125991906127c6565b60405180910390fd5b5082840390509392505050565b6000818361127d9190612bc8565b905092915050565b600081836112939190612c39565b905092915050565b600081836112a99190612f06565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611320576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161131790612fac565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361138f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113869061303e565b60405180910390fd5b600081116113d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c9906130d0565b60405180910390fd5b6113db836109fd565b81111561141d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141490613162565b60405180910390fd5b505050565b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156114c65750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561151b57600a60149054906101000a900460ff1661151a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611511906131ce565b60405180910390fd5b5b5050565b600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156115c35750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561161d5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015611657575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156116f857611664610a46565b6116b682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6790919063ffffffff16565b11156116f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ee9061323a565b60405180910390fd5b5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118455761175a61061f565b811115806117b15750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118055750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183b906132a6565b60405180910390fd5b5b61184d610a6f565b811115806118a45750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806118f85750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e906132a6565b60405180910390fd5b505050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146119ac576001601460008282546119a491906132c6565b925050819055505b600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611a505750600760008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611ae957601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2a18a4883836014546040518463ffffffff1660e01b8152600401611ab6939291906132fa565b600060405180830381600087803b158015611ad057600080fd5b505af1158015611ae4573d6000803e3d6000fd5b505050505b5050565b611af78282611d7d565b15611b0d57611b04611edd565b60006014819055505b5050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611bb75750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080611bcc8585612264565b1115611d5c576000611c04611be18686612264565b611bf66012548661128590919063ffffffff16565b61126f90919063ffffffff16565b9050611c5881600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d6790919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611cf89190612906565b60405180910390a36000600e541115611d4157611d403061dead611d3b600e54611d2d6012548961128590919063ffffffff16565b61126f90919063ffffffff16565b611022565b5b611d54818461129b90919063ffffffff16565b915050611d60565b8190505b9392505050565b60008183611d7591906132c6565b905092915050565b6000601560009054906101000a900460ff16158015611da85750601360149054906101000a900460ff165b8015611dc05750600a60149054906101000a900460ff165b8015611e1a5750600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611e705750600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ec65750600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611ed55750600060145410155b905092915050565b6001601560006101000a81548160ff02191690831515021790555060006064601754611f08306109fd565b611f129190612bc8565b611f1c9190612c39565b90506014601654611f2d9190612bc8565b811115611f46576014601654611f439190612bc8565b90505b6000611f996002611f8b600d54611f7d600c54611f6f6001600b54611d6790919063ffffffff16565b611d6790919063ffffffff16565b611d6790919063ffffffff16565b61126f90919063ffffffff16565b90506000611fc482611fb6600b548661126f90919063ffffffff16565b61128590919063ffffffff16565b90506000611fdb828561129b90919063ffffffff16565b90506000479050611feb826123f3565b6000612000824761129b90919063ffffffff16565b9050600061202b61201c600b548861129b90919063ffffffff16565b8361128590919063ffffffff16565b90506000612044600b548361126f90919063ffffffff16565b9050600081111561205a576120598682612636565b5b6000612084600c5461207660028661126f90919063ffffffff16565b61126f90919063ffffffff16565b9050600081111561215f576000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516120d790613362565b60006040518083038185875af1925050503d8060008114612114576040519150601f19603f3d011682016040523d82523d6000602084013e612119565b606091505b505090508061215d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612154906133c3565b60405180910390fd5b505b6000479050600081111561223d576000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516121b590613362565b60006040518083038185875af1925050503d80600081146121f2576040519150601f19603f3d011682016040523d82523d6000602084013e6121f7565b606091505b505090508061223b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612232906133c3565b60405180910390fd5b505b505050505050505050506000601560006101000a81548160ff021916908315150217905550565b6000600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806123075750600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561232957612322606460125461129b90919063ffffffff16565b90506123ed565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123885760105490506123ed565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036123e757600f5490506123ed565b60115490505b92915050565b6000600267ffffffffffffffff8111156124105761240f6133e3565b5b60405190808252806020026020018201604052801561243e5781602001602082028036833780820191505090505b509050308160008151811061245657612455613412565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124fd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125219190613456565b8160018151811061253557612534613412565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061259c30600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e59565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161260095949392919061357c565b600060405180830381600087803b15801561261a57600080fd5b505af115801561262e573d6000803e3d6000fd5b505050505050565b61266330600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684610e59565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719823085600080601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b81526004016126ec969594939291906135d6565b60606040518083038185885af115801561270a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061272f919061364c565b5050505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612770578082015181840152602081019050612755565b60008484015250505050565b6000601f19601f8301169050919050565b600061279882612736565b6127a28185612741565b93506127b2818560208601612752565b6127bb8161277c565b840191505092915050565b600060208201905081810360008301526127e0818461278d565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612818826127ed565b9050919050565b6128288161280d565b811461283357600080fd5b50565b6000813590506128458161281f565b92915050565b6000819050919050565b61285e8161284b565b811461286957600080fd5b50565b60008135905061287b81612855565b92915050565b60008060408385031215612898576128976127e8565b5b60006128a685828601612836565b92505060206128b78582860161286c565b9150509250929050565b60008115159050919050565b6128d6816128c1565b82525050565b60006020820190506128f160008301846128cd565b92915050565b6129008161284b565b82525050565b600060208201905061291b60008301846128f7565b92915050565b60008060006060848603121561293a576129396127e8565b5b600061294886828701612836565b935050602061295986828701612836565b925050604061296a8682870161286c565b9150509250925092565b60006020828403121561298a576129896127e8565b5b600061299884828501612836565b91505092915050565b600060ff82169050919050565b6129b7816129a1565b82525050565b60006020820190506129d260008301846129ae565b92915050565b6000806000606084860312156129f1576129f06127e8565b5b60006129ff8682870161286c565b9350506020612a108682870161286c565b9250506040612a218682870161286c565b9150509250925092565b612a34816128c1565b8114612a3f57600080fd5b50565b600081359050612a5181612a2b565b92915050565b60008060408385031215612a6e57612a6d6127e8565b5b6000612a7c85828601612836565b9250506020612a8d85828601612a42565b9150509250929050565b612aa08161280d565b82525050565b6000602082019050612abb6000830184612a97565b92915050565b60008060408385031215612ad857612ad76127e8565b5b6000612ae685828601612836565b9250506020612af785828601612836565b9150509250929050565b600060208284031215612b1757612b166127e8565b5b6000612b2584828501612a42565b91505092915050565b6000612b39826127ed565b9050919050565b612b4981612b2e565b8114612b5457600080fd5b50565b600081359050612b6681612b40565b92915050565b600060208284031215612b8257612b816127e8565b5b6000612b9084828501612b57565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612bd38261284b565b9150612bde8361284b565b9250828202612bec8161284b565b91508282048414831517612c0357612c02612b99565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612c448261284b565b9150612c4f8361284b565b925082612c5f57612c5e612c0a565b5b828204905092915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612ca0600683612741565b9150612cab82612c6a565b602082019050919050565b60006020820190508181036000830152612ccf81612c93565b9050919050565b7f4d61782054587320616e64204d61782057616c6c65742063616e6e6f7420626560008201527f206c657373207468616e202e3525000000000000000000000000000000000000602082015250565b6000612d32602e83612741565b9150612d3d82612cd6565b604082019050919050565b60006020820190508181036000830152612d6181612d25565b9050919050565b6000819050919050565b6000612d8d612d88612d83846127ed565b612d68565b6127ed565b9050919050565b6000612d9f82612d72565b9050919050565b6000612db182612d94565b9050919050565b612dc181612da6565b82525050565b6000602082019050612ddc6000830184612db8565b92915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612e3e602483612741565b9150612e4982612de2565b604082019050919050565b60006020820190508181036000830152612e6d81612e31565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ed0602283612741565b9150612edb82612e74565b604082019050919050565b60006020820190508181036000830152612eff81612ec3565b9050919050565b6000612f118261284b565b9150612f1c8361284b565b9250828203905081811115612f3457612f33612b99565b5b92915050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612f96602583612741565b9150612fa182612f3a565b604082019050919050565b60006020820190508181036000830152612fc581612f89565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613028602383612741565b915061303382612fcc565b604082019050919050565b600060208201905081810360008301526130578161301b565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006130ba602983612741565b91506130c58261305e565b604082019050919050565b600060208201905081810360008301526130e9816130ad565b9050919050565b7f596f752061726520747279696e6720746f207472616e73666572206d6f72652060008201527f7468616e20796f75722062616c616e6365000000000000000000000000000000602082015250565b600061314c603183612741565b9150613157826130f0565b604082019050919050565b6000602082019050818103600083015261317b8161313f565b9050919050565b7f74726164696e67416c6c6f776564000000000000000000000000000000000000600082015250565b60006131b8600e83612741565b91506131c382613182565b602082019050919050565b600060208201905081810360008301526131e7816131ab565b9050919050565b7f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e0000600082015250565b6000613224601e83612741565b915061322f826131ee565b602082019050919050565b6000602082019050818103600083015261325381613217565b9050919050565b7f5458204c696d6974204578636565646564000000000000000000000000000000600082015250565b6000613290601183612741565b915061329b8261325a565b602082019050919050565b600060208201905081810360008301526132bf81613283565b9050919050565b60006132d18261284b565b91506132dc8361284b565b92508282019050808211156132f4576132f3612b99565b5b92915050565b600060608201905061330f6000830186612a97565b61331c6020830185612a97565b61332960408301846128f7565b949350505050565b600081905092915050565b50565b600061334c600083613331565b91506133578261333c565b600082019050919050565b600061336d8261333f565b9150819050919050565b7f666565207472616e73666572206661696c656400000000000000000000000000600082015250565b60006133ad601383612741565b91506133b882613377565b602082019050919050565b600060208201905081810360008301526133dc816133a0565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000815190506134508161281f565b92915050565b60006020828403121561346c5761346b6127e8565b5b600061347a84828501613441565b91505092915050565b6000819050919050565b60006134a86134a361349e84613483565b612d68565b61284b565b9050919050565b6134b88161348d565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6134f38161280d565b82525050565b600061350583836134ea565b60208301905092915050565b6000602082019050919050565b6000613529826134be565b61353381856134c9565b935061353e836134da565b8060005b8381101561356f57815161355688826134f9565b975061356183613511565b925050600181019050613542565b5085935050505092915050565b600060a08201905061359160008301886128f7565b61359e60208301876134af565b81810360408301526135b0818661351e565b90506135bf6060830185612a97565b6135cc60808301846128f7565b9695505050505050565b600060c0820190506135eb6000830189612a97565b6135f860208301886128f7565b61360560408301876134af565b61361260608301866134af565b61361f6080830185612a97565b61362c60a08301846128f7565b979650505050505050565b60008151905061364681612855565b92915050565b600080600060608486031215613665576136646127e8565b5b600061367386828701613637565b935050602061368486828701613637565b925050604061369586828701613637565b915050925092509256fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220be2aaff81a31229b24936246226353790b6fc1fb6791e07439e6bf528dcdef4864736f6c63430008120033

Deployed Bytecode Sourcemap

5332:11608:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7747:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9130:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8127:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9652:119;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16283:309;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7970:67;;;;;;;;;;;;;:::i;:::-;;3588:87;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7897:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10911:584;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5892:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8843:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8217:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9413:114;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9533:113;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8043:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8738:99;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8957:78;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9269:138;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7820:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6010:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8326:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8471:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9041:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3681:111;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7747:67;7784:13;7807:5;;;;;;;;;;;;;;;;;7800:12;;7747:67;:::o;9130:133::-;9205:4;9212:37;9221:10;9233:7;9242:6;9212:8;:37::i;:::-;9257:4;9250:11;;9130:133;;;;:::o;8127:84::-;8180:7;8197:12;;8190:19;;8127:84;:::o;9652:119::-;9703:7;9758:11;;9736:19;;9720:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;9713:56;;9652:119;:::o;16283:309::-;16381:4;16398:36;16408:6;16416:9;16427:6;16398:9;:36::i;:::-;16445:117;16454:6;16462:10;16474:87;16510:6;16474:87;;;;;;;;;;;;;;;;;:11;:19;16486:6;16474:19;;;;;;;;;;;;;;;:31;16494:10;16474:31;;;;;;;;;;;;;;;;:35;;:87;;;;;:::i;:::-;16445:8;:117::i;:::-;16580:4;16573:11;;16283:309;;;;;:::o;7970:67::-;3547:19;3555:10;3547:7;:19::i;:::-;3539:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8031:4:::1;8014:14;;:21;;;;;;;;;;;;;;;;;;7970:67::o:0;3588:87::-;3643:4;3668:5;;;;;;;;;;;3657:16;;:7;:16;;;3650:23;;3588:87;;;:::o;7897:67::-;7938:5;5538:2;7946:16;;7897:67;:::o;10911:584::-;3547:19;3555:10;3547:7;:19::i;:::-;3539:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;11011:13:::1;11052:5;11044:4;11028:13;:11;:13::i;:::-;:20;;;;:::i;:::-;11027:30;;;;:::i;:::-;11011:46;;11068:19;11117:5;11107:6;11091:13;:11;:13::i;:::-;:22;;;;:::i;:::-;11090:32;;;;:::i;:::-;11068:54;;11133:17;11181:5;11170:7;11154:13;:11;:13::i;:::-;:23;;;;:::i;:::-;11153:33;;;;:::i;:::-;11133:53;;11219:4;11197:19;:26;;;;11256:6;11234:19;:28;;;;11293:7;11273:17;:27;;;;11311:13;11327:30;11352:4;11327:20;11345:1;11327:13;:11;:13::i;:::-;:17;;:20;;;;:::i;:::-;:24;;:30;;;;:::i;:::-;11311:46;;11385:5;11376;:14;;:38;;;;;11409:5;11394:11;:20;;11376:38;:60;;;;;11431:5;11418:9;:18;;11376:60;11368:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;11000:495;;;;10911:584:::0;;;:::o;5892:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;8843:108::-;3547:19;3555:10;3547:7;:19::i;:::-;3539:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8941:8:::1;8917:11;:21;8929:8;8917:21;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;8843:108:::0;;:::o;8217:103::-;8283:7;8300:9;:18;8310:7;8300:18;;;;;;;;;;;;;;;;8293:25;;8217:103;;;:::o;9413:114::-;9461:7;9514:11;;9494:17;;9478:13;:11;:13::i;:::-;:33;;;;:::i;:::-;:47;;;;:::i;:::-;9471:54;;9413:114;:::o;9533:113::-;9578:7;9633:11;;9611:19;;9595:13;:11;:13::i;:::-;:35;;;;:::i;:::-;:49;;;;:::i;:::-;9588:56;;9533:113;:::o;8043:78::-;8095:7;8113:5;;;;;;;;;;;8106:12;;8043:78;:::o;8738:99::-;3547:19;3555:10;3547:7;:19::i;:::-;3539:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;8827:8:::1;8809:5;:15;8815:8;8809:15;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;8738:99:::0;;:::o;8957:78::-;3547:19;3555:10;3547:7;:19::i;:::-;3539:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9028:5:::1;9015:10;;:18;;;;;;;;;;;;;;;;;;8957:78:::0;:::o;9269:138::-;9328:7;9345:60;9383:21;9401:1;9383:9;:21::i;:::-;9345:33;9362:15;6783:42;9362:9;:15::i;:::-;9345:12;;:16;;:33;;;;:::i;:::-;:37;;:60;;;;:::i;:::-;9338:67;;9269:138;:::o;7820:71::-;7859:13;7882:7;;;;;;;;;;;;;;;;;7875:14;;7820:71;:::o;6010:19::-;;;;;;;;;;;;;:::o;8326:139::-;8404:4;8411:40;8421:10;8433:9;8444:6;8411:9;:40::i;:::-;8459:4;8452:11;;8326:139;;;;:::o;8471:127::-;8552:7;8569:11;:18;8581:5;8569:18;;;;;;;;;;;;;;;:27;8588:7;8569:27;;;;;;;;;;;;;;;;8562:34;;8471:127;;;;:::o;9041:83::-;3547:19;3555:10;3547:7;:19::i;:::-;3539:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;9114:8:::1;9100:11;;:22;;;;;;;;;;;;;;;;;;9041:83:::0;:::o;3681:111::-;3547:19;3555:10;3547:7;:19::i;:::-;3539:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3755:3:::1;3747:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3765:25;3786:3;3765:25;;;;;;:::i;:::-;;;;;;;;3681:111:::0;:::o;16600:335::-;16710:1;16693:19;;:5;:19;;;16685:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16791:1;16772:21;;:7;:21;;;16764:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16873:6;16843:11;:18;16855:5;16843:18;;;;;;;;;;;;;;;:27;16862:7;16843:27;;;;;;;;;;;;;;;:36;;;;16911:7;16895:32;;16904:5;16895:32;;;16920:6;16895:32;;;;;;:::i;:::-;;;;;;;;16600:335;;;:::o;10226:677::-;10315:37;10326:6;10334:9;10345:6;10315:10;:37::i;:::-;10363:38;10383:6;10391:9;10363:19;:38::i;:::-;10412:41;10427:6;10435:9;10446:6;10412:14;:41::i;:::-;10465:39;10478:6;10486:9;10497:6;10465:12;:39::i;:::-;10515:35;10532:6;10540:9;10515:16;:35::i;:::-;10561:27;10570:6;10578:9;10561:8;:27::i;:::-;10619:29;10641:6;10619:9;:17;10629:6;10619:17;;;;;;;;;;;;;;;;:21;;:29;;;;:::i;:::-;10599:9;:17;10609:6;10599:17;;;;;;;;;;;;;;;:49;;;;10659:22;10684:32;10698:6;10706:9;10684:13;:32::i;:::-;:78;;10756:6;10684:78;;;10719:34;10727:6;10735:9;10746:6;10719:7;:34::i;:::-;10684:78;10659:103;;10796:40;10821:14;10796:9;:20;10806:9;10796:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10773:9;:20;10783:9;10773:20;;;;;;;;;;;;;;;:63;;;;10869:9;10852:43;;10861:6;10852:43;;;10880:14;10852:43;;;;;;:::i;:::-;;;;;;;;10304:599;10226:677;;;:::o;1920:162::-;2006:7;2049:1;2044;:6;;2052:12;2036:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2078:1;2074;:5;2067:12;;1920:162;;;;;:::o;795:82::-;853:7;874:1;870;:5;;;;:::i;:::-;863:12;;795:82;;;;:::o;883:::-;941:7;962:1;958;:5;;;;:::i;:::-;951:12;;883:82;;;;:::o;707:::-;765:7;786:1;782;:5;;;;:::i;:::-;775:12;;707:82;;;;:::o;9779:439::-;9901:1;9883:20;;:6;:20;;;9875:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;9985:1;9964:23;;:9;:23;;;9956:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;10063:1;10046:6;:19;10038:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;10140:17;10150:6;10140:9;:17::i;:::-;10130:6;:27;;10122:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;9779:439;;;:::o;11503:191::-;11596:11;:19;11608:6;11596:19;;;;;;;;;;;;;;;;;;;;;;;;;11595:20;:47;;;;;11620:11;:22;11632:9;11620:22;;;;;;;;;;;;;;;;;;;;;;;;;11619:23;11595:47;11592:95;;;11652:14;;;;;;;;;;;11644:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;11592:95;11503:191;;:::o;11706:333::-;11810:11;:19;11822:6;11810:19;;;;;;;;;;;;;;;;;;;;;;;;;11809:20;:47;;;;;11834:11;:22;11846:9;11834:22;;;;;;;;;;;;;;;;;;;;;;;;;11833:23;11809:47;:77;;;;;11881:4;;;;;;;;;;;11860:26;;:9;:26;;;;11809:77;:107;;;;;6783:42;11890:26;;:9;:26;;;;11809:107;11806:226;;;11978:17;:15;:17::i;:::-;11941:32;11966:6;11941:9;:20;11951:9;11941:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11940:55;;11932:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;11806:226;11706:333;;;:::o;12349:349::-;12460:4;;;;;;;;;;;12450:14;;:6;:14;;;12447:130;;12484:20;:18;:20::i;:::-;12474:6;:30;;:53;;;;12508:11;:19;12520:6;12508:19;;;;;;;;;;;;;;;;;;;;;;;;;12474:53;:79;;;;12531:11;:22;12543:9;12531:22;;;;;;;;;;;;;;;;;;;;;;;;;12474:79;12466:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12447:130;12605:14;:12;:14::i;:::-;12595:6;:24;;:47;;;;12623:11;:19;12635:6;12623:19;;;;;;;;;;;;;;;;;;;;;;;;;12595:47;:73;;;;12646:11;:22;12658:9;12646:22;;;;;;;;;;;;;;;;;;;;;;;;;12595:73;12587:103;;;;;;;;;;;;:::i;:::-;;;;;;;;;12349:349;;;:::o;12047:294::-;12142:4;;;;;;;;;;;12132:14;;:6;:14;;;12128:46;;12170:1;12149:9;;:23;;;;;;;:::i;:::-;;;;;;;;12128:46;12189:11;:19;12201:6;12189:19;;;;;;;;;;;;;;;;;;;;;;;;;12188:20;:47;;;;;12213:11;:22;12225:9;12213:22;;;;;;;;;;;;;;;;;;;;;;;;;12212:23;12188:47;12184:150;;;12272:10;;;;;;;;;;;12252:40;;;12293:6;12301:9;12312;;12252:70;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12184:150;12047:294;;:::o;15080:160::-;15156:33;15171:6;15179:9;15156:14;:33::i;:::-;15153:80;;;15191:16;:14;:16::i;:::-;15229:1;15209:9;:22;;;;15153:80;15080:160;;:::o;15248:::-;15329:4;15354:11;:19;15366:6;15354:19;;;;;;;;;;;;;;;;;;;;;;;;;15353:20;:47;;;;;15378:11;:22;15390:9;15378:22;;;;;;;;;;;;;;;;;;;;;;;;;15377:23;15353:47;15346:54;;15248:160;;;;:::o;15729:546::-;15815:7;15871:1;15838:30;15850:6;15858:9;15838:11;:30::i;:::-;:34;15835:418;;;15884:17;15904:59;15932:30;15944:6;15952:9;15932:11;:30::i;:::-;15904:23;15915:11;;15904:6;:10;;:23;;;;:::i;:::-;:27;;:59;;;;:::i;:::-;15884:79;;16001:39;16030:9;16001;:24;16019:4;16001:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;15974:9;:24;15992:4;15974:24;;;;;;;;;;;;;;;:66;;;;16081:4;16056:42;;16065:6;16056:42;;;16088:9;16056:42;;;;;;:::i;:::-;;;;;;;;16130:1;16112:7;;:20;16109:104;;;16134:77;16152:4;6783:42;16174:36;16202:7;;16174:23;16185:11;;16174:6;:10;;:23;;;;:::i;:::-;:27;;:36;;;;:::i;:::-;16134:9;:77::i;:::-;16109:104;16230:21;16241:9;16230:6;:10;;:21;;;;:::i;:::-;16223:28;;;;;15835:418;16261:6;16254:13;;15729:546;;;;;;:::o;619:82::-;677:7;698:1;694;:5;;;;:::i;:::-;687:12;;619:82;;;;:::o;14820:252::-;14902:4;14927:8;;;;;;;;;;;14926:9;:24;;;;;14939:11;;;;;;;;;;;14926:24;:42;;;;;14954:14;;;;;;;;;;;14926:42;:60;;;;;14982:4;;;;;;;;;;;14972:14;;:6;:14;;;;14926:60;:84;;;;;14991:11;:19;15003:6;14991:19;;;;;;;;;;;;;;;;;;;;;;;;;14990:20;14926:84;:111;;;;;15015:11;:22;15027:9;15015:22;;;;;;;;;;;;;;;;;;;;;;;;;15014:23;14926:111;:138;;;;;15062:1;15041:9;;:23;;14926:138;14919:145;;14820:252;;;;:::o;12706:1313::-;6715:4;6704:8;;:15;;;;;;;;;;;;;;;;;;12763:14:::1;12821:3;12807:11;;12780:24;12798:4;12780:9;:24::i;:::-;:38;;;;:::i;:::-;:44;;;;:::i;:::-;12763:61;;12864:2;12848:13;;:18;;;;:::i;:::-;12839:6;:27;12835:63;;;12894:2;12878:13;;:18;;;;:::i;:::-;12869:27;;12835:63;12908:20;12931:66;12995:1;12932:57;12974:14;;12932:37;12956:12;;12932:19;12949:1;12932:12;;:16;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;:41;;:57;;;;:::i;:::-;12931:63;;:66;;;;:::i;:::-;12908:89;;13008:32;13043:42;13072:12;13043:24;13054:12;;13043:6;:10;;:24;;;;:::i;:::-;:28;;:42;;;;:::i;:::-;13008:77;;13096:14;13113:36;13124:24;13113:6;:10;;:36;;;;:::i;:::-;13096:53;;13160:22;13185:21;13160:46;;13217:24;13234:6;13217:16;:24::i;:::-;13252:20;13275:41;13301:14;13275:21;:25;;:41;;;;:::i;:::-;13252:64;;13327:19;13348:48;13365:30;13382:12;;13365;:16;;:30;;;;:::i;:::-;13348:12;:16;;:48;;;;:::i;:::-;13327:69;;13407:29;13439;13455:12;;13439:11;:15;;:29;;;;:::i;:::-;13407:61;;13514:1;13482:21;:34;13479:103;;;13518:61;13531:24;13557:21;13518:12;:61::i;:::-;13479:103;13592:20;13615:36;13638:12;;13615:18;13631:1;13615:11;:15;;:18;;;;:::i;:::-;:22;;:36;;;;:::i;:::-;13592:59;;13680:1;13665:12;:16;13662:131;;;13684:12;13702:18;;;;;;;;;;;:23;;13733:12;13702:48;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13683:67;;;13760:7;13752:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;13682:111;13662:131;13803:24;13830:21;13803:48;;13892:1;13865:16;:29;13862:150;;;13897:12;13915:20;;;;;;;;;;;:25;;13948:16;13915:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13896:73;;;13979:7;13971:39;;;;;;;;;;;;:::i;:::-;;;;;;;;;13895:117;13862:150;12752:1267;;;;;;;;;;6735:5:::0;6724:8;;:16;;;;;;;;;;;;;;;;;;12706:1313::o;15416:305::-;15495:7;15518:5;:13;15524:6;15518:13;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;;15535:5;:16;15541:9;15535:16;;;;;;;;;;;;;;;;;;;;;;;;;15518:33;15515:76;;;15560:29;15584:3;15560:11;;:15;;:29;;;;:::i;:::-;15553:36;;;;15515:76;15617:4;;;;;;;;;;;15604:17;;:9;:17;;;15601:38;;15630:7;;15623:14;;;;15601:38;15662:4;;;;;;;;;;;15652:14;;:6;:14;;;15649:36;;15675:8;;15668:15;;;;15649:36;15702:11;;15695:18;;15416:305;;;;;:::o;14378:434::-;14444:21;14482:1;14468:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14444:40;;14513:4;14495;14500:1;14495:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14539:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14529:4;14534:1;14529:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;14563:53;14580:4;14595:6;;;;;;;;;;;14604:11;14563:8;:53::i;:::-;14627:6;;;;;;;;;;;:57;;;14699:11;14725:1;14741:4;14768;14788:15;14627:177;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14433:379;14378:434;:::o;14027:343::-;14108:53;14125:4;14140:6;;;;;;;;;;;14149:11;14108:8;:53::i;:::-;14172:6;;;;;;;;;;;:22;;;14202:9;14235:4;14255:11;14281:1;14297;14313:18;;;;;;;;;;;14346:15;14172:190;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;14027:343;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:329::-;4482:6;4531:2;4519:9;4510:7;4506:23;4502:32;4499:119;;;4537:79;;:::i;:::-;4499:119;4657:1;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4628:117;4423:329;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:619::-;5265:6;5273;5281;5330:2;5318:9;5309:7;5305:23;5301:32;5298:119;;;5336:79;;:::i;:::-;5298:119;5456:1;5481:53;5526:7;5517:6;5506:9;5502:22;5481:53;:::i;:::-;5471:63;;5427:117;5583:2;5609:53;5654:7;5645:6;5634:9;5630:22;5609:53;:::i;:::-;5599:63;;5554:118;5711:2;5737:53;5782:7;5773:6;5762:9;5758:22;5737:53;:::i;:::-;5727:63;;5682:118;5188:619;;;;;:::o;5813:116::-;5883:21;5898:5;5883:21;:::i;:::-;5876:5;5873:32;5863:60;;5919:1;5916;5909:12;5863:60;5813:116;:::o;5935:133::-;5978:5;6016:6;6003:20;5994:29;;6032:30;6056:5;6032:30;:::i;:::-;5935:133;;;;:::o;6074:468::-;6139:6;6147;6196:2;6184:9;6175:7;6171:23;6167:32;6164:119;;;6202:79;;:::i;:::-;6164:119;6322:1;6347:53;6392:7;6383:6;6372:9;6368:22;6347:53;:::i;:::-;6337:63;;6293:117;6449:2;6475:50;6517:7;6508:6;6497:9;6493:22;6475:50;:::i;:::-;6465:60;;6420:115;6074:468;;;;;:::o;6548:118::-;6635:24;6653:5;6635:24;:::i;:::-;6630:3;6623:37;6548:118;;:::o;6672:222::-;6765:4;6803:2;6792:9;6788:18;6780:26;;6816:71;6884:1;6873:9;6869:17;6860:6;6816:71;:::i;:::-;6672:222;;;;:::o;6900:474::-;6968:6;6976;7025:2;7013:9;7004:7;7000:23;6996:32;6993:119;;;7031:79;;:::i;:::-;6993:119;7151:1;7176:53;7221:7;7212:6;7201:9;7197:22;7176:53;:::i;:::-;7166:63;;7122:117;7278:2;7304:53;7349:7;7340:6;7329:9;7325:22;7304:53;:::i;:::-;7294:63;;7249:118;6900:474;;;;;:::o;7380:323::-;7436:6;7485:2;7473:9;7464:7;7460:23;7456:32;7453:119;;;7491:79;;:::i;:::-;7453:119;7611:1;7636:50;7678:7;7669:6;7658:9;7654:22;7636:50;:::i;:::-;7626:60;;7582:114;7380:323;;;;:::o;7709:104::-;7754:7;7783:24;7801:5;7783:24;:::i;:::-;7772:35;;7709:104;;;:::o;7819:138::-;7900:32;7926:5;7900:32;:::i;:::-;7893:5;7890:43;7880:71;;7947:1;7944;7937:12;7880:71;7819:138;:::o;7963:155::-;8017:5;8055:6;8042:20;8033:29;;8071:41;8106:5;8071:41;:::i;:::-;7963:155;;;;:::o;8124:345::-;8191:6;8240:2;8228:9;8219:7;8215:23;8211:32;8208:119;;;8246:79;;:::i;:::-;8208:119;8366:1;8391:61;8444:7;8435:6;8424:9;8420:22;8391:61;:::i;:::-;8381:71;;8337:125;8124:345;;;;:::o;8475:180::-;8523:77;8520:1;8513:88;8620:4;8617:1;8610:15;8644:4;8641:1;8634:15;8661:410;8701:7;8724:20;8742:1;8724:20;:::i;:::-;8719:25;;8758:20;8776:1;8758:20;:::i;:::-;8753:25;;8813:1;8810;8806:9;8835:30;8853:11;8835:30;:::i;:::-;8824:41;;9014:1;9005:7;9001:15;8998:1;8995:22;8975:1;8968:9;8948:83;8925:139;;9044:18;;:::i;:::-;8925:139;8709:362;8661:410;;;;:::o;9077:180::-;9125:77;9122:1;9115:88;9222:4;9219:1;9212:15;9246:4;9243:1;9236:15;9263:185;9303:1;9320:20;9338:1;9320:20;:::i;:::-;9315:25;;9354:20;9372:1;9354:20;:::i;:::-;9349:25;;9393:1;9383:35;;9398:18;;:::i;:::-;9383:35;9440:1;9437;9433:9;9428:14;;9263:185;;;;:::o;9454:156::-;9594:8;9590:1;9582:6;9578:14;9571:32;9454:156;:::o;9616:365::-;9758:3;9779:66;9843:1;9838:3;9779:66;:::i;:::-;9772:73;;9854:93;9943:3;9854:93;:::i;:::-;9972:2;9967:3;9963:12;9956:19;;9616:365;;;:::o;9987:419::-;10153:4;10191:2;10180:9;10176:18;10168:26;;10240:9;10234:4;10230:20;10226:1;10215:9;10211:17;10204:47;10268:131;10394:4;10268:131;:::i;:::-;10260:139;;9987:419;;;:::o;10412:233::-;10552:34;10548:1;10540:6;10536:14;10529:58;10621:16;10616:2;10608:6;10604:15;10597:41;10412:233;:::o;10651:366::-;10793:3;10814:67;10878:2;10873:3;10814:67;:::i;:::-;10807:74;;10890:93;10979:3;10890:93;:::i;:::-;11008:2;11003:3;10999:12;10992:19;;10651:366;;;:::o;11023:419::-;11189:4;11227:2;11216:9;11212:18;11204:26;;11276:9;11270:4;11266:20;11262:1;11251:9;11247:17;11240:47;11304:131;11430:4;11304:131;:::i;:::-;11296:139;;11023:419;;;:::o;11448:60::-;11476:3;11497:5;11490:12;;11448:60;;;:::o;11514:142::-;11564:9;11597:53;11615:34;11624:24;11642:5;11624:24;:::i;:::-;11615:34;:::i;:::-;11597:53;:::i;:::-;11584:66;;11514:142;;;:::o;11662:126::-;11712:9;11745:37;11776:5;11745:37;:::i;:::-;11732:50;;11662:126;;;:::o;11794:134::-;11852:9;11885:37;11916:5;11885:37;:::i;:::-;11872:50;;11794:134;;;:::o;11934:147::-;12029:45;12068:5;12029:45;:::i;:::-;12024:3;12017:58;11934:147;;:::o;12087:238::-;12188:4;12226:2;12215:9;12211:18;12203:26;;12239:79;12315:1;12304:9;12300:17;12291:6;12239:79;:::i;:::-;12087:238;;;;:::o;12331:223::-;12471:34;12467:1;12459:6;12455:14;12448:58;12540:6;12535:2;12527:6;12523:15;12516:31;12331:223;:::o;12560:366::-;12702:3;12723:67;12787:2;12782:3;12723:67;:::i;:::-;12716:74;;12799:93;12888:3;12799:93;:::i;:::-;12917:2;12912:3;12908:12;12901:19;;12560:366;;;:::o;12932:419::-;13098:4;13136:2;13125:9;13121:18;13113:26;;13185:9;13179:4;13175:20;13171:1;13160:9;13156:17;13149:47;13213:131;13339:4;13213:131;:::i;:::-;13205:139;;12932:419;;;:::o;13357:221::-;13497:34;13493:1;13485:6;13481:14;13474:58;13566:4;13561:2;13553:6;13549:15;13542:29;13357:221;:::o;13584:366::-;13726:3;13747:67;13811:2;13806:3;13747:67;:::i;:::-;13740:74;;13823:93;13912:3;13823:93;:::i;:::-;13941:2;13936:3;13932:12;13925:19;;13584:366;;;:::o;13956:419::-;14122:4;14160:2;14149:9;14145:18;14137:26;;14209:9;14203:4;14199:20;14195:1;14184:9;14180:17;14173:47;14237:131;14363:4;14237:131;:::i;:::-;14229:139;;13956:419;;;:::o;14381:194::-;14421:4;14441:20;14459:1;14441:20;:::i;:::-;14436:25;;14475:20;14493:1;14475:20;:::i;:::-;14470:25;;14519:1;14516;14512:9;14504:17;;14543:1;14537:4;14534:11;14531:37;;;14548:18;;:::i;:::-;14531:37;14381:194;;;;:::o;14581:224::-;14721:34;14717:1;14709:6;14705:14;14698:58;14790:7;14785:2;14777:6;14773:15;14766:32;14581:224;:::o;14811:366::-;14953:3;14974:67;15038:2;15033:3;14974:67;:::i;:::-;14967:74;;15050:93;15139:3;15050:93;:::i;:::-;15168:2;15163:3;15159:12;15152:19;;14811:366;;;:::o;15183:419::-;15349:4;15387:2;15376:9;15372:18;15364:26;;15436:9;15430:4;15426:20;15422:1;15411:9;15407:17;15400:47;15464:131;15590:4;15464:131;:::i;:::-;15456:139;;15183:419;;;:::o;15608:222::-;15748:34;15744:1;15736:6;15732:14;15725:58;15817:5;15812:2;15804:6;15800:15;15793:30;15608:222;:::o;15836:366::-;15978:3;15999:67;16063:2;16058:3;15999:67;:::i;:::-;15992:74;;16075:93;16164:3;16075:93;:::i;:::-;16193:2;16188:3;16184:12;16177:19;;15836:366;;;:::o;16208:419::-;16374:4;16412:2;16401:9;16397:18;16389:26;;16461:9;16455:4;16451:20;16447:1;16436:9;16432:17;16425:47;16489:131;16615:4;16489:131;:::i;:::-;16481:139;;16208:419;;;:::o;16633:228::-;16773:34;16769:1;16761:6;16757:14;16750:58;16842:11;16837:2;16829:6;16825:15;16818:36;16633:228;:::o;16867:366::-;17009:3;17030:67;17094:2;17089:3;17030:67;:::i;:::-;17023:74;;17106:93;17195:3;17106:93;:::i;:::-;17224:2;17219:3;17215:12;17208:19;;16867:366;;;:::o;17239:419::-;17405:4;17443:2;17432:9;17428:18;17420:26;;17492:9;17486:4;17482:20;17478:1;17467:9;17463:17;17456:47;17520:131;17646:4;17520:131;:::i;:::-;17512:139;;17239:419;;;:::o;17664:236::-;17804:34;17800:1;17792:6;17788:14;17781:58;17873:19;17868:2;17860:6;17856:15;17849:44;17664:236;:::o;17906:366::-;18048:3;18069:67;18133:2;18128:3;18069:67;:::i;:::-;18062:74;;18145:93;18234:3;18145:93;:::i;:::-;18263:2;18258:3;18254:12;18247:19;;17906:366;;;:::o;18278:419::-;18444:4;18482:2;18471:9;18467:18;18459:26;;18531:9;18525:4;18521:20;18517:1;18506:9;18502:17;18495:47;18559:131;18685:4;18559:131;:::i;:::-;18551:139;;18278:419;;;:::o;18703:164::-;18843:16;18839:1;18831:6;18827:14;18820:40;18703:164;:::o;18873:366::-;19015:3;19036:67;19100:2;19095:3;19036:67;:::i;:::-;19029:74;;19112:93;19201:3;19112:93;:::i;:::-;19230:2;19225:3;19221:12;19214:19;;18873:366;;;:::o;19245:419::-;19411:4;19449:2;19438:9;19434:18;19426:26;;19498:9;19492:4;19488:20;19484:1;19473:9;19469:17;19462:47;19526:131;19652:4;19526:131;:::i;:::-;19518:139;;19245:419;;;:::o;19670:180::-;19810:32;19806:1;19798:6;19794:14;19787:56;19670:180;:::o;19856:366::-;19998:3;20019:67;20083:2;20078:3;20019:67;:::i;:::-;20012:74;;20095:93;20184:3;20095:93;:::i;:::-;20213:2;20208:3;20204:12;20197:19;;19856:366;;;:::o;20228:419::-;20394:4;20432:2;20421:9;20417:18;20409:26;;20481:9;20475:4;20471:20;20467:1;20456:9;20452:17;20445:47;20509:131;20635:4;20509:131;:::i;:::-;20501:139;;20228:419;;;:::o;20653:167::-;20793:19;20789:1;20781:6;20777:14;20770:43;20653:167;:::o;20826:366::-;20968:3;20989:67;21053:2;21048:3;20989:67;:::i;:::-;20982:74;;21065:93;21154:3;21065:93;:::i;:::-;21183:2;21178:3;21174:12;21167:19;;20826:366;;;:::o;21198:419::-;21364:4;21402:2;21391:9;21387:18;21379:26;;21451:9;21445:4;21441:20;21437:1;21426:9;21422:17;21415:47;21479:131;21605:4;21479:131;:::i;:::-;21471:139;;21198:419;;;:::o;21623:191::-;21663:3;21682:20;21700:1;21682:20;:::i;:::-;21677:25;;21716:20;21734:1;21716:20;:::i;:::-;21711:25;;21759:1;21756;21752:9;21745:16;;21780:3;21777:1;21774:10;21771:36;;;21787:18;;:::i;:::-;21771:36;21623:191;;;;:::o;21820:442::-;21969:4;22007:2;21996:9;21992:18;21984:26;;22020:71;22088:1;22077:9;22073:17;22064:6;22020:71;:::i;:::-;22101:72;22169:2;22158:9;22154:18;22145:6;22101:72;:::i;:::-;22183;22251:2;22240:9;22236:18;22227:6;22183:72;:::i;:::-;21820:442;;;;;;:::o;22268:147::-;22369:11;22406:3;22391:18;;22268:147;;;;:::o;22421:114::-;;:::o;22541:398::-;22700:3;22721:83;22802:1;22797:3;22721:83;:::i;:::-;22714:90;;22813:93;22902:3;22813:93;:::i;:::-;22931:1;22926:3;22922:11;22915:18;;22541:398;;;:::o;22945:379::-;23129:3;23151:147;23294:3;23151:147;:::i;:::-;23144:154;;23315:3;23308:10;;22945:379;;;:::o;23330:169::-;23470:21;23466:1;23458:6;23454:14;23447:45;23330:169;:::o;23505:366::-;23647:3;23668:67;23732:2;23727:3;23668:67;:::i;:::-;23661:74;;23744:93;23833:3;23744:93;:::i;:::-;23862:2;23857:3;23853:12;23846:19;;23505:366;;;:::o;23877:419::-;24043:4;24081:2;24070:9;24066:18;24058:26;;24130:9;24124:4;24120:20;24116:1;24105:9;24101:17;24094:47;24158:131;24284:4;24158:131;:::i;:::-;24150:139;;23877:419;;;:::o;24302:180::-;24350:77;24347:1;24340:88;24447:4;24444:1;24437:15;24471:4;24468:1;24461:15;24488:180;24536:77;24533:1;24526:88;24633:4;24630:1;24623:15;24657:4;24654:1;24647:15;24674:143;24731:5;24762:6;24756:13;24747:22;;24778:33;24805:5;24778:33;:::i;:::-;24674:143;;;;:::o;24823:351::-;24893:6;24942:2;24930:9;24921:7;24917:23;24913:32;24910:119;;;24948:79;;:::i;:::-;24910:119;25068:1;25093:64;25149:7;25140:6;25129:9;25125:22;25093:64;:::i;:::-;25083:74;;25039:128;24823:351;;;;:::o;25180:85::-;25225:7;25254:5;25243:16;;25180:85;;;:::o;25271:158::-;25329:9;25362:61;25380:42;25389:32;25415:5;25389:32;:::i;:::-;25380:42;:::i;:::-;25362:61;:::i;:::-;25349:74;;25271:158;;;:::o;25435:147::-;25530:45;25569:5;25530:45;:::i;:::-;25525:3;25518:58;25435:147;;:::o;25588:114::-;25655:6;25689:5;25683:12;25673:22;;25588:114;;;:::o;25708:184::-;25807:11;25841:6;25836:3;25829:19;25881:4;25876:3;25872:14;25857:29;;25708:184;;;;:::o;25898:132::-;25965:4;25988:3;25980:11;;26018:4;26013:3;26009:14;26001:22;;25898:132;;;:::o;26036:108::-;26113:24;26131:5;26113:24;:::i;:::-;26108:3;26101:37;26036:108;;:::o;26150:179::-;26219:10;26240:46;26282:3;26274:6;26240:46;:::i;:::-;26318:4;26313:3;26309:14;26295:28;;26150:179;;;;:::o;26335:113::-;26405:4;26437;26432:3;26428:14;26420:22;;26335:113;;;:::o;26484:732::-;26603:3;26632:54;26680:5;26632:54;:::i;:::-;26702:86;26781:6;26776:3;26702:86;:::i;:::-;26695:93;;26812:56;26862:5;26812:56;:::i;:::-;26891:7;26922:1;26907:284;26932:6;26929:1;26926:13;26907:284;;;27008:6;27002:13;27035:63;27094:3;27079:13;27035:63;:::i;:::-;27028:70;;27121:60;27174:6;27121:60;:::i;:::-;27111:70;;26967:224;26954:1;26951;26947:9;26942:14;;26907:284;;;26911:14;27207:3;27200:10;;26608:608;;;26484:732;;;;:::o;27222:831::-;27485:4;27523:3;27512:9;27508:19;27500:27;;27537:71;27605:1;27594:9;27590:17;27581:6;27537:71;:::i;:::-;27618:80;27694:2;27683:9;27679:18;27670:6;27618:80;:::i;:::-;27745:9;27739:4;27735:20;27730:2;27719:9;27715:18;27708:48;27773:108;27876:4;27867:6;27773:108;:::i;:::-;27765:116;;27891:72;27959:2;27948:9;27944:18;27935:6;27891:72;:::i;:::-;27973:73;28041:3;28030:9;28026:19;28017:6;27973:73;:::i;:::-;27222:831;;;;;;;;:::o;28059:807::-;28308:4;28346:3;28335:9;28331:19;28323:27;;28360:71;28428:1;28417:9;28413:17;28404:6;28360:71;:::i;:::-;28441:72;28509:2;28498:9;28494:18;28485:6;28441:72;:::i;:::-;28523:80;28599:2;28588:9;28584:18;28575:6;28523:80;:::i;:::-;28613;28689:2;28678:9;28674:18;28665:6;28613:80;:::i;:::-;28703:73;28771:3;28760:9;28756:19;28747:6;28703:73;:::i;:::-;28786;28854:3;28843:9;28839:19;28830:6;28786:73;:::i;:::-;28059:807;;;;;;;;;:::o;28872:143::-;28929:5;28960:6;28954:13;28945:22;;28976:33;29003:5;28976:33;:::i;:::-;28872:143;;;;:::o;29021:663::-;29109:6;29117;29125;29174:2;29162:9;29153:7;29149:23;29145:32;29142:119;;;29180:79;;:::i;:::-;29142:119;29300:1;29325:64;29381:7;29372:6;29361:9;29357:22;29325:64;:::i;:::-;29315:74;;29271:128;29438:2;29464:64;29520:7;29511:6;29500:9;29496:22;29464:64;:::i;:::-;29454:74;;29409:129;29577:2;29603:64;29659:7;29650:6;29639:9;29635:22;29603:64;:::i;:::-;29593:74;;29548:129;29021:663;;;;;:::o

Swarm Source

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