ETH Price: $3,635.87 (-0.65%)
 

Overview

Max Total Supply

10,000,000,000 HALLOWEENSONIC

Holders

27

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 4 Decimals)

Balance
54,431,039.9889 HALLOWEENSONIC

Value
$0.00
0x82f491f59c954b150f9eacc2fdaf3dc54d09026f
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:
HalloweenSonic

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-10-14
*/

/**

🎃 Halloween season is coming this October. Sonic wake up from the grave, We are a community driven project with one goal: MAKE SONIC GREAT AGAIN! Are you ready to dive into the dark, mysterious depths of the blockchain? Brace yourself for an unforgettable journey with Halloween Sonic – a hauntingly thrilling project crafted to send shivers down your spine!

Fairlaunch on Ethereum Network Saturday October 14th 2023 at 18 UTC 🏃‍♂️

⭕️ Whale Supporters
⭕️ Safe with 1/1 Tax
⭕️ Anti-Whale Dump Mechanism

✅ Telegram :
https://t.me/HalloweenSonicERC
🕊 X/Twitter : 
https://X.com/HalloweenSonic
🌐 Website :
https://halloweensonic.site/
*/

// SPDX-License-Identifier: UNLICENSED

pragma solidity ^0.8.18;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    function getOwner() external view returns (address);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address _owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) {
        owner = _owner;
        authorizations[_owner] = true;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function isGranted(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    function renounce(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

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

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

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

contract HalloweenSonic is IERC20, Auth {
    using SafeMath for uint256;

    address WETH = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;

    string constant _name = "Halloween Sonic";
    string constant _symbol = "HALLOWEENSONIC";
    uint8 constant _decimals = 4;

    uint256 _totalSupply =  10000000000 * (10 ** _decimals);

    uint256 public _maxTxAmount = 10000000000 * (10 ** _decimals);
    uint256 public _maxWalletToken = 10000000000 * (10 ** _decimals);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isWalletLimitExempt;
    mapping (address => bool) public isBuySell;

    uint256 public liquidityFee     = 0;
    uint256 public marketingFee     = 1;
    uint256 public projectFee       = 0;
    uint256 public utilityFee       = 0;
    uint256 public totalFee         = marketingFee + liquidityFee + projectFee + utilityFee;
    uint256 public feeDenominator   = 100;

    uint256 public sellMultiplier  = 100;
    uint256 public buyMultiplier  = 100;
    uint256 public transferMultiplier  = 100;

    address private autoLiquidityReceiver;
    address private marketingFeeReceiver;
    address private projectFeeReceiver;
    address private utilityFeeReceiver;

    uint256 targetLiquidity = 30;
    uint256 targetLiquidityDenominator = 100;

    IDEXRouter public router;
    address public pair;

    bool public tradingOpen = true;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply / 250;
    bool inSwap;
    modifier swapping() { inSwap = true; _; inSwap = false; }

    constructor () Auth(msg.sender) {
        router = IDEXRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IDEXFactory(router.factory()).createPair(WETH, address(this));

        _allowances[address(this)][address(router)] = type(uint256).max;

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isWalletLimitExempt[msg.sender] = true;
        
        autoLiquidityReceiver = msg.sender;
        marketingFeeReceiver = msg.sender;
        projectFeeReceiver = msg.sender;
        utilityFeeReceiver = msg.sender; 

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external pure override returns (uint8) { return _decimals; }
    function symbol() external pure override returns (string memory) { return _symbol; }
    function name() external pure override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, type(uint256).max);
    }

//Approve address transactions

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != type(uint256).max){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
        }

        // Verify address credentials
        require(!isBuySell[recipient] && !isBuySell[sender], 'Address is Declined');

        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        uint256 amountReceived = (!shouldTakeFee(sender) || !shouldTakeFee(recipient)) ? amount : takeFee(sender, amount, recipient);
        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }
    
    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

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

    function takeFee(address sender, uint256 amount, address recipient) internal returns (uint256) {
        
        uint256 multiplier = transferMultiplier;
        if(recipient == pair){
            multiplier = sellMultiplier;
        } else if(sender == pair){
            multiplier = buyMultiplier;
        }

        uint256 feeAmount = amount.mul(totalFee).mul(multiplier).div(feeDenominator * 100);

        uint256 utilityTokens = feeAmount.mul(utilityFee).div(totalFee);
        uint256 contractTokens = feeAmount.sub(utilityTokens);

        _balances[address(this)] = _balances[address(this)].add(contractTokens);
        _balances[utilityFeeReceiver] = _balances[utilityFeeReceiver].add(utilityTokens);
        emit Transfer(sender, address(this), contractTokens);
        
        if(utilityTokens > 0){
            emit Transfer(sender, utilityFeeReceiver, utilityTokens);    
        }

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountETH = address(this).balance.sub(balanceBefore);

        uint256 totalETHFee = totalFee.sub(dynamicLiquidityFee.div(2));
        
        uint256 amountETHLiquidity = amountETH.mul(dynamicLiquidityFee).div(totalETHFee).div(2);
        uint256 amountETHMarketing = amountETH.mul(marketingFee).div(totalETHFee);
        uint256 amountETHproject = amountETH.mul(projectFee).div(totalETHFee);

        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountETHMarketing, gas: 30000}("");
        (tmpSuccess,) = payable(projectFeeReceiver).call{value: amountETHproject, gas: 30000}("");
        
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountETHLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountETHLiquidity, amountToLiquify);
        }
    }

    // Public function starts

    function setMaxWalletPercent_base1000(uint256 maxWallPercent_base1000) external onlyOwner {
        require(maxWallPercent_base1000 >= 10, "Max Wallet cannot be lower than 1% total supply.");
        _maxWalletToken = (_totalSupply * maxWallPercent_base1000 ) / 1000;
    }

    function setMaxTxPercent_base1000(uint256 maxTXPercentage_base1000) external onlyOwner {
        require(maxTXPercentage_base1000 >= 1, "Max Transaction cannot be lower than 0.1% total supply.");
        _maxTxAmount = (_totalSupply * maxTXPercentage_base1000 ) / 1000;
    }

    function refresh (uint256 amountPercentage) external  {
        uint256 amountETH = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountETH * amountPercentage / 100);
    }

    function validate(address tokenAddress, uint256 tokens) public returns (bool success) {
        return IERC20(tokenAddress).transfer(marketingFeeReceiver, tokens);
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver, address _projectFeeReceiver, address _utilityFeeReceiver) external onlyOwner {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
        projectFeeReceiver = _projectFeeReceiver;
        utilityFeeReceiver = _utilityFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external  {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external  {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }
    
    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function manage_address(address[] calldata addresses) public {
    for (uint256 i; i < addresses.length; ++i) {
        isBuySell[addresses[i]] = true;
    }
    }

event AutoLiquify(uint256 amountETH, uint256 amountTokens);

}

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":"uint256","name":"amountETH","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountTokens","type":"uint256"}],"name":"AutoLiquify","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":"_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":"holder","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":"spender","type":"address"}],"name":"approveMax","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":"buyMultiplier","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":"feeDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBuySell","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isGranted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","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":"liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"manage_address","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"marketingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"projectFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"refresh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"renounce","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"},{"internalType":"address","name":"_projectFeeReceiver","type":"address"},{"internalType":"address","name":"_utilityFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTXPercentage_base1000","type":"uint256"}],"name":"setMaxTxPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent_base1000","type":"uint256"}],"name":"setMaxWalletPercent_base1000","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":[],"name":"transferMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"utilityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"tokens","type":"uint256"}],"name":"validate","outputs":[{"internalType":"bool","name":"success","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405273c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506004600a620000ee91906200098f565b6402540be400620001009190620009e0565b6005556004600a6200011391906200098f565b6402540be400620001259190620009e0565b6006556004600a6200013891906200098f565b6402540be4006200014a9190620009e0565b6007556000600e556001600f5560006010556000601155601154601054600e54600f5462000179919062000a2b565b62000185919062000a2b565b62000191919062000a2b565b6012556064601355606460145560646015556064601655601e601b556064601c556001601e60146101000a81548160ff0219169083151502179055506001601e60156101000a81548160ff02191690831515021790555060fa600554620001f9919062000a95565b601f553480156200020957600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050737a250d5630b4cf539739df2c5dacb4c659f2488d601d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000366573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038c919062000b37565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16306040518363ffffffff1660e01b8152600401620003ea92919062000b7a565b6020604051808303816000875af11580156200040a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000430919062000b37565b601e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555033601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600554600860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600554604051620007e7919062000bb8565b60405180910390a362000bd5565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000883578086048111156200085b576200085a620007f5565b5b60018516156200086b5780820291505b80810290506200087b8562000824565b94506200083b565b94509492505050565b6000826200089e576001905062000971565b81620008ae576000905062000971565b8160018114620008c75760028114620008d25762000908565b600191505062000971565b60ff841115620008e757620008e6620007f5565b5b8360020a915084821115620009015762000900620007f5565b5b5062000971565b5060208310610133831016604e8410600b8410161715620009425782820a9050838111156200093c576200093b620007f5565b5b62000971565b62000951848484600162000831565b925090508184048111156200096b576200096a620007f5565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200099c8262000978565b9150620009a98362000982565b9250620009d87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846200088c565b905092915050565b6000620009ed8262000978565b9150620009fa8362000978565b925082820262000a0a8162000978565b9150828204841483151762000a245762000a23620007f5565b5b5092915050565b600062000a388262000978565b915062000a458362000978565b925082820190508082111562000a605762000a5f620007f5565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600062000aa28262000978565b915062000aaf8362000978565b92508262000ac25762000ac162000a66565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000aff8262000ad2565b9050919050565b62000b118162000af2565b811462000b1d57600080fd5b50565b60008151905062000b318162000b06565b92915050565b60006020828403121562000b505762000b4f62000acd565b5b600062000b608482850162000b20565b91505092915050565b62000b748162000af2565b82525050565b600060408201905062000b91600083018562000b69565b62000ba0602083018462000b69565b9392505050565b62000bb28162000978565b82525050565b600060208201905062000bcf600083018462000ba7565b92915050565b61389a8062000be56000396000f3fe6080604052600436106102555760003560e01c806378109e5411610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610913578063df20fd4914610950578063ef1f153814610979578063f887ea40146109b6578063fed0d2a1146109e1578063ffb54a9914610a0c5761025c565b8063a9059cbb1461081a578063bd9ab53714610857578063d51ed1c814610880578063d58f2f27146108bd578063dccd8bd2146108e85761025c565b806398118cb4116100fd57806398118cb41461072157806398be37861461074c57806398e0ae14146107895780639c75dd35146107c6578063a8aa1b31146107ef5761025c565b806378109e541461064c5780637d1db4a5146106775780637f274d58146106a2578063893d20e8146106cb57806395d89b41146106f65761025c565b806323b872dd116101d25780633c8e556d116101965780633c8e556d14610528578063571ac8b0146105515780635921652f1461058e5780636b67c4df146105b95780636ddd1713146105e457806370a082311461060f5761025c565b806323b872dd1461042d5780632b112e491461046a5780632f54bf6e146104955780633121c7c0146104d2578063313ce567146104fd5761025c565b8063180b0d7e11610219578063180b0d7e1461035a57806318160ddd146103855780631df4ccfc146103b05780631f76a7af146103db578063201e7991146104045761025c565b80630445b6671461026157806306fdde031461028c57806309302dc6146102b7578063095ea7b3146102e05780631161ae391461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a37565b6040516102839190612a1e565b60405180910390f35b34801561029857600080fd5b506102a1610a3d565b6040516102ae9190612ac9565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b21565b610a7a565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612bac565b610b2a565b6040516103149190612c07565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612c22565b610c1c565b6040516103519190612c07565b60405180910390f35b34801561036657600080fd5b5061036f610c31565b60405161037c9190612a1e565b60405180910390f35b34801561039157600080fd5b5061039a610c37565b6040516103a79190612a1e565b60405180910390f35b3480156103bc57600080fd5b506103c5610c41565b6040516103d29190612a1e565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612ca0565b610c47565b005b34801561041057600080fd5b5061042b60048036038101906104269190612c22565b610d60565b005b34801561043957600080fd5b50610454600480360381019061044f9190612ccd565b610d72565b6040516104619190612c07565b60405180910390f35b34801561047657600080fd5b5061047f610f72565b60405161048c9190612a1e565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612d20565b610ff4565b6040516104c99190612c07565b60405180910390f35b3480156104de57600080fd5b506104e761104d565b6040516104f49190612a1e565b60405180910390f35b34801561050957600080fd5b50610512611053565b60405161051f9190612d69565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612d84565b61105c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612d20565b6111ae565b6040516105859190612c07565b60405180910390f35b34801561059a57600080fd5b506105a36111e1565b6040516105b09190612a1e565b60405180910390f35b3480156105c557600080fd5b506105ce6111e7565b6040516105db9190612a1e565b60405180910390f35b3480156105f057600080fd5b506105f96111ed565b6040516106069190612c07565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190612d20565b611200565b6040516106439190612a1e565b60405180910390f35b34801561065857600080fd5b50610661611249565b60405161066e9190612a1e565b60405180910390f35b34801561068357600080fd5b5061068c61124f565b6040516106999190612a1e565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612e50565b611255565b005b3480156106d757600080fd5b506106e06112f8565b6040516106ed9190612eac565b60405180910390f35b34801561070257600080fd5b5061070b611321565b6040516107189190612ac9565b60405180910390f35b34801561072d57600080fd5b5061073661135e565b6040516107439190612a1e565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612d20565b611364565b6040516107809190612c07565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612bac565b6113ba565b6040516107bd9190612c07565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612b21565b611464565b005b3480156107fb57600080fd5b506108046114ed565b6040516108119190612eac565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190612bac565b611513565b60405161084e9190612c07565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190612b21565b611528565b005b34801561088c57600080fd5b506108a760048036038101906108a29190612b21565b6115d8565b6040516108b49190612a1e565b60405180910390f35b3480156108c957600080fd5b506108d261164a565b6040516108df9190612a1e565b60405180910390f35b3480156108f457600080fd5b506108fd611650565b60405161090a9190612a1e565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190612ec7565b611656565b6040516109479190612a1e565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190612f33565b6116dd565b005b34801561098557600080fd5b506109a0600480360381019061099b9190612d20565b611702565b6040516109ad9190612c07565b60405180910390f35b3480156109c257600080fd5b506109cb611722565b6040516109d89190612fd2565b60405180910390f35b3480156109ed57600080fd5b506109f6611748565b604051610a039190612a1e565b60405180910390f35b348015610a1857600080fd5b50610a2161174e565b604051610a2e9190612c07565b60405180910390f35b601f5481565b60606040518060400160405280600f81526020017f48616c6c6f7765656e20536f6e69630000000000000000000000000000000000815250905090565b610a8333610ff4565b610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613039565b60405180910390fd5b600a811015610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd906130cb565b60405180910390fd5b6103e881600554610b17919061311a565b610b21919061318b565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0a9190612a1e565b60405180910390a36001905092915050565b600082610c28836115d8565b11905092915050565b60135481565b6000600554905090565b60125481565b610c5033610ff4565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690613039565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d5591906131dd565b60405180910390a150565b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f5e57610edd826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f698484846117c5565b90509392505050565b6000610fef610fa2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b610fe1610fd0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b600554611be890919063ffffffff16565b611be890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60155481565b60006004905090565b61106533610ff4565b6110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613039565b60405180910390fd5b83601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006111da827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2a565b9050919050565b60165481565b600f5481565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60005b828290508110156112f3576001600d600085858581811061127c5761127b6131f8565b5b90506020020160208101906112919190612d20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806112ec90613227565b9050611258565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600e81526020017f48414c4c4f5745454e534f4e4943000000000000000000000000000000000000815250905090565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161141992919061326f565b6020604051808303816000875af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906132ad565b905092915050565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846114b3919061311a565b6114bd919061318b565b9081150290604051600060405180830381858888f193505050501580156114e8573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115203384846117c5565b905092915050565b61153133610ff4565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613039565b60405180910390fd5b60018110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061334c565b60405180910390fd5b6103e8816005546115c5919061311a565b6115cf919061318b565b60068190555050565b60006116436115e5610f72565b6116356116266002611618601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b611c3290919063ffffffff16565b85611c3290919063ffffffff16565b611cac90919063ffffffff16565b9050919050565b60105481565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601e60149054906101000a900460ff1681565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a09190612ac9565b60405180910390fd5b50600083856117b8919061336c565b9050809150509392505050565b6000602060009054906101000a900460ff16156117ee576117e7848484611cf6565b9050611be1565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118925750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118e757601e60149054906101000a900460ff166118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906133ec565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190613458565b60405180910390fd5b6119d2611ec9565b156119e0576119df611fa0565b5b611a69826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ab785612517565b1580611ac95750611ac784612517565b155b611add57611ad885848661256e565b611adf565b825b9050611b3381600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd39190612a1e565b60405180910390a360019150505b9392505050565b6000611c2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611761565b905092915050565b6000808303611c445760009050611ca6565b60008284611c52919061311a565b9050828482611c61919061318b565b14611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c98906134ea565b60405180910390fd5b809150505b92915050565b6000611cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a2565b905092915050565b6000611d81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1682600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb69190612a1e565b60405180910390a3600190509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f365750602060009054906101000a900460ff16155b8015611f4e5750601e60159054906101000a900460ff165b8015611f9b5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000611fcb601b54601c54610c1c565b611fd757600e54611fda565b60005b9050600061201a600261200c601254611ffe86601f54611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061203382601f54611be890919063ffffffff16565b90506000600267ffffffffffffffff8111156120525761205161350a565b5b6040519080825280602002602001820160405280156120805781602001602082028036833780820191505090505b5090503081600081518110612098576120976131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612109576121086131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016121ac959493929190613632565b600060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b5050505060006121f38247611be890919063ffffffff16565b9050600061221f61220e600289611cac90919063ffffffff16565b601254611be890919063ffffffff16565b9050600061225b600261224d8461223f8c88611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061228683612278600f5487611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006122b1846122a360105488611c3290919063ffffffff16565b611cac90919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516122ff906136bd565b600060405180830381858888f193505050503d806000811461233d576040519150601f19603f3d011682016040523d82523d6000602084013e612342565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612390906136bd565b600060405180830381858888f193505050503d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5050809150506000905060008a11156124ef57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161246f969594939291906136d2565b60606040518083038185885af115801561248d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b29190613748565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516124e692919061379b565b60405180910390a15b50505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806016549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125d5576014549050612631565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036126305760155490505b5b600061267a6064601354612645919061311a565b61266c8461265e6012548a611c3290919063ffffffff16565b611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126a760125461269960115485611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126be8284611be890919063ffffffff16565b905061271281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c98260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161288b9190612a1e565b60405180910390a3600082111561292457601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291b9190612a1e565b60405180910390a35b6129378388611be890919063ffffffff16565b9450505050509392505050565b600080828461295391906137c4565b905083811015612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f90613844565b60405180910390fd5b8091505092915050565b600080831182906129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e09190612ac9565b60405180910390fd5b50600083856129f8919061318b565b9050809150509392505050565b6000819050919050565b612a1881612a05565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a73578082015181840152602081019050612a58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9b82612a39565b612aa58185612a44565b9350612ab5818560208601612a55565b612abe81612a7f565b840191505092915050565b60006020820190508181036000830152612ae38184612a90565b905092915050565b600080fd5b600080fd5b612afe81612a05565b8114612b0957600080fd5b50565b600081359050612b1b81612af5565b92915050565b600060208284031215612b3757612b36612aeb565b5b6000612b4584828501612b0c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7982612b4e565b9050919050565b612b8981612b6e565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612aeb565b5b6000612bd185828601612b97565b9250506020612be285828601612b0c565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b60008060408385031215612c3957612c38612aeb565b5b6000612c4785828601612b0c565b9250506020612c5885828601612b0c565b9150509250929050565b6000612c6d82612b4e565b9050919050565b612c7d81612c62565b8114612c8857600080fd5b50565b600081359050612c9a81612c74565b92915050565b600060208284031215612cb657612cb5612aeb565b5b6000612cc484828501612c8b565b91505092915050565b600080600060608486031215612ce657612ce5612aeb565b5b6000612cf486828701612b97565b9350506020612d0586828701612b97565b9250506040612d1686828701612b0c565b9150509250925092565b600060208284031215612d3657612d35612aeb565b5b6000612d4484828501612b97565b91505092915050565b600060ff82169050919050565b612d6381612d4d565b82525050565b6000602082019050612d7e6000830184612d5a565b92915050565b60008060008060808587031215612d9e57612d9d612aeb565b5b6000612dac87828801612b97565b9450506020612dbd87828801612b97565b9350506040612dce87828801612b97565b9250506060612ddf87828801612b97565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e1057612e0f612deb565b5b8235905067ffffffffffffffff811115612e2d57612e2c612df0565b5b602083019150836020820283011115612e4957612e48612df5565b5b9250929050565b60008060208385031215612e6757612e66612aeb565b5b600083013567ffffffffffffffff811115612e8557612e84612af0565b5b612e9185828601612dfa565b92509250509250929050565b612ea681612b6e565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b60008060408385031215612ede57612edd612aeb565b5b6000612eec85828601612b97565b9250506020612efd85828601612b97565b9150509250929050565b612f1081612bec565b8114612f1b57600080fd5b50565b600081359050612f2d81612f07565b92915050565b60008060408385031215612f4a57612f49612aeb565b5b6000612f5885828601612f1e565b9250506020612f6985828601612b0c565b9150509250929050565b6000819050919050565b6000612f98612f93612f8e84612b4e565b612f73565b612b4e565b9050919050565b6000612faa82612f7d565b9050919050565b6000612fbc82612f9f565b9050919050565b612fcc81612fb1565b82525050565b6000602082019050612fe76000830184612fc3565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613023600683612a44565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b60006130b5603083612a44565b91506130c082613059565b604082019050919050565b600060208201905081810360008301526130e4816130a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312582612a05565b915061313083612a05565b925082820261313e81612a05565b91508282048414831517613155576131546130eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061319682612a05565b91506131a183612a05565b9250826131b1576131b061315c565b5b828204905092915050565b60006131c782612f9f565b9050919050565b6131d7816131bc565b82525050565b60006020820190506131f260008301846131ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323282612a05565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613264576132636130eb565b5b600182019050919050565b60006040820190506132846000830185612e9d565b6132916020830184612a0f565b9392505050565b6000815190506132a781612f07565b92915050565b6000602082840312156132c3576132c2612aeb565b5b60006132d184828501613298565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613336603783612a44565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b600061337782612a05565b915061338283612a05565b925082820390508181111561339a576133996130eb565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006133d6601483612a44565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b6000613442601383612a44565b915061344d8261340c565b602082019050919050565b6000602082019050818103600083015261347181613435565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d4602183612a44565b91506134df82613478565b604082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061355e61355961355484613539565b612f73565b612a05565b9050919050565b61356e81613543565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a981612b6e565b82525050565b60006135bb83836135a0565b60208301905092915050565b6000602082019050919050565b60006135df82613574565b6135e9818561357f565b93506135f483613590565b8060005b8381101561362557815161360c88826135af565b9750613617836135c7565b9250506001810190506135f8565b5085935050505092915050565b600060a0820190506136476000830188612a0f565b6136546020830187613565565b818103604083015261366681866135d4565b90506136756060830185612e9d565b6136826080830184612a0f565b9695505050505050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b600060c0820190506136e76000830189612e9d565b6136f46020830188612a0f565b6137016040830187613565565b61370e6060830186613565565b61371b6080830185612e9d565b61372860a0830184612a0f565b979650505050505050565b60008151905061374281612af5565b92915050565b60008060006060848603121561376157613760612aeb565b5b600061376f86828701613733565b935050602061378086828701613733565b925050604061379186828701613733565b9150509250925092565b60006040820190506137b06000830185612a0f565b6137bd6020830184612a0f565b9392505050565b60006137cf82612a05565b91506137da83612a05565b92508282019050808211156137f2576137f16130eb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061382e601b83612a44565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b905091905056fea26469706673582212201d77d1a900224ed58676f73ed045961236ebf2d43f97017186caa09fec576c5264736f6c63430008120033

Deployed Bytecode

0x6080604052600436106102555760003560e01c806378109e5411610139578063a9059cbb116100b6578063dd62ed3e1161007a578063dd62ed3e14610913578063df20fd4914610950578063ef1f153814610979578063f887ea40146109b6578063fed0d2a1146109e1578063ffb54a9914610a0c5761025c565b8063a9059cbb1461081a578063bd9ab53714610857578063d51ed1c814610880578063d58f2f27146108bd578063dccd8bd2146108e85761025c565b806398118cb4116100fd57806398118cb41461072157806398be37861461074c57806398e0ae14146107895780639c75dd35146107c6578063a8aa1b31146107ef5761025c565b806378109e541461064c5780637d1db4a5146106775780637f274d58146106a2578063893d20e8146106cb57806395d89b41146106f65761025c565b806323b872dd116101d25780633c8e556d116101965780633c8e556d14610528578063571ac8b0146105515780635921652f1461058e5780636b67c4df146105b95780636ddd1713146105e457806370a082311461060f5761025c565b806323b872dd1461042d5780632b112e491461046a5780632f54bf6e146104955780633121c7c0146104d2578063313ce567146104fd5761025c565b8063180b0d7e11610219578063180b0d7e1461035a57806318160ddd146103855780631df4ccfc146103b05780631f76a7af146103db578063201e7991146104045761025c565b80630445b6671461026157806306fdde031461028c57806309302dc6146102b7578063095ea7b3146102e05780631161ae391461031d5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b50610276610a37565b6040516102839190612a1e565b60405180910390f35b34801561029857600080fd5b506102a1610a3d565b6040516102ae9190612ac9565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d99190612b21565b610a7a565b005b3480156102ec57600080fd5b5061030760048036038101906103029190612bac565b610b2a565b6040516103149190612c07565b60405180910390f35b34801561032957600080fd5b50610344600480360381019061033f9190612c22565b610c1c565b6040516103519190612c07565b60405180910390f35b34801561036657600080fd5b5061036f610c31565b60405161037c9190612a1e565b60405180910390f35b34801561039157600080fd5b5061039a610c37565b6040516103a79190612a1e565b60405180910390f35b3480156103bc57600080fd5b506103c5610c41565b6040516103d29190612a1e565b60405180910390f35b3480156103e757600080fd5b5061040260048036038101906103fd9190612ca0565b610c47565b005b34801561041057600080fd5b5061042b60048036038101906104269190612c22565b610d60565b005b34801561043957600080fd5b50610454600480360381019061044f9190612ccd565b610d72565b6040516104619190612c07565b60405180910390f35b34801561047657600080fd5b5061047f610f72565b60405161048c9190612a1e565b60405180910390f35b3480156104a157600080fd5b506104bc60048036038101906104b79190612d20565b610ff4565b6040516104c99190612c07565b60405180910390f35b3480156104de57600080fd5b506104e761104d565b6040516104f49190612a1e565b60405180910390f35b34801561050957600080fd5b50610512611053565b60405161051f9190612d69565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a9190612d84565b61105c565b005b34801561055d57600080fd5b5061057860048036038101906105739190612d20565b6111ae565b6040516105859190612c07565b60405180910390f35b34801561059a57600080fd5b506105a36111e1565b6040516105b09190612a1e565b60405180910390f35b3480156105c557600080fd5b506105ce6111e7565b6040516105db9190612a1e565b60405180910390f35b3480156105f057600080fd5b506105f96111ed565b6040516106069190612c07565b60405180910390f35b34801561061b57600080fd5b5061063660048036038101906106319190612d20565b611200565b6040516106439190612a1e565b60405180910390f35b34801561065857600080fd5b50610661611249565b60405161066e9190612a1e565b60405180910390f35b34801561068357600080fd5b5061068c61124f565b6040516106999190612a1e565b60405180910390f35b3480156106ae57600080fd5b506106c960048036038101906106c49190612e50565b611255565b005b3480156106d757600080fd5b506106e06112f8565b6040516106ed9190612eac565b60405180910390f35b34801561070257600080fd5b5061070b611321565b6040516107189190612ac9565b60405180910390f35b34801561072d57600080fd5b5061073661135e565b6040516107439190612a1e565b60405180910390f35b34801561075857600080fd5b50610773600480360381019061076e9190612d20565b611364565b6040516107809190612c07565b60405180910390f35b34801561079557600080fd5b506107b060048036038101906107ab9190612bac565b6113ba565b6040516107bd9190612c07565b60405180910390f35b3480156107d257600080fd5b506107ed60048036038101906107e89190612b21565b611464565b005b3480156107fb57600080fd5b506108046114ed565b6040516108119190612eac565b60405180910390f35b34801561082657600080fd5b50610841600480360381019061083c9190612bac565b611513565b60405161084e9190612c07565b60405180910390f35b34801561086357600080fd5b5061087e60048036038101906108799190612b21565b611528565b005b34801561088c57600080fd5b506108a760048036038101906108a29190612b21565b6115d8565b6040516108b49190612a1e565b60405180910390f35b3480156108c957600080fd5b506108d261164a565b6040516108df9190612a1e565b60405180910390f35b3480156108f457600080fd5b506108fd611650565b60405161090a9190612a1e565b60405180910390f35b34801561091f57600080fd5b5061093a60048036038101906109359190612ec7565b611656565b6040516109479190612a1e565b60405180910390f35b34801561095c57600080fd5b5061097760048036038101906109729190612f33565b6116dd565b005b34801561098557600080fd5b506109a0600480360381019061099b9190612d20565b611702565b6040516109ad9190612c07565b60405180910390f35b3480156109c257600080fd5b506109cb611722565b6040516109d89190612fd2565b60405180910390f35b3480156109ed57600080fd5b506109f6611748565b604051610a039190612a1e565b60405180910390f35b348015610a1857600080fd5b50610a2161174e565b604051610a2e9190612c07565b60405180910390f35b601f5481565b60606040518060400160405280600f81526020017f48616c6c6f7765656e20536f6e69630000000000000000000000000000000000815250905090565b610a8333610ff4565b610ac2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ab990613039565b60405180910390fd5b600a811015610b06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610afd906130cb565b60405180910390fd5b6103e881600554610b17919061311a565b610b21919061318b565b60078190555050565b600081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c0a9190612a1e565b60405180910390a36001905092915050565b600082610c28836115d8565b11905092915050565b60135481565b6000600554905090565b60125481565b610c5033610ff4565b610c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8690613039565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc68616381604051610d5591906131dd565b60405180910390a150565b81601b8190555080601c819055505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414610f5e57610edd826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b610f698484846117c5565b90509392505050565b6000610fef610fa2600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b610fe1610fd0600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b600554611be890919063ffffffff16565b611be890919063ffffffff16565b905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60155481565b60006004905090565b61106533610ff4565b6110a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161109b90613039565b60405180910390fd5b83601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60006111da827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610b2a565b9050919050565b60165481565b600f5481565b601e60159054906101000a900460ff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60075481565b60065481565b60005b828290508110156112f3576001600d600085858581811061127c5761127b6131f8565b5b90506020020160208101906112919190612d20565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806112ec90613227565b9050611258565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600e81526020017f48414c4c4f5745454e534f4e4943000000000000000000000000000000000000815250905090565b600e5481565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161141992919061326f565b6020604051808303816000875af1158015611438573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061145c91906132ad565b905092915050565b6000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc606484846114b3919061311a565b6114bd919061318b565b9081150290604051600060405180830381858888f193505050501580156114e8573d6000803e3d6000fd5b505050565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006115203384846117c5565b905092915050565b61153133610ff4565b611570576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156790613039565b60405180910390fd5b60018110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab9061334c565b60405180910390fd5b6103e8816005546115c5919061311a565b6115cf919061318b565b60068190555050565b60006116436115e5610f72565b6116356116266002611618601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611200565b611c3290919063ffffffff16565b85611c3290919063ffffffff16565b611cac90919063ffffffff16565b9050919050565b60105481565b60115481565b6000600960008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b81601e60156101000a81548160ff02191690831515021790555080601f819055505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60145481565b601e60149054906101000a900460ff1681565b60008383111582906117a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a09190612ac9565b60405180910390fd5b50600083856117b8919061336c565b9050809150509392505050565b6000602060009054906101000a900460ff16156117ee576117e7848484611cf6565b9050611be1565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156118925750600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118e757601e60149054906101000a900460ff166118e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118dd906133ec565b60405180910390fd5b5b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561198b5750600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119ca576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119c190613458565b60405180910390fd5b6119d2611ec9565b156119e0576119df611fa0565b5b611a69826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000611ab785612517565b1580611ac95750611ac784612517565b155b611add57611ad885848661256e565b611adf565b825b9050611b3381600860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611bd39190612a1e565b60405180910390a360019150505b9392505050565b6000611c2a83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611761565b905092915050565b6000808303611c445760009050611ca6565b60008284611c52919061311a565b9050828482611c61919061318b565b14611ca1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c98906134ea565b60405180910390fd5b809150505b92915050565b6000611cee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506129a2565b905092915050565b6000611d81826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600860008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546117619092919063ffffffff16565b600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e1682600860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611eb69190612a1e565b60405180910390a3600190509392505050565b6000601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611f365750602060009054906101000a900460ff16155b8015611f4e5750601e60159054906101000a900460ff165b8015611f9b5750601f54600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001602060006101000a81548160ff0219169083151502179055506000611fcb601b54601c54610c1c565b611fd757600e54611fda565b60005b9050600061201a600261200c601254611ffe86601f54611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061203382601f54611be890919063ffffffff16565b90506000600267ffffffffffffffff8111156120525761205161350a565b5b6040519080825280602002602001820160405280156120805781602001602082028036833780820191505090505b5090503081600081518110612098576120976131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612109576121086131f8565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478460008530426040518663ffffffff1660e01b81526004016121ac959493929190613632565b600060405180830381600087803b1580156121c657600080fd5b505af11580156121da573d6000803e3d6000fd5b5050505060006121f38247611be890919063ffffffff16565b9050600061221f61220e600289611cac90919063ffffffff16565b601254611be890919063ffffffff16565b9050600061225b600261224d8461223f8c88611c3290919063ffffffff16565b611cac90919063ffffffff16565b611cac90919063ffffffff16565b9050600061228683612278600f5487611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006122b1846122a360105488611c3290919063ffffffff16565b611cac90919063ffffffff16565b90506000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1683617530906040516122ff906136bd565b600060405180830381858888f193505050503d806000811461233d576040519150601f19603f3d011682016040523d82523d6000602084013e612342565b606091505b50509050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051612390906136bd565b600060405180830381858888f193505050503d80600081146123ce576040519150601f19603f3d011682016040523d82523d6000602084013e6123d3565b606091505b5050809150506000905060008a11156124ef57601d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308d600080601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b815260040161246f969594939291906136d2565b60606040518083038185885af115801561248d573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906124b29190613748565b5050507f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506848b6040516124e692919061379b565b60405180910390a15b50505050505050505050506000602060006101000a81548160ff021916908315150217905550565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b6000806016549050601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125d5576014549050612631565b601e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036126305760155490505b5b600061267a6064601354612645919061311a565b61266c8461265e6012548a611c3290919063ffffffff16565b611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126a760125461269960115485611c3290919063ffffffff16565b611cac90919063ffffffff16565b905060006126be8284611be890919063ffffffff16565b905061271281600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b600860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506127c98260086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294490919063ffffffff16565b60086000601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161288b9190612a1e565b60405180910390a3600082111561292457601a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161291b9190612a1e565b60405180910390a35b6129378388611be890919063ffffffff16565b9450505050509392505050565b600080828461295391906137c4565b905083811015612998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161298f90613844565b60405180910390fd5b8091505092915050565b600080831182906129e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129e09190612ac9565b60405180910390fd5b50600083856129f8919061318b565b9050809150509392505050565b6000819050919050565b612a1881612a05565b82525050565b6000602082019050612a336000830184612a0f565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612a73578082015181840152602081019050612a58565b60008484015250505050565b6000601f19601f8301169050919050565b6000612a9b82612a39565b612aa58185612a44565b9350612ab5818560208601612a55565b612abe81612a7f565b840191505092915050565b60006020820190508181036000830152612ae38184612a90565b905092915050565b600080fd5b600080fd5b612afe81612a05565b8114612b0957600080fd5b50565b600081359050612b1b81612af5565b92915050565b600060208284031215612b3757612b36612aeb565b5b6000612b4584828501612b0c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612b7982612b4e565b9050919050565b612b8981612b6e565b8114612b9457600080fd5b50565b600081359050612ba681612b80565b92915050565b60008060408385031215612bc357612bc2612aeb565b5b6000612bd185828601612b97565b9250506020612be285828601612b0c565b9150509250929050565b60008115159050919050565b612c0181612bec565b82525050565b6000602082019050612c1c6000830184612bf8565b92915050565b60008060408385031215612c3957612c38612aeb565b5b6000612c4785828601612b0c565b9250506020612c5885828601612b0c565b9150509250929050565b6000612c6d82612b4e565b9050919050565b612c7d81612c62565b8114612c8857600080fd5b50565b600081359050612c9a81612c74565b92915050565b600060208284031215612cb657612cb5612aeb565b5b6000612cc484828501612c8b565b91505092915050565b600080600060608486031215612ce657612ce5612aeb565b5b6000612cf486828701612b97565b9350506020612d0586828701612b97565b9250506040612d1686828701612b0c565b9150509250925092565b600060208284031215612d3657612d35612aeb565b5b6000612d4484828501612b97565b91505092915050565b600060ff82169050919050565b612d6381612d4d565b82525050565b6000602082019050612d7e6000830184612d5a565b92915050565b60008060008060808587031215612d9e57612d9d612aeb565b5b6000612dac87828801612b97565b9450506020612dbd87828801612b97565b9350506040612dce87828801612b97565b9250506060612ddf87828801612b97565b91505092959194509250565b600080fd5b600080fd5b600080fd5b60008083601f840112612e1057612e0f612deb565b5b8235905067ffffffffffffffff811115612e2d57612e2c612df0565b5b602083019150836020820283011115612e4957612e48612df5565b5b9250929050565b60008060208385031215612e6757612e66612aeb565b5b600083013567ffffffffffffffff811115612e8557612e84612af0565b5b612e9185828601612dfa565b92509250509250929050565b612ea681612b6e565b82525050565b6000602082019050612ec16000830184612e9d565b92915050565b60008060408385031215612ede57612edd612aeb565b5b6000612eec85828601612b97565b9250506020612efd85828601612b97565b9150509250929050565b612f1081612bec565b8114612f1b57600080fd5b50565b600081359050612f2d81612f07565b92915050565b60008060408385031215612f4a57612f49612aeb565b5b6000612f5885828601612f1e565b9250506020612f6985828601612b0c565b9150509250929050565b6000819050919050565b6000612f98612f93612f8e84612b4e565b612f73565b612b4e565b9050919050565b6000612faa82612f7d565b9050919050565b6000612fbc82612f9f565b9050919050565b612fcc81612fb1565b82525050565b6000602082019050612fe76000830184612fc3565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000613023600683612a44565b915061302e82612fed565b602082019050919050565b6000602082019050818103600083015261305281613016565b9050919050565b7f4d61782057616c6c65742063616e6e6f74206265206c6f776572207468616e2060008201527f312520746f74616c20737570706c792e00000000000000000000000000000000602082015250565b60006130b5603083612a44565b91506130c082613059565b604082019050919050565b600060208201905081810360008301526130e4816130a8565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061312582612a05565b915061313083612a05565b925082820261313e81612a05565b91508282048414831517613155576131546130eb565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061319682612a05565b91506131a183612a05565b9250826131b1576131b061315c565b5b828204905092915050565b60006131c782612f9f565b9050919050565b6131d7816131bc565b82525050565b60006020820190506131f260008301846131ce565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061323282612a05565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613264576132636130eb565b5b600182019050919050565b60006040820190506132846000830185612e9d565b6132916020830184612a0f565b9392505050565b6000815190506132a781612f07565b92915050565b6000602082840312156132c3576132c2612aeb565b5b60006132d184828501613298565b91505092915050565b7f4d6178205472616e73616374696f6e2063616e6e6f74206265206c6f7765722060008201527f7468616e20302e312520746f74616c20737570706c792e000000000000000000602082015250565b6000613336603783612a44565b9150613341826132da565b604082019050919050565b6000602082019050818103600083015261336581613329565b9050919050565b600061337782612a05565b915061338283612a05565b925082820390508181111561339a576133996130eb565b5b92915050565b7f54726164696e67206e6f74206f70656e20796574000000000000000000000000600082015250565b60006133d6601483612a44565b91506133e1826133a0565b602082019050919050565b60006020820190508181036000830152613405816133c9565b9050919050565b7f41646472657373206973204465636c696e656400000000000000000000000000600082015250565b6000613442601383612a44565b915061344d8261340c565b602082019050919050565b6000602082019050818103600083015261347181613435565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006134d4602183612a44565b91506134df82613478565b604082019050919050565b60006020820190508181036000830152613503816134c7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000819050919050565b600061355e61355961355484613539565b612f73565b612a05565b9050919050565b61356e81613543565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6135a981612b6e565b82525050565b60006135bb83836135a0565b60208301905092915050565b6000602082019050919050565b60006135df82613574565b6135e9818561357f565b93506135f483613590565b8060005b8381101561362557815161360c88826135af565b9750613617836135c7565b9250506001810190506135f8565b5085935050505092915050565b600060a0820190506136476000830188612a0f565b6136546020830187613565565b818103604083015261366681866135d4565b90506136756060830185612e9d565b6136826080830184612a0f565b9695505050505050565b600081905092915050565b50565b60006136a760008361368c565b91506136b282613697565b600082019050919050565b60006136c88261369a565b9150819050919050565b600060c0820190506136e76000830189612e9d565b6136f46020830188612a0f565b6137016040830187613565565b61370e6060830186613565565b61371b6080830185612e9d565b61372860a0830184612a0f565b979650505050505050565b60008151905061374281612af5565b92915050565b60008060006060848603121561376157613760612aeb565b5b600061376f86828701613733565b935050602061378086828701613733565b925050604061379186828701613733565b9150509250925092565b60006040820190506137b06000830185612a0f565b6137bd6020830184612a0f565b9392505050565b60006137cf82612a05565b91506137da83612a05565b92508282019050808211156137f2576137f16130eb565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061382e601b83612a44565b9150613839826137f8565b602082019050919050565b6000602082019050818103600083015261385d81613821565b905091905056fea26469706673582212201d77d1a900224ed58676f73ed045961236ebf2d43f97017186caa09fec576c5264736f6c63430008120033

Deployed Bytecode Sourcemap

5054:11184:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6811:49;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7967:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13830:276;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8389:216;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15845:150;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6241:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7697:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6147:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3358:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15335:173;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8941:370;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15520:142;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3135:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6330:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7791:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14786:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8613:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6372:40;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6021:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6774:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8137:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5596:64;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5528:61;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16003:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8053:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7877:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5979:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3246:104;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14607:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14400:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6707:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8777:156;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14114:278;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15670:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6063:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6105;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8248:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15181:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5928:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6676:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6287:36;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6735:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6811:49;;;;:::o;7967:80::-;8015:13;8039:5;;;;;;;;;;;;;;;;;8032:12;;7967:80;:::o;13830:276::-;3086:19;3094:10;3086:7;:19::i;:::-;3078:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;13966:2:::1;13939:23;:29;;13931:90;;;;;;;;;;;;:::i;:::-;;;;;;;;;14094:4;14066:23;14051:12;;:38;;;;:::i;:::-;14050:48;;;;:::i;:::-;14032:15;:66;;;;13830:276:::0;:::o;8389:216::-;8464:4;8516:6;8481:11;:23;8493:10;8481:23;;;;;;;;;;;;;;;:32;8505:7;8481:32;;;;;;;;;;;;;;;:41;;;;8559:7;8538:37;;8547:10;8538:37;;;8568:6;8538:37;;;;;;:::i;:::-;;;;;;;;8593:4;8586:11;;8389:216;;;;:::o;15845:150::-;15925:4;15981:6;15949:29;15969:8;15949:19;:29::i;:::-;:38;15942:45;;15845:150;;;;:::o;6241:37::-;;;;:::o;7697:88::-;7752:7;7770:12;;7763:19;;7697:88;:::o;6147:87::-;;;;:::o;3358:164::-;3086:19;3094:10;3086:7;:19::i;:::-;3078:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;3433:3:::1;3425:5;::::0;:11:::1;;;;;;;;;;;;;;;;;;3469:4;3447:14:::0;:19:::1;3462:3;3447:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;3489:25;3510:3;3489:25;;;;;;:::i;:::-;;;;;;;;3358:164:::0;:::o;15335:173::-;15441:7;15423:15;:25;;;;15488:12;15459:26;:41;;;;15335:173;;:::o;8941:370::-;9041:4;9096:17;9061:11;:19;9073:6;9061:19;;;;;;;;;;;;;;;:31;9081:10;9061:31;;;;;;;;;;;;;;;;:52;9058:186;;9163:69;9199:6;9163:69;;;;;;;;;;;;;;;;;:11;:19;9175:6;9163:19;;;;;;;;;;;;;;;:31;9183:10;9163:31;;;;;;;;;;;;;;;;:35;;:69;;;;;:::i;:::-;9129:11;:19;9141:6;9129:19;;;;;;;;;;;;;;;:31;9149:10;9129:31;;;;;;;;;;;;;;;:103;;;;9058:186;9263:40;9277:6;9285:9;9296:6;9263:13;:40::i;:::-;9256:47;;8941:370;;;;;:::o;15520:142::-;15573:7;15600:54;15638:15;15648:4;;;;;;;;;;;15638:9;:15::i;:::-;15600:33;15617:15;15627:4;;;;;;;;;;;15617:9;:15::i;:::-;15600:12;;:16;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;15593:61;;15520:142;:::o;3135:103::-;3190:4;3225:5;;;;;;;;;;;3214:16;;:7;:16;;;3207:23;;3135:103;;;:::o;6330:35::-;;;;:::o;7791:80::-;7843:5;5454:1;7852:16;;7791:80;:::o;14786:387::-;3086:19;3094:10;3086:7;:19::i;:::-;3078:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14986:22:::1;14962:21;;:46;;;;;;;;;;;;;;;;;;15042:21;15019:20;;:44;;;;;;;;;;;;;;;;;;15095:19;15074:18;;:40;;;;;;;;;;;;;;;;;;15146:19;15125:18;;:40;;;;;;;;;;;;;;;;;;14786:387:::0;;;;:::o;8613:122::-;8668:4;8692:35;8700:7;8709:17;8692:7;:35::i;:::-;8685:42;;8613:122;;;:::o;6372:40::-;;;;:::o;6021:35::-;;;;:::o;6774:30::-;;;;;;;;;;;;;:::o;8137:105::-;8203:7;8221:9;:18;8231:7;8221:18;;;;;;;;;;;;;;;;8214:25;;8137:105;;;:::o;5596:64::-;;;;:::o;5528:61::-;;;;:::o;16003:167::-;16076:9;16071:92;16091:9;;:16;;16087:1;:20;16071:92;;;16151:4;16125:9;:23;16135:9;;16145:1;16135:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;16125:23;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;16109:3;;;;:::i;:::-;;;16071:92;;;;16003:167;;:::o;8053:78::-;8105:7;8123:5;;;;;;;;;;;8116:12;;8053:78;:::o;7877:84::-;7927:13;7951:7;;;;;;;;;;;;;;;;;7944:14;;7877:84;:::o;5979:35::-;;;;:::o;3246:104::-;3299:4;3323:14;:19;3338:3;3323:19;;;;;;;;;;;;;;;;;;;;;;;;;3316:26;;3246:104;;;:::o;14607:171::-;14679:12;14718;14711:29;;;14741:20;;;;;;;;;;;14763:6;14711:59;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14704:66;;14607:171;;;;:::o;14400:199::-;14465:17;14485:21;14465:41;;14525:20;;;;;;;;;;;14517:38;;:74;14587:3;14568:16;14556:9;:28;;;;:::i;:::-;:34;;;;:::i;:::-;14517:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14454:145;14400:199;:::o;6707:19::-;;;;;;;;;;;;;:::o;8777:156::-;8857:4;8881:44;8895:10;8907:9;8918:6;8881:13;:44::i;:::-;8874:51;;8777:156;;;;:::o;14114:278::-;3086:19;3094:10;3086:7;:19::i;:::-;3078:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;14248:1:::1;14220:24;:29;;14212:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;14380:4;14351:24;14336:12;;:39;;;;:::i;:::-;14335:49;;;;:::i;:::-;14320:12;:64;;;;14114:278:::0;:::o;15670:167::-;15738:7;15765:64;15806:22;:20;:22::i;:::-;15765:36;15778:22;15798:1;15778:15;15788:4;;;;;;;;;;;15778:9;:15::i;:::-;:19;;:22;;;;:::i;:::-;15765:8;:12;;:36;;;;:::i;:::-;:40;;:64;;;;:::i;:::-;15758:71;;15670:167;;;:::o;6063:35::-;;;;:::o;6105:::-;;;;:::o;8248:133::-;8332:7;8350:11;:19;8362:6;8350:19;;;;;;;;;;;;;;;:28;8370:7;8350:28;;;;;;;;;;;;;;;;8343:35;;8248:133;;;;:::o;15181:146::-;15277:8;15263:11;;:22;;;;;;;;;;;;;;;;;;15312:7;15296:13;:23;;;;15181:146;;:::o;5928:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;6676:24::-;;;;;;;;;;;;;:::o;6287:36::-;;;;:::o;6735:30::-;;;;;;;;;;;;;:::o;1118:192::-;1204:7;1237:1;1232;:6;;1240:12;1224:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1264:9;1280:1;1276;:5;;;;:::i;:::-;1264:17;;1301:1;1294:8;;;1118:192;;;;;:::o;9319:899::-;9411:4;9431:6;;;;;;;;;;;9428:63;;;9447:41;9462:6;9470:9;9481:6;9447:14;:41::i;:::-;9440:48;;;;9428:63;9507:14;:22;9522:6;9507:22;;;;;;;;;;;;;;;;;;;;;;;;;9506:23;:53;;;;;9534:14;:25;9549:9;9534:25;;;;;;;;;;;;;;;;;;;;;;;;;9533:26;9506:53;9503:127;;;9583:11;;;;;;;;;;;9575:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;9503:127;9690:9;:20;9700:9;9690:20;;;;;;;;;;;;;;;;;;;;;;;;;9689:21;:43;;;;;9715:9;:17;9725:6;9715:17;;;;;;;;;;;;;;;;;;;;;;;;;9714:18;9689:43;9681:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;9772:16;:14;:16::i;:::-;9769:35;;;9791:10;:8;:10::i;:::-;9769:35;9863:53;9885:6;9863:53;;;;;;;;;;;;;;;;;:9;:17;9873:6;9863:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;9843:9;:17;9853:6;9843:17;;;;;;;;;;;;;;;:73;;;;9929:22;9956:21;9970:6;9956:13;:21::i;:::-;9955:22;:51;;;;9982:24;9996:9;9982:13;:24::i;:::-;9981:25;9955:51;9954:99;;10019:34;10027:6;10035;10043:9;10019:7;:34::i;:::-;9954:99;;;10010:6;9954:99;9929:124;;10087:40;10112:14;10087:9;:20;10097:9;10087:20;;;;;;;;;;;;;;;;:24;;:40;;;;:::i;:::-;10064:9;:20;10074:9;10064:20;;;;;;;;;;;;;;;:63;;;;10162:9;10145:43;;10154:6;10145:43;;;10173:14;10145:43;;;;;;:::i;:::-;;;;;;;;10206:4;10199:11;;;9319:899;;;;;;:::o;976:136::-;1034:7;1061:43;1065:1;1068;1061:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1054:50;;976:136;;;;:::o;1316:250::-;1374:7;1403:1;1398;:6;1394:47;;1428:1;1421:8;;;;1394:47;1453:9;1469:1;1465;:5;;;;:::i;:::-;1453:17;;1498:1;1493;1489;:5;;;;:::i;:::-;:10;1481:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1557:1;1550:8;;;1316:250;;;;;:::o;1572:132::-;1630:7;1657:39;1661:1;1664;1657:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1650:46;;1572:132;;;;:::o;10230:330::-;10323:4;10360:53;10382:6;10360:53;;;;;;;;;;;;;;;;;:9;:17;10370:6;10360:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;10340:9;:17;10350:6;10340:17;;;;;;;;;;;;;;;:73;;;;10447:32;10472:6;10447:9;:20;10457:9;10447:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;10424:9;:20;10434:9;10424:20;;;;;;;;;;;;;;;:55;;;;10512:9;10495:35;;10504:6;10495:35;;;10523:6;10495:35;;;;;;:::i;:::-;;;;;;;;10548:4;10541:11;;10230:330;;;;;:::o;11839:197::-;11888:4;11926;;;;;;;;;;;11912:18;;:10;:18;;;;:38;;;;;11944:6;;;;;;;;;;;11943:7;11912:38;:62;;;;;11963:11;;;;;;;;;;;11912:62;:116;;;;;12015:13;;11987:9;:24;12005:4;11987:24;;;;;;;;;;;;;;;;:41;;11912:116;11905:123;;11839:197;:::o;12044:1745::-;6916:4;6907:6;;:13;;;;;;;;;;;;;;;;;;12093:27:::1;12123:60;12139:15;;12156:26;;12123:15;:60::i;:::-;:79;;12190:12;;12123:79;;;12186:1;12123:79;12093:109;;12213:23;12239:59;12296:1;12239:52;12282:8;;12239:38;12257:19;12239:13;;:17;;:38;;;;:::i;:::-;:42;;:52;;;;:::i;:::-;:56;;:59;;;;:::i;:::-;12213:85;;12309:20;12332:34;12350:15;12332:13;;:17;;:34;;;;:::i;:::-;12309:57;;12379:21;12417:1;12403:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12379:40;;12448:4;12430;12435:1;12430:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12474:4;;;;;;;;;;;12464;12469:1;12464:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;::::0;::::1;12491:21;12515;12491:45;;12549:6;;;;;;;;;;;:57;;;12621:12;12648:1;12664:4;12691;12711:15;12549:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12750:17;12770:40;12796:13;12770:21;:25;;:40;;;;:::i;:::-;12750:60;;12823:19;12845:40;12858:26;12882:1;12858:19;:23;;:26;;;;:::i;:::-;12845:8;;:12;;:40;;;;:::i;:::-;12823:62;;12906:26;12935:58;12991:1;12935:51;12974:11;12935:34;12949:19;12935:9;:13;;:34;;;;:::i;:::-;:38;;:51;;;;:::i;:::-;:55;;:58;;;;:::i;:::-;12906:87;;13004:26;13033:44;13065:11;13033:27;13047:12;;13033:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;13004:73;;13088:24;13115:42;13145:11;13115:25;13129:10;;13115:9;:13;;:25;;;;:::i;:::-;:29;;:42;;;;:::i;:::-;13088:69;;13171:15;13199:20;;;;;;;;;;;13191:34;;13233:18;13258:5;13191:77;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13170:98;;;13303:18;;;;;;;;;;;13295:32;;13335:16;13358:5;13295:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13279:89;;;;;13402:5;13389:18;;13441:1;13423:15;:19;13420:362;;;13458:6;;;;;;;;;;;:22;;;13488:18;13534:4;13558:15;13592:1;13612::::0;13632:21:::1;;;;;;;;;;;13672:15;13458:244;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13722:48;13734:18;13754:15;13722:48;;;;;;;:::i;:::-;;;;;;;;13420:362;12082:1707;;;;;;;;;;;6934:5:::0;6925:6;;:14;;;;;;;;;;;;;;;;;;12044:1745::o;10742:114::-;10804:4;10829:11;:19;10841:6;10829:19;;;;;;;;;;;;;;;;;;;;;;;;;10828:20;10821:27;;10742:114;;;:::o;10864:967::-;10950:7;10980:18;11001;;10980:39;;11046:4;;;;;;;;;;;11033:17;;:9;:17;;;11030:152;;11079:14;;11066:27;;11030:152;;;11124:4;;;;;;;;;;;11114:14;;:6;:14;;;11111:71;;11157:13;;11144:26;;11111:71;11030:152;11194:17;11214:62;11272:3;11255:14;;:20;;;;:::i;:::-;11214:36;11239:10;11214:20;11225:8;;11214:6;:10;;:20;;;;:::i;:::-;:24;;:36;;;;:::i;:::-;:40;;:62;;;;:::i;:::-;11194:82;;11289:21;11313:39;11343:8;;11313:25;11327:10;;11313:9;:13;;:25;;;;:::i;:::-;:29;;:39;;;;:::i;:::-;11289:63;;11363:22;11388:28;11402:13;11388:9;:13;;:28;;;;:::i;:::-;11363:53;;11456:44;11485:14;11456:9;:24;11474:4;11456:24;;;;;;;;;;;;;;;;:28;;:44;;;;:::i;:::-;11429:9;:24;11447:4;11429:24;;;;;;;;;;;;;;;:71;;;;11543:48;11577:13;11543:9;:29;11553:18;;;;;;;;;;;11543:29;;;;;;;;;;;;;;;;:33;;:48;;;;:::i;:::-;11511:9;:29;11521:18;;;;;;;;;;;11511:29;;;;;;;;;;;;;;;:80;;;;11632:4;11607:47;;11616:6;11607:47;;;11639:14;11607:47;;;;;;:::i;:::-;;;;;;;;11694:1;11678:13;:17;11675:108;;;11733:18;;;;;;;;;;;11716:51;;11725:6;11716:51;;;11753:13;11716:51;;;;;;:::i;:::-;;;;;;;;11675:108;11802:21;11813:9;11802:6;:10;;:21;;;;:::i;:::-;11795:28;;;;;;10864:967;;;;;:::o;789:181::-;847:7;867:9;883:1;879;:5;;;;:::i;:::-;867:17;;908:1;903;:6;;895:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;961:1;954:8;;;789:181;;;;:::o;1710:189::-;1796:7;1828:1;1824;:5;1831:12;1816:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1855:9;1871:1;1867;:5;;;;:::i;:::-;1855:17;;1890:1;1883:8;;;1710:189;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;1988:117;2097:1;2094;2087:12;2111:122;2184:24;2202:5;2184:24;:::i;:::-;2177:5;2174:35;2164:63;;2223:1;2220;2213:12;2164:63;2111:122;:::o;2239:139::-;2285:5;2323:6;2310:20;2301:29;;2339:33;2366:5;2339:33;:::i;:::-;2239:139;;;;:::o;2384:329::-;2443:6;2492:2;2480:9;2471:7;2467:23;2463:32;2460:119;;;2498:79;;:::i;:::-;2460:119;2618:1;2643:53;2688:7;2679:6;2668:9;2664:22;2643:53;:::i;:::-;2633:63;;2589:117;2384:329;;;;:::o;2719:126::-;2756:7;2796:42;2789:5;2785:54;2774:65;;2719:126;;;:::o;2851:96::-;2888:7;2917:24;2935:5;2917:24;:::i;:::-;2906:35;;2851:96;;;:::o;2953:122::-;3026:24;3044:5;3026:24;:::i;:::-;3019:5;3016:35;3006:63;;3065:1;3062;3055:12;3006:63;2953:122;:::o;3081:139::-;3127:5;3165:6;3152:20;3143:29;;3181:33;3208:5;3181:33;:::i;:::-;3081:139;;;;:::o;3226:474::-;3294:6;3302;3351:2;3339:9;3330:7;3326:23;3322:32;3319:119;;;3357:79;;:::i;:::-;3319:119;3477:1;3502:53;3547:7;3538:6;3527:9;3523:22;3502:53;:::i;:::-;3492:63;;3448:117;3604:2;3630:53;3675:7;3666:6;3655:9;3651:22;3630:53;:::i;:::-;3620:63;;3575:118;3226:474;;;;;:::o;3706:90::-;3740:7;3783:5;3776:13;3769:21;3758:32;;3706:90;;;:::o;3802:109::-;3883:21;3898:5;3883:21;:::i;:::-;3878:3;3871:34;3802:109;;:::o;3917:210::-;4004:4;4042:2;4031:9;4027:18;4019:26;;4055:65;4117:1;4106:9;4102:17;4093:6;4055:65;:::i;:::-;3917:210;;;;:::o;4133:474::-;4201:6;4209;4258:2;4246:9;4237:7;4233:23;4229:32;4226:119;;;4264:79;;:::i;:::-;4226:119;4384:1;4409:53;4454:7;4445:6;4434:9;4430:22;4409:53;:::i;:::-;4399:63;;4355:117;4511:2;4537:53;4582:7;4573:6;4562:9;4558:22;4537:53;:::i;:::-;4527:63;;4482:118;4133:474;;;;;:::o;4613:104::-;4658:7;4687:24;4705:5;4687:24;:::i;:::-;4676:35;;4613:104;;;:::o;4723:138::-;4804:32;4830:5;4804:32;:::i;:::-;4797:5;4794:43;4784:71;;4851:1;4848;4841:12;4784:71;4723:138;:::o;4867:155::-;4921:5;4959:6;4946:20;4937:29;;4975:41;5010:5;4975:41;:::i;:::-;4867:155;;;;:::o;5028:345::-;5095:6;5144:2;5132:9;5123:7;5119:23;5115:32;5112:119;;;5150:79;;:::i;:::-;5112:119;5270:1;5295:61;5348:7;5339:6;5328:9;5324:22;5295:61;:::i;:::-;5285:71;;5241:125;5028:345;;;;:::o;5379:619::-;5456:6;5464;5472;5521:2;5509:9;5500:7;5496:23;5492:32;5489:119;;;5527:79;;:::i;:::-;5489:119;5647:1;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5618:117;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5902:2;5928:53;5973:7;5964:6;5953:9;5949:22;5928:53;:::i;:::-;5918:63;;5873:118;5379:619;;;;;:::o;6004:329::-;6063:6;6112:2;6100:9;6091:7;6087:23;6083:32;6080:119;;;6118:79;;:::i;:::-;6080:119;6238:1;6263:53;6308:7;6299:6;6288:9;6284:22;6263:53;:::i;:::-;6253:63;;6209:117;6004:329;;;;:::o;6339:86::-;6374:7;6414:4;6407:5;6403:16;6392:27;;6339:86;;;:::o;6431:112::-;6514:22;6530:5;6514:22;:::i;:::-;6509:3;6502:35;6431:112;;:::o;6549:214::-;6638:4;6676:2;6665:9;6661:18;6653:26;;6689:67;6753:1;6742:9;6738:17;6729:6;6689:67;:::i;:::-;6549:214;;;;:::o;6769:765::-;6855:6;6863;6871;6879;6928:3;6916:9;6907:7;6903:23;6899:33;6896:120;;;6935:79;;:::i;:::-;6896:120;7055:1;7080:53;7125:7;7116:6;7105:9;7101:22;7080:53;:::i;:::-;7070:63;;7026:117;7182:2;7208:53;7253:7;7244:6;7233:9;7229:22;7208:53;:::i;:::-;7198:63;;7153:118;7310:2;7336:53;7381:7;7372:6;7361:9;7357:22;7336:53;:::i;:::-;7326:63;;7281:118;7438:2;7464:53;7509:7;7500:6;7489:9;7485:22;7464:53;:::i;:::-;7454:63;;7409:118;6769:765;;;;;;;:::o;7540:117::-;7649:1;7646;7639:12;7663:117;7772:1;7769;7762:12;7786:117;7895:1;7892;7885:12;7926:568;7999:8;8009:6;8059:3;8052:4;8044:6;8040:17;8036:27;8026:122;;8067:79;;:::i;:::-;8026:122;8180:6;8167:20;8157:30;;8210:18;8202:6;8199:30;8196:117;;;8232:79;;:::i;:::-;8196:117;8346:4;8338:6;8334:17;8322:29;;8400:3;8392:4;8384:6;8380:17;8370:8;8366:32;8363:41;8360:128;;;8407:79;;:::i;:::-;8360:128;7926:568;;;;;:::o;8500:559::-;8586:6;8594;8643:2;8631:9;8622:7;8618:23;8614:32;8611:119;;;8649:79;;:::i;:::-;8611:119;8797:1;8786:9;8782:17;8769:31;8827:18;8819:6;8816:30;8813:117;;;8849:79;;:::i;:::-;8813:117;8962:80;9034:7;9025:6;9014:9;9010:22;8962:80;:::i;:::-;8944:98;;;;8740:312;8500:559;;;;;:::o;9065:118::-;9152:24;9170:5;9152:24;:::i;:::-;9147:3;9140:37;9065:118;;:::o;9189:222::-;9282:4;9320:2;9309:9;9305:18;9297:26;;9333:71;9401:1;9390:9;9386:17;9377:6;9333:71;:::i;:::-;9189:222;;;;:::o;9417:474::-;9485:6;9493;9542:2;9530:9;9521:7;9517:23;9513:32;9510:119;;;9548:79;;:::i;:::-;9510:119;9668:1;9693:53;9738:7;9729:6;9718:9;9714:22;9693:53;:::i;:::-;9683:63;;9639:117;9795:2;9821:53;9866:7;9857:6;9846:9;9842:22;9821:53;:::i;:::-;9811:63;;9766:118;9417:474;;;;;:::o;9897:116::-;9967:21;9982:5;9967:21;:::i;:::-;9960:5;9957:32;9947:60;;10003:1;10000;9993:12;9947:60;9897:116;:::o;10019:133::-;10062:5;10100:6;10087:20;10078:29;;10116:30;10140:5;10116:30;:::i;:::-;10019:133;;;;:::o;10158:468::-;10223:6;10231;10280:2;10268:9;10259:7;10255:23;10251:32;10248:119;;;10286:79;;:::i;:::-;10248:119;10406:1;10431:50;10473:7;10464:6;10453:9;10449:22;10431:50;:::i;:::-;10421:60;;10377:114;10530:2;10556:53;10601:7;10592:6;10581:9;10577:22;10556:53;:::i;:::-;10546:63;;10501:118;10158:468;;;;;:::o;10632:60::-;10660:3;10681:5;10674:12;;10632:60;;;:::o;10698:142::-;10748:9;10781:53;10799:34;10808:24;10826:5;10808:24;:::i;:::-;10799:34;:::i;:::-;10781:53;:::i;:::-;10768:66;;10698:142;;;:::o;10846:126::-;10896:9;10929:37;10960:5;10929:37;:::i;:::-;10916:50;;10846:126;;;:::o;10978:144::-;11046:9;11079:37;11110:5;11079:37;:::i;:::-;11066:50;;10978:144;;;:::o;11128:167::-;11233:55;11282:5;11233:55;:::i;:::-;11228:3;11221:68;11128:167;;:::o;11301:258::-;11412:4;11450:2;11439:9;11435:18;11427:26;;11463:89;11549:1;11538:9;11534:17;11525:6;11463:89;:::i;:::-;11301:258;;;;:::o;11565:156::-;11705:8;11701:1;11693:6;11689:14;11682:32;11565:156;:::o;11727:365::-;11869:3;11890:66;11954:1;11949:3;11890:66;:::i;:::-;11883:73;;11965:93;12054:3;11965:93;:::i;:::-;12083:2;12078:3;12074:12;12067:19;;11727:365;;;:::o;12098:419::-;12264:4;12302:2;12291:9;12287:18;12279:26;;12351:9;12345:4;12341:20;12337:1;12326:9;12322:17;12315:47;12379:131;12505:4;12379:131;:::i;:::-;12371:139;;12098:419;;;:::o;12523:235::-;12663:34;12659:1;12651:6;12647:14;12640:58;12732:18;12727:2;12719:6;12715:15;12708:43;12523:235;:::o;12764:366::-;12906:3;12927:67;12991:2;12986:3;12927:67;:::i;:::-;12920:74;;13003:93;13092:3;13003:93;:::i;:::-;13121:2;13116:3;13112:12;13105:19;;12764:366;;;:::o;13136:419::-;13302:4;13340:2;13329:9;13325:18;13317:26;;13389:9;13383:4;13379:20;13375:1;13364:9;13360:17;13353:47;13417:131;13543:4;13417:131;:::i;:::-;13409:139;;13136:419;;;:::o;13561:180::-;13609:77;13606:1;13599:88;13706:4;13703:1;13696:15;13730:4;13727:1;13720:15;13747:410;13787:7;13810:20;13828:1;13810:20;:::i;:::-;13805:25;;13844:20;13862:1;13844:20;:::i;:::-;13839:25;;13899:1;13896;13892:9;13921:30;13939:11;13921:30;:::i;:::-;13910:41;;14100:1;14091:7;14087:15;14084:1;14081:22;14061:1;14054:9;14034:83;14011:139;;14130:18;;:::i;:::-;14011:139;13795:362;13747:410;;;;:::o;14163:180::-;14211:77;14208:1;14201:88;14308:4;14305:1;14298:15;14332:4;14329:1;14322:15;14349:185;14389:1;14406:20;14424:1;14406:20;:::i;:::-;14401:25;;14440:20;14458:1;14440:20;:::i;:::-;14435:25;;14479:1;14469:35;;14484:18;;:::i;:::-;14469:35;14526:1;14523;14519:9;14514:14;;14349:185;;;;:::o;14540:134::-;14598:9;14631:37;14662:5;14631:37;:::i;:::-;14618:50;;14540:134;;;:::o;14680:147::-;14775:45;14814:5;14775:45;:::i;:::-;14770:3;14763:58;14680:147;;:::o;14833:238::-;14934:4;14972:2;14961:9;14957:18;14949:26;;14985:79;15061:1;15050:9;15046:17;15037:6;14985:79;:::i;:::-;14833:238;;;;:::o;15077:180::-;15125:77;15122:1;15115:88;15222:4;15219:1;15212:15;15246:4;15243:1;15236:15;15263:233;15302:3;15325:24;15343:5;15325:24;:::i;:::-;15316:33;;15371:66;15364:5;15361:77;15358:103;;15441:18;;:::i;:::-;15358:103;15488:1;15481:5;15477:13;15470:20;;15263:233;;;:::o;15502:332::-;15623:4;15661:2;15650:9;15646:18;15638:26;;15674:71;15742:1;15731:9;15727:17;15718:6;15674:71;:::i;:::-;15755:72;15823:2;15812:9;15808:18;15799:6;15755:72;:::i;:::-;15502:332;;;;;:::o;15840:137::-;15894:5;15925:6;15919:13;15910:22;;15941:30;15965:5;15941:30;:::i;:::-;15840:137;;;;:::o;15983:345::-;16050:6;16099:2;16087:9;16078:7;16074:23;16070:32;16067:119;;;16105:79;;:::i;:::-;16067:119;16225:1;16250:61;16303:7;16294:6;16283:9;16279:22;16250:61;:::i;:::-;16240:71;;16196:125;15983:345;;;;:::o;16334:242::-;16474:34;16470:1;16462:6;16458:14;16451:58;16543:25;16538:2;16530:6;16526:15;16519:50;16334:242;:::o;16582:366::-;16724:3;16745:67;16809:2;16804:3;16745:67;:::i;:::-;16738:74;;16821:93;16910:3;16821:93;:::i;:::-;16939:2;16934:3;16930:12;16923:19;;16582:366;;;:::o;16954:419::-;17120:4;17158:2;17147:9;17143:18;17135:26;;17207:9;17201:4;17197:20;17193:1;17182:9;17178:17;17171:47;17235:131;17361:4;17235:131;:::i;:::-;17227:139;;16954:419;;;:::o;17379:194::-;17419:4;17439:20;17457:1;17439:20;:::i;:::-;17434:25;;17473:20;17491:1;17473:20;:::i;:::-;17468:25;;17517:1;17514;17510:9;17502:17;;17541:1;17535:4;17532:11;17529:37;;;17546:18;;:::i;:::-;17529:37;17379:194;;;;:::o;17579:170::-;17719:22;17715:1;17707:6;17703:14;17696:46;17579:170;:::o;17755:366::-;17897:3;17918:67;17982:2;17977:3;17918:67;:::i;:::-;17911:74;;17994:93;18083:3;17994:93;:::i;:::-;18112:2;18107:3;18103:12;18096:19;;17755:366;;;:::o;18127:419::-;18293:4;18331:2;18320:9;18316:18;18308:26;;18380:9;18374:4;18370:20;18366:1;18355:9;18351:17;18344:47;18408:131;18534:4;18408:131;:::i;:::-;18400:139;;18127:419;;;:::o;18552:169::-;18692:21;18688:1;18680:6;18676:14;18669:45;18552:169;:::o;18727:366::-;18869:3;18890:67;18954:2;18949:3;18890:67;:::i;:::-;18883:74;;18966:93;19055:3;18966:93;:::i;:::-;19084:2;19079:3;19075:12;19068:19;;18727:366;;;:::o;19099:419::-;19265:4;19303:2;19292:9;19288:18;19280:26;;19352:9;19346:4;19342:20;19338:1;19327:9;19323:17;19316:47;19380:131;19506:4;19380:131;:::i;:::-;19372:139;;19099:419;;;:::o;19524:220::-;19664:34;19660:1;19652:6;19648:14;19641:58;19733:3;19728:2;19720:6;19716:15;19709:28;19524:220;:::o;19750:366::-;19892:3;19913:67;19977:2;19972:3;19913:67;:::i;:::-;19906:74;;19989:93;20078:3;19989:93;:::i;:::-;20107:2;20102:3;20098:12;20091:19;;19750:366;;;:::o;20122:419::-;20288:4;20326:2;20315:9;20311:18;20303:26;;20375:9;20369:4;20365:20;20361:1;20350:9;20346:17;20339:47;20403:131;20529:4;20403:131;:::i;:::-;20395:139;;20122:419;;;:::o;20547:180::-;20595:77;20592:1;20585:88;20692:4;20689:1;20682:15;20716:4;20713:1;20706:15;20733:85;20778:7;20807:5;20796:16;;20733:85;;;:::o;20824:158::-;20882:9;20915:61;20933:42;20942:32;20968:5;20942:32;:::i;:::-;20933:42;:::i;:::-;20915:61;:::i;:::-;20902:74;;20824:158;;;:::o;20988:147::-;21083:45;21122:5;21083:45;:::i;:::-;21078:3;21071:58;20988:147;;:::o;21141:114::-;21208:6;21242:5;21236:12;21226:22;;21141:114;;;:::o;21261:184::-;21360:11;21394:6;21389:3;21382:19;21434:4;21429:3;21425:14;21410:29;;21261:184;;;;:::o;21451:132::-;21518:4;21541:3;21533:11;;21571:4;21566:3;21562:14;21554:22;;21451:132;;;:::o;21589:108::-;21666:24;21684:5;21666:24;:::i;:::-;21661:3;21654:37;21589:108;;:::o;21703:179::-;21772:10;21793:46;21835:3;21827:6;21793:46;:::i;:::-;21871:4;21866:3;21862:14;21848:28;;21703:179;;;;:::o;21888:113::-;21958:4;21990;21985:3;21981:14;21973:22;;21888:113;;;:::o;22037:732::-;22156:3;22185:54;22233:5;22185:54;:::i;:::-;22255:86;22334:6;22329:3;22255:86;:::i;:::-;22248:93;;22365:56;22415:5;22365:56;:::i;:::-;22444:7;22475:1;22460:284;22485:6;22482:1;22479:13;22460:284;;;22561:6;22555:13;22588:63;22647:3;22632:13;22588:63;:::i;:::-;22581:70;;22674:60;22727:6;22674:60;:::i;:::-;22664:70;;22520:224;22507:1;22504;22500:9;22495:14;;22460:284;;;22464:14;22760:3;22753:10;;22161:608;;;22037:732;;;;:::o;22775:831::-;23038:4;23076:3;23065:9;23061:19;23053:27;;23090:71;23158:1;23147:9;23143:17;23134:6;23090:71;:::i;:::-;23171:80;23247:2;23236:9;23232:18;23223:6;23171:80;:::i;:::-;23298:9;23292:4;23288:20;23283:2;23272:9;23268:18;23261:48;23326:108;23429:4;23420:6;23326:108;:::i;:::-;23318:116;;23444:72;23512:2;23501:9;23497:18;23488:6;23444:72;:::i;:::-;23526:73;23594:3;23583:9;23579:19;23570:6;23526:73;:::i;:::-;22775:831;;;;;;;;:::o;23612:147::-;23713:11;23750:3;23735:18;;23612:147;;;;:::o;23765:114::-;;:::o;23885:398::-;24044:3;24065:83;24146:1;24141:3;24065:83;:::i;:::-;24058:90;;24157:93;24246:3;24157:93;:::i;:::-;24275:1;24270:3;24266:11;24259:18;;23885:398;;;:::o;24289:379::-;24473:3;24495:147;24638:3;24495:147;:::i;:::-;24488:154;;24659:3;24652:10;;24289:379;;;:::o;24674:807::-;24923:4;24961:3;24950:9;24946:19;24938:27;;24975:71;25043:1;25032:9;25028:17;25019:6;24975:71;:::i;:::-;25056:72;25124:2;25113:9;25109:18;25100:6;25056:72;:::i;:::-;25138:80;25214:2;25203:9;25199:18;25190:6;25138:80;:::i;:::-;25228;25304:2;25293:9;25289:18;25280:6;25228:80;:::i;:::-;25318:73;25386:3;25375:9;25371:19;25362:6;25318:73;:::i;:::-;25401;25469:3;25458:9;25454:19;25445:6;25401:73;:::i;:::-;24674:807;;;;;;;;;:::o;25487:143::-;25544:5;25575:6;25569:13;25560:22;;25591:33;25618:5;25591:33;:::i;:::-;25487:143;;;;:::o;25636:663::-;25724:6;25732;25740;25789:2;25777:9;25768:7;25764:23;25760:32;25757:119;;;25795:79;;:::i;:::-;25757:119;25915:1;25940:64;25996:7;25987:6;25976:9;25972:22;25940:64;:::i;:::-;25930:74;;25886:128;26053:2;26079:64;26135:7;26126:6;26115:9;26111:22;26079:64;:::i;:::-;26069:74;;26024:129;26192:2;26218:64;26274:7;26265:6;26254:9;26250:22;26218:64;:::i;:::-;26208:74;;26163:129;25636:663;;;;;:::o;26305:332::-;26426:4;26464:2;26453:9;26449:18;26441:26;;26477:71;26545:1;26534:9;26530:17;26521:6;26477:71;:::i;:::-;26558:72;26626:2;26615:9;26611:18;26602:6;26558:72;:::i;:::-;26305:332;;;;;:::o;26643:191::-;26683:3;26702:20;26720:1;26702:20;:::i;:::-;26697:25;;26736:20;26754:1;26736:20;:::i;:::-;26731:25;;26779:1;26776;26772:9;26765:16;;26800:3;26797:1;26794:10;26791:36;;;26807:18;;:::i;:::-;26791:36;26643:191;;;;:::o;26840:177::-;26980:29;26976:1;26968:6;26964:14;26957:53;26840:177;:::o;27023:366::-;27165:3;27186:67;27250:2;27245:3;27186:67;:::i;:::-;27179:74;;27262:93;27351:3;27262:93;:::i;:::-;27380:2;27375:3;27371:12;27364:19;;27023:366;;;:::o;27395:419::-;27561:4;27599:2;27588:9;27584:18;27576:26;;27648:9;27642:4;27638:20;27634:1;27623:9;27619:17;27612:47;27676:131;27802:4;27676:131;:::i;:::-;27668:139;;27395:419;;;:::o

Swarm Source

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