ETH Price: $3,110.84 (+0.12%)

Token

PeaceMan (PEPE)
 

Overview

Max Total Supply

420,690,000,000 PEPE

Holders

26

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
7,151,730,000 PEPE

Value
$0.00
0x3c16b3Fa0aBcaBb72f85800BF1684A00bd2fb93b
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:
PeaceMan

Compiler Version
v0.8.25+commit.b61c2a91

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-07-13
*/

/**

https://peace-man.art
https://x.com/FuriePeaceMan
https://t.me/FuriePeaceMan

*/
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.8.25;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract PeaceMan is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = unicode"PeaceMan";
    string private constant _symbol = unicode"PEPE";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal =  420690000000 * 10**9; 
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 15;
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 25;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots; mapping (address => uint256) public _buyMap;
    address payable private _developmentAddress = payable(0x430Aaf05E9acabB7940503eb72168508c329f097);
    address payable private _marketingAddress = payable(0x430Aaf05E9acabB7940503eb72168508c329f097);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen = false;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 8413800000 * 10**9;
    uint256 public _maxWalletSize = 8413800000 * 10**9;
    uint256 public _swapTokensAtAmount = 8413800000 * 10**9;

    event MaxTxAmountUpdate(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);//
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public pure returns (string memory) {
        return _name;
    }

    function symbol() public pure returns (string memory) {
        return _symbol;
    }

    function decimals() public pure returns (uint8) {
        return _decimals;
    }

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        returns (bool)
    {
        _transfer(_msgSender(), 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(_msgSender(), spender, amount);
        return true;
    }

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

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removetaxes() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function sendETHToFee(uint256 amount) private {
        _marketingAddress.transfer(amount);
    }

    function TradingOpen(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualunclogg() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function PeaceManbot(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unlock(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removetaxes();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) removetaxes();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);
        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);
        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function setTax(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;
        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function MinSwapTokenThresh(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set maximum transaction
    function MaxTxnAmmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function MaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

    function excludeAccountFromFee(address[] calldata accounts, bool excluded) public onlyOwner {
        for(uint256 i = 0; i < accounts.length; i++) {
            _isExcludedFromFee[accounts[i]] = excluded;
        }
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdate","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":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"MaxTxnAmmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"MaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"MinSwapTokenThresh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"PeaceManbot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"TradingOpen","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeAccountFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualunclogg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","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","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526816ce3f1e16bf1500005f1961001a91906106e7565b5f196100269190610744565b6006555f600855600f6009555f600a556019600b55600a54600c55600b54600d55600c54600e55600d54600f5573430aaf05e9acabb7940503eb72168508c329f09760125f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073430aaf05e9acabb7940503eb72168508c329f09760135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f601560146101000a81548160ff0219169083151502179055505f6015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506774c3d285932e80006016556774c3d285932e80006017556774c3d285932e8000601855348015610178575f80fd5b505f61018861068360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35060065460025f61023861068360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508060145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610316573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061033a91906107d5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561039f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c391906107d5565b6040518363ffffffff1660e01b81526004016103e092919061080f565b6020604051808303815f875af11580156103fc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061042091906107d5565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f61047261068a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160055f60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555061061061068360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6816ce3f1e16bf1500006040516106759190610845565b60405180910390a35061085e565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6106f1826106b1565b91506106fc836106b1565b92508261070c5761070b6106ba565b5b828206905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61074e826106b1565b9150610759836106b1565b925082820390508181111561077157610770610717565b5b92915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107a48261077b565b9050919050565b6107b48161079a565b81146107be575f80fd5b50565b5f815190506107cf816107ab565b92915050565b5f602082840312156107ea576107e9610777565b5b5f6107f7848285016107c1565b91505092915050565b6108098161079a565b82525050565b5f6040820190506108225f830185610800565b61082f6020830184610800565b9392505050565b61083f816106b1565b82525050565b5f6020820190506108585f830184610836565b92915050565b613b9d8061086b5f395ff3fe6080604052600436106101d0575f3560e01c806370a08231116100f657806395d89b4111610094578063c3c8cd8011610063578063c3c8cd8014610653578063dd62ed3e14610669578063e2ee677d146106a5578063f2fde38b146106cd576101d7565b806395d89b4114610589578063a9059cbb146105b3578063ad69489e146105ef578063bfd7928414610617576101d7565b80637f2feddc116100d05780637f2feddc146104d15780638da5cb5b1461050d5780638ebc7ec6146105375780638f9a55c01461055f576101d7565b806370a0823114610455578063715018a6146104915780637d1db4a5146104a7576101d7565b80632ece88fb1161016e578063349a39531161013d578063349a3953146103b357806349bd5a5e146103db5780634f7acb62146104055780636d8aa8f81461042d576101d7565b80632ece88fb146103215780632f6c493c146103375780632fd689e31461035f578063313ce56714610389576101d7565b806318160ddd116101aa57806318160ddd1461026b57806320c09a491461029557806323b872dd146102bd57806329669674146102f9576101d7565b806306fdde03146101db578063095ea7b3146102055780631694505e14610241576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106f5565b6040516101fc9190612b07565b60405180910390f35b348015610210575f80fd5b5061022b60048036038101906102269190612bc5565b610732565b6040516102389190612c1d565b60405180910390f35b34801561024c575f80fd5b5061025561074f565b6040516102629190612c91565b60405180910390f35b348015610276575f80fd5b5061027f610774565b60405161028c9190612cb9565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612cd2565b610784565b005b3480156102c8575f80fd5b506102e360048036038101906102de9190612d36565b61083a565b6040516102f09190612c1d565b60405180910390f35b348015610304575f80fd5b5061031f600480360381019061031a9190612db0565b61090e565b005b34801561032c575f80fd5b506103356109bf565b005b348015610342575f80fd5b5061035d60048036038101906103589190612ddb565b610a8c565b005b34801561036a575f80fd5b50610373610b77565b6040516103809190612cb9565b60405180910390f35b348015610394575f80fd5b5061039d610b7d565b6040516103aa9190612e21565b60405180910390f35b3480156103be575f80fd5b506103d960048036038101906103d49190612e3a565b610b85565b005b3480156103e6575f80fd5b506103ef610c23565b6040516103fc9190612e74565b60405180910390f35b348015610410575f80fd5b5061042b60048036038101906104269190612fcd565b610c48565b005b348015610438575f80fd5b50610453600480360381019061044e9190612db0565b610d67565b005b348015610460575f80fd5b5061047b60048036038101906104769190612ddb565b610e18565b6040516104889190612cb9565b60405180910390f35b34801561049c575f80fd5b506104a5610e66565b005b3480156104b2575f80fd5b506104bb610fb4565b6040516104c89190612cb9565b60405180910390f35b3480156104dc575f80fd5b506104f760048036038101906104f29190612ddb565b610fba565b6040516105049190612cb9565b60405180910390f35b348015610518575f80fd5b50610521610fcf565b60405161052e9190612e74565b60405180910390f35b348015610542575f80fd5b5061055d6004803603810190610558919061306d565b610ff6565b005b34801561056a575f80fd5b50610573611125565b6040516105809190612cb9565b60405180910390f35b348015610594575f80fd5b5061059d61112b565b6040516105aa9190612b07565b60405180910390f35b3480156105be575f80fd5b506105d960048036038101906105d49190612bc5565b611168565b6040516105e69190612c1d565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190612e3a565b611185565b005b348015610622575f80fd5b5061063d60048036038101906106389190612ddb565b611223565b60405161064a9190612c1d565b60405180910390f35b34801561065e575f80fd5b50610667611240565b005b348015610674575f80fd5b5061068f600480360381019061068a91906130ca565b611315565b60405161069c9190612cb9565b60405180910390f35b3480156106b0575f80fd5b506106cb60048036038101906106c69190612e3a565b611397565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190612ddb565b611435565b005b60606040518060400160405280600881526020017f50656163654d616e000000000000000000000000000000000000000000000000815250905090565b5f61074561073e6115f2565b84846115f9565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6816ce3f1e16bf150000905090565b61078c6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080f90613152565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6108468484846117bc565b610903846108526115f2565b6108fe85604051806060016040528060288152602001613b406028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108b56115f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461201c9092919063ffffffff16565b6115f9565b600190509392505050565b6109166115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099990613152565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109ff6115f2565b73ffffffffffffffffffffffffffffffffffffffff161480610a74575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a5c6115f2565b73ffffffffffffffffffffffffffffffffffffffff16145b610a7c575f80fd5b5f479050610a898161207e565b50565b610a946115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790613152565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60185481565b5f6009905090565b610b8d6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090613152565b60405180910390fd5b8060168190555050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c506115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613152565b60405180910390fd5b5f5b8151811015610d6357600160105f848481518110610cff57610cfe613170565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610cde565b5050565b610d6f6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290613152565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f610e5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e6565b9050919050565b610e6e6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190613152565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ffe6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108190613152565b60405180910390fd5b5f5b8383905081101561111f578160055f8686858181106110ae576110ad613170565b5b90506020020160208101906110c39190612ddb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061108c565b50505050565b60175481565b60606040518060400160405280600481526020017f5045504500000000000000000000000000000000000000000000000000000000815250905090565b5f61117b6111746115f2565b84846117bc565b6001905092915050565b61118d6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090613152565b60405180910390fd5b8060178190555050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112806115f2565b73ffffffffffffffffffffffffffffffffffffffff1614806112f5575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112dd6115f2565b73ffffffffffffffffffffffffffffffffffffffff16145b6112fd575f80fd5b5f61130730610e18565b905061131281612152565b50565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61139f6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142290613152565b60405180910390fd5b8060188190555050565b61143d6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090613152565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e9061320d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e9061329b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90613329565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117af9190612cb9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361182a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611821906133b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f90613445565b60405180910390fd5b5f81116118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d1906134d3565b60405180910390fd5b6118e2610fcf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119505750611920610fcf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2957601560149054906101000a900460ff166119df57611971610fcf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590613561565b60405180910390fd5b5b601654811115611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b906135c9565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ac2575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af890613657565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bad5760175481611b6284610e18565b611b6c91906136a2565b10611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390613745565b60405180910390fd5b5b5f611bb730610e18565b90505f60185482101590506016548210611bd15760165491505b808015611be9575060158054906101000a900460ff16155b8015611c42575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5a5750601560169054906101000a900460ff165b8015611cad575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d00575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2657611d0e82612152565b5f4790505f811115611d2457611d234761207e565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dc9575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e7a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e79575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e87575f905061200a565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f30575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4857600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ff1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200957600a54600c81905550600b54600d819055505b5b612016848484846123bb565b50505050565b5f838311158290612063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205a9190612b07565b60405180910390fd5b505f83856120719190613763565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120e2573d5f803e3d5ffd5b5050565b5f60065482111561212c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212390613806565b60405180910390fd5b5f6121356123e8565b905061214a818461241190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218857612187612e91565b5b6040519080825280602002602001820160405280156121b65781602001602082028036833780820191505090505b50905030815f815181106121cd576121cc613170565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612271573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122959190613838565b816001815181106122a9576122a8613170565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230f3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115f9565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612371959493929190613953565b5f604051808303815f87803b158015612388575f80fd5b505af115801561239a573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806123c9576123c861245a565b5b6123d4848484612493565b806123e2576123e161245a565b5b50505050565b5f805f6123f3612653565b9150915061240a818361241190919063ffffffff16565b9250505090565b5f61245283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126b2565b905092915050565b5f600c5414801561246c57505f600d54145b61249157600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806124a287612713565b9550955095509550955095506124fe8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461277390919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061258f8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127bc90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125d981612819565b6125e384836128d0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126409190612cb9565b60405180910390a3505050505050505050565b5f805f60065490505f6816ce3f1e16bf15000090506126866816ce3f1e16bf15000060065461241190919063ffffffff16565b8210156126a5576006546816ce3f1e16bf1500009350935050506126ae565b81819350935050505b9091565b5f80831182906126f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ef9190612b07565b60405180910390fd5b505f838561270691906139d8565b9050809150509392505050565b5f805f805f805f805f61272b8a600c54600d5461290a565b9250925092505f61273a6123e8565b90505f805f61274b8e87878761299c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6127b483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061201c565b905092915050565b5f8082846127ca91906136a2565b90508381101561280f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280690613a52565b60405180910390fd5b8091505092915050565b5f6128226123e8565b90505f6128388284612a2090919063ffffffff16565b905061288a8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127bc90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128e58260065461277390919063ffffffff16565b600681905550612900816007546127bc90919063ffffffff16565b6007819055505050565b5f805f806129346064612926888a612a2090919063ffffffff16565b61241190919063ffffffff16565b90505f61295d606461294f888b612a2090919063ffffffff16565b61241190919063ffffffff16565b90505f61298582612977858c61277390919063ffffffff16565b61277390919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806129b38589612a2090919063ffffffff16565b90505f6129c98689612a2090919063ffffffff16565b90505f6129df8789612a2090919063ffffffff16565b90505f612a07826129f9858761277390919063ffffffff16565b61277390919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a30575f9050612a91565b5f8284612a3d9190613a70565b9050828482612a4c91906139d8565b14612a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8390613b21565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612ad982612a97565b612ae38185612aa1565b9350612af3818560208601612ab1565b612afc81612abf565b840191505092915050565b5f6020820190508181035f830152612b1f8184612acf565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b6182612b38565b9050919050565b612b7181612b57565b8114612b7b575f80fd5b50565b5f81359050612b8c81612b68565b92915050565b5f819050919050565b612ba481612b92565b8114612bae575f80fd5b50565b5f81359050612bbf81612b9b565b92915050565b5f8060408385031215612bdb57612bda612b30565b5b5f612be885828601612b7e565b9250506020612bf985828601612bb1565b9150509250929050565b5f8115159050919050565b612c1781612c03565b82525050565b5f602082019050612c305f830184612c0e565b92915050565b5f819050919050565b5f612c59612c54612c4f84612b38565b612c36565b612b38565b9050919050565b5f612c6a82612c3f565b9050919050565b5f612c7b82612c60565b9050919050565b612c8b81612c71565b82525050565b5f602082019050612ca45f830184612c82565b92915050565b612cb381612b92565b82525050565b5f602082019050612ccc5f830184612caa565b92915050565b5f805f8060808587031215612cea57612ce9612b30565b5b5f612cf787828801612bb1565b9450506020612d0887828801612bb1565b9350506040612d1987828801612bb1565b9250506060612d2a87828801612bb1565b91505092959194509250565b5f805f60608486031215612d4d57612d4c612b30565b5b5f612d5a86828701612b7e565b9350506020612d6b86828701612b7e565b9250506040612d7c86828701612bb1565b9150509250925092565b612d8f81612c03565b8114612d99575f80fd5b50565b5f81359050612daa81612d86565b92915050565b5f60208284031215612dc557612dc4612b30565b5b5f612dd284828501612d9c565b91505092915050565b5f60208284031215612df057612def612b30565b5b5f612dfd84828501612b7e565b91505092915050565b5f60ff82169050919050565b612e1b81612e06565b82525050565b5f602082019050612e345f830184612e12565b92915050565b5f60208284031215612e4f57612e4e612b30565b5b5f612e5c84828501612bb1565b91505092915050565b612e6e81612b57565b82525050565b5f602082019050612e875f830184612e65565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ec782612abf565b810181811067ffffffffffffffff82111715612ee657612ee5612e91565b5b80604052505050565b5f612ef8612b27565b9050612f048282612ebe565b919050565b5f67ffffffffffffffff821115612f2357612f22612e91565b5b602082029050602081019050919050565b5f80fd5b5f612f4a612f4584612f09565b612eef565b90508083825260208201905060208402830185811115612f6d57612f6c612f34565b5b835b81811015612f965780612f828882612b7e565b845260208401935050602081019050612f6f565b5050509392505050565b5f82601f830112612fb457612fb3612e8d565b5b8135612fc4848260208601612f38565b91505092915050565b5f60208284031215612fe257612fe1612b30565b5b5f82013567ffffffffffffffff811115612fff57612ffe612b34565b5b61300b84828501612fa0565b91505092915050565b5f80fd5b5f8083601f84011261302d5761302c612e8d565b5b8235905067ffffffffffffffff81111561304a57613049613014565b5b60208301915083602082028301111561306657613065612f34565b5b9250929050565b5f805f6040848603121561308457613083612b30565b5b5f84013567ffffffffffffffff8111156130a1576130a0612b34565b5b6130ad86828701613018565b935093505060206130c086828701612d9c565b9150509250925092565b5f80604083850312156130e0576130df612b30565b5b5f6130ed85828601612b7e565b92505060206130fe85828601612b7e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61313c602083612aa1565b915061314782613108565b602082019050919050565b5f6020820190508181035f83015261316981613130565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131f7602683612aa1565b91506132028261319d565b604082019050919050565b5f6020820190508181035f830152613224816131eb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613285602483612aa1565b91506132908261322b565b604082019050919050565b5f6020820190508181035f8301526132b281613279565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613313602283612aa1565b915061331e826132b9565b604082019050919050565b5f6020820190508181035f83015261334081613307565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133a1602583612aa1565b91506133ac82613347565b604082019050919050565b5f6020820190508181035f8301526133ce81613395565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61342f602383612aa1565b915061343a826133d5565b604082019050919050565b5f6020820190508181035f83015261345c81613423565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134bd602983612aa1565b91506134c882613463565b604082019050919050565b5f6020820190508181035f8301526134ea816134b1565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61354b603f83612aa1565b9150613556826134f1565b604082019050919050565b5f6020820190508181035f8301526135788161353f565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6135b3601c83612aa1565b91506135be8261357f565b602082019050919050565b5f6020820190508181035f8301526135e0816135a7565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613641602383612aa1565b915061364c826135e7565b604082019050919050565b5f6020820190508181035f83015261366e81613635565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136ac82612b92565b91506136b783612b92565b92508282019050808211156136cf576136ce613675565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61372f602383612aa1565b915061373a826136d5565b604082019050919050565b5f6020820190508181035f83015261375c81613723565b9050919050565b5f61376d82612b92565b915061377883612b92565b92508282039050818111156137905761378f613675565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6137f0602a83612aa1565b91506137fb82613796565b604082019050919050565b5f6020820190508181035f83015261381d816137e4565b9050919050565b5f8151905061383281612b68565b92915050565b5f6020828403121561384d5761384c612b30565b5b5f61385a84828501613824565b91505092915050565b5f819050919050565b5f61388661388161387c84613863565b612c36565b612b92565b9050919050565b6138968161386c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138ce81612b57565b82525050565b5f6138df83836138c5565b60208301905092915050565b5f602082019050919050565b5f6139018261389c565b61390b81856138a6565b9350613916836138b6565b805f5b8381101561394657815161392d88826138d4565b9750613938836138eb565b925050600181019050613919565b5085935050505092915050565b5f60a0820190506139665f830188612caa565b613973602083018761388d565b818103604083015261398581866138f7565b90506139946060830185612e65565b6139a16080830184612caa565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139e282612b92565b91506139ed83612b92565b9250826139fd576139fc6139ab565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a3c601b83612aa1565b9150613a4782613a08565b602082019050919050565b5f6020820190508181035f830152613a6981613a30565b9050919050565b5f613a7a82612b92565b9150613a8583612b92565b9250828202613a9381612b92565b91508282048414831517613aaa57613aa9613675565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b0b602183612aa1565b9150613b1682613ab1565b604082019050919050565b5f6020820190508181035f830152613b3881613aff565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a374d4c6d5d1e42e594526f268432f7ba7c22a83f2e574891abfbec9f9ea6f5164736f6c63430008190033

Deployed Bytecode

0x6080604052600436106101d0575f3560e01c806370a08231116100f657806395d89b4111610094578063c3c8cd8011610063578063c3c8cd8014610653578063dd62ed3e14610669578063e2ee677d146106a5578063f2fde38b146106cd576101d7565b806395d89b4114610589578063a9059cbb146105b3578063ad69489e146105ef578063bfd7928414610617576101d7565b80637f2feddc116100d05780637f2feddc146104d15780638da5cb5b1461050d5780638ebc7ec6146105375780638f9a55c01461055f576101d7565b806370a0823114610455578063715018a6146104915780637d1db4a5146104a7576101d7565b80632ece88fb1161016e578063349a39531161013d578063349a3953146103b357806349bd5a5e146103db5780634f7acb62146104055780636d8aa8f81461042d576101d7565b80632ece88fb146103215780632f6c493c146103375780632fd689e31461035f578063313ce56714610389576101d7565b806318160ddd116101aa57806318160ddd1461026b57806320c09a491461029557806323b872dd146102bd57806329669674146102f9576101d7565b806306fdde03146101db578063095ea7b3146102055780631694505e14610241576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b506101ef6106f5565b6040516101fc9190612b07565b60405180910390f35b348015610210575f80fd5b5061022b60048036038101906102269190612bc5565b610732565b6040516102389190612c1d565b60405180910390f35b34801561024c575f80fd5b5061025561074f565b6040516102629190612c91565b60405180910390f35b348015610276575f80fd5b5061027f610774565b60405161028c9190612cb9565b60405180910390f35b3480156102a0575f80fd5b506102bb60048036038101906102b69190612cd2565b610784565b005b3480156102c8575f80fd5b506102e360048036038101906102de9190612d36565b61083a565b6040516102f09190612c1d565b60405180910390f35b348015610304575f80fd5b5061031f600480360381019061031a9190612db0565b61090e565b005b34801561032c575f80fd5b506103356109bf565b005b348015610342575f80fd5b5061035d60048036038101906103589190612ddb565b610a8c565b005b34801561036a575f80fd5b50610373610b77565b6040516103809190612cb9565b60405180910390f35b348015610394575f80fd5b5061039d610b7d565b6040516103aa9190612e21565b60405180910390f35b3480156103be575f80fd5b506103d960048036038101906103d49190612e3a565b610b85565b005b3480156103e6575f80fd5b506103ef610c23565b6040516103fc9190612e74565b60405180910390f35b348015610410575f80fd5b5061042b60048036038101906104269190612fcd565b610c48565b005b348015610438575f80fd5b50610453600480360381019061044e9190612db0565b610d67565b005b348015610460575f80fd5b5061047b60048036038101906104769190612ddb565b610e18565b6040516104889190612cb9565b60405180910390f35b34801561049c575f80fd5b506104a5610e66565b005b3480156104b2575f80fd5b506104bb610fb4565b6040516104c89190612cb9565b60405180910390f35b3480156104dc575f80fd5b506104f760048036038101906104f29190612ddb565b610fba565b6040516105049190612cb9565b60405180910390f35b348015610518575f80fd5b50610521610fcf565b60405161052e9190612e74565b60405180910390f35b348015610542575f80fd5b5061055d6004803603810190610558919061306d565b610ff6565b005b34801561056a575f80fd5b50610573611125565b6040516105809190612cb9565b60405180910390f35b348015610594575f80fd5b5061059d61112b565b6040516105aa9190612b07565b60405180910390f35b3480156105be575f80fd5b506105d960048036038101906105d49190612bc5565b611168565b6040516105e69190612c1d565b60405180910390f35b3480156105fa575f80fd5b5061061560048036038101906106109190612e3a565b611185565b005b348015610622575f80fd5b5061063d60048036038101906106389190612ddb565b611223565b60405161064a9190612c1d565b60405180910390f35b34801561065e575f80fd5b50610667611240565b005b348015610674575f80fd5b5061068f600480360381019061068a91906130ca565b611315565b60405161069c9190612cb9565b60405180910390f35b3480156106b0575f80fd5b506106cb60048036038101906106c69190612e3a565b611397565b005b3480156106d8575f80fd5b506106f360048036038101906106ee9190612ddb565b611435565b005b60606040518060400160405280600881526020017f50656163654d616e000000000000000000000000000000000000000000000000815250905090565b5f61074561073e6115f2565b84846115f9565b6001905092915050565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6816ce3f1e16bf150000905090565b61078c6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610818576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161080f90613152565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b5f6108468484846117bc565b610903846108526115f2565b6108fe85604051806060016040528060288152602001613b406028913960045f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108b56115f2565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461201c9092919063ffffffff16565b6115f9565b600190509392505050565b6109166115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161099990613152565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109ff6115f2565b73ffffffffffffffffffffffffffffffffffffffff161480610a74575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a5c6115f2565b73ffffffffffffffffffffffffffffffffffffffff16145b610a7c575f80fd5b5f479050610a898161207e565b50565b610a946115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b20576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b1790613152565b60405180910390fd5b5f60105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60185481565b5f6009905090565b610b8d6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1090613152565b60405180910390fd5b8060168190555050565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610c506115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613152565b60405180910390fd5b5f5b8151811015610d6357600160105f848481518110610cff57610cfe613170565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610cde565b5050565b610d6f6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610df290613152565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b5f610e5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546120e6565b9050919050565b610e6e6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef190613152565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60165481565b6011602052805f5260405f205f915090505481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ffe6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461108a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108190613152565b60405180910390fd5b5f5b8383905081101561111f578160055f8686858181106110ae576110ad613170565b5b90506020020160208101906110c39190612ddb565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808060010191505061108c565b50505050565b60175481565b60606040518060400160405280600481526020017f5045504500000000000000000000000000000000000000000000000000000000815250905090565b5f61117b6111746115f2565b84846117bc565b6001905092915050565b61118d6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611219576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121090613152565b60405180910390fd5b8060178190555050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60125f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112806115f2565b73ffffffffffffffffffffffffffffffffffffffff1614806112f5575060135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112dd6115f2565b73ffffffffffffffffffffffffffffffffffffffff16145b6112fd575f80fd5b5f61130730610e18565b905061131281612152565b50565b5f60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b61139f6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461142b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161142290613152565b60405180910390fd5b8060188190555050565b61143d6115f2565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c090613152565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611537576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152e9061320d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e9061329b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90613329565b60405180910390fd5b8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117af9190612cb9565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361182a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611821906133b7565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611898576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188f90613445565b60405180910390fd5b5f81116118da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118d1906134d3565b60405180910390fd5b6118e2610fcf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156119505750611920610fcf565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611d2957601560149054906101000a900460ff166119df57611971610fcf565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146119de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d590613561565b60405180910390fd5b5b601654811115611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b906135c9565b60405180910390fd5b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ac2575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611b01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af890613657565b60405180910390fd5b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611bad5760175481611b6284610e18565b611b6c91906136a2565b10611bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ba390613745565b60405180910390fd5b5b5f611bb730610e18565b90505f60185482101590506016548210611bd15760165491505b808015611be9575060158054906101000a900460ff16155b8015611c42575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611c5a5750601560169054906101000a900460ff165b8015611cad575060055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d00575060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d2657611d0e82612152565b5f4790505f811115611d2457611d234761207e565b5b505b50505b5f6001905060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dc9575060055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80611e7a575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611e79575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611e87575f905061200a565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611f30575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611f4857600854600c81905550600954600d819055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ff1575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561200957600a54600c81905550600b54600d819055505b5b612016848484846123bb565b50505050565b5f838311158290612063576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205a9190612b07565b60405180910390fd5b505f83856120719190613763565b9050809150509392505050565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156120e2573d5f803e3d5ffd5b5050565b5f60065482111561212c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161212390613806565b60405180910390fd5b5f6121356123e8565b905061214a818461241190919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561218857612187612e91565b5b6040519080825280602002602001820160405280156121b65781602001602082028036833780820191505090505b50905030815f815181106121cd576121cc613170565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612271573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122959190613838565b816001815181106122a9576122a8613170565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061230f3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846115f9565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612371959493929190613953565b5f604051808303815f87803b158015612388575f80fd5b505af115801561239a573d5f803e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b806123c9576123c861245a565b5b6123d4848484612493565b806123e2576123e161245a565b5b50505050565b5f805f6123f3612653565b9150915061240a818361241190919063ffffffff16565b9250505090565b5f61245283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506126b2565b905092915050565b5f600c5414801561246c57505f600d54145b61249157600c54600e81905550600d54600f819055505f600c819055505f600d819055505b565b5f805f805f806124a287612713565b9550955095509550955095506124fe8660025f8c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461277390919063ffffffff16565b60025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061258f8560025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127bc90919063ffffffff16565b60025f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506125d981612819565b6125e384836128d0565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516126409190612cb9565b60405180910390a3505050505050505050565b5f805f60065490505f6816ce3f1e16bf15000090506126866816ce3f1e16bf15000060065461241190919063ffffffff16565b8210156126a5576006546816ce3f1e16bf1500009350935050506126ae565b81819350935050505b9091565b5f80831182906126f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126ef9190612b07565b60405180910390fd5b505f838561270691906139d8565b9050809150509392505050565b5f805f805f805f805f61272b8a600c54600d5461290a565b9250925092505f61273a6123e8565b90505f805f61274b8e87878761299c565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b5f6127b483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061201c565b905092915050565b5f8082846127ca91906136a2565b90508381101561280f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280690613a52565b60405180910390fd5b8091505092915050565b5f6128226123e8565b90505f6128388284612a2090919063ffffffff16565b905061288a8160025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546127bc90919063ffffffff16565b60025f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505050565b6128e58260065461277390919063ffffffff16565b600681905550612900816007546127bc90919063ffffffff16565b6007819055505050565b5f805f806129346064612926888a612a2090919063ffffffff16565b61241190919063ffffffff16565b90505f61295d606461294f888b612a2090919063ffffffff16565b61241190919063ffffffff16565b90505f61298582612977858c61277390919063ffffffff16565b61277390919063ffffffff16565b905080838395509550955050505093509350939050565b5f805f806129b38589612a2090919063ffffffff16565b90505f6129c98689612a2090919063ffffffff16565b90505f6129df8789612a2090919063ffffffff16565b90505f612a07826129f9858761277390919063ffffffff16565b61277390919063ffffffff16565b9050838184965096509650505050509450945094915050565b5f808303612a30575f9050612a91565b5f8284612a3d9190613a70565b9050828482612a4c91906139d8565b14612a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a8390613b21565b60405180910390fd5b809150505b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612ad982612a97565b612ae38185612aa1565b9350612af3818560208601612ab1565b612afc81612abf565b840191505092915050565b5f6020820190508181035f830152612b1f8184612acf565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612b6182612b38565b9050919050565b612b7181612b57565b8114612b7b575f80fd5b50565b5f81359050612b8c81612b68565b92915050565b5f819050919050565b612ba481612b92565b8114612bae575f80fd5b50565b5f81359050612bbf81612b9b565b92915050565b5f8060408385031215612bdb57612bda612b30565b5b5f612be885828601612b7e565b9250506020612bf985828601612bb1565b9150509250929050565b5f8115159050919050565b612c1781612c03565b82525050565b5f602082019050612c305f830184612c0e565b92915050565b5f819050919050565b5f612c59612c54612c4f84612b38565b612c36565b612b38565b9050919050565b5f612c6a82612c3f565b9050919050565b5f612c7b82612c60565b9050919050565b612c8b81612c71565b82525050565b5f602082019050612ca45f830184612c82565b92915050565b612cb381612b92565b82525050565b5f602082019050612ccc5f830184612caa565b92915050565b5f805f8060808587031215612cea57612ce9612b30565b5b5f612cf787828801612bb1565b9450506020612d0887828801612bb1565b9350506040612d1987828801612bb1565b9250506060612d2a87828801612bb1565b91505092959194509250565b5f805f60608486031215612d4d57612d4c612b30565b5b5f612d5a86828701612b7e565b9350506020612d6b86828701612b7e565b9250506040612d7c86828701612bb1565b9150509250925092565b612d8f81612c03565b8114612d99575f80fd5b50565b5f81359050612daa81612d86565b92915050565b5f60208284031215612dc557612dc4612b30565b5b5f612dd284828501612d9c565b91505092915050565b5f60208284031215612df057612def612b30565b5b5f612dfd84828501612b7e565b91505092915050565b5f60ff82169050919050565b612e1b81612e06565b82525050565b5f602082019050612e345f830184612e12565b92915050565b5f60208284031215612e4f57612e4e612b30565b5b5f612e5c84828501612bb1565b91505092915050565b612e6e81612b57565b82525050565b5f602082019050612e875f830184612e65565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612ec782612abf565b810181811067ffffffffffffffff82111715612ee657612ee5612e91565b5b80604052505050565b5f612ef8612b27565b9050612f048282612ebe565b919050565b5f67ffffffffffffffff821115612f2357612f22612e91565b5b602082029050602081019050919050565b5f80fd5b5f612f4a612f4584612f09565b612eef565b90508083825260208201905060208402830185811115612f6d57612f6c612f34565b5b835b81811015612f965780612f828882612b7e565b845260208401935050602081019050612f6f565b5050509392505050565b5f82601f830112612fb457612fb3612e8d565b5b8135612fc4848260208601612f38565b91505092915050565b5f60208284031215612fe257612fe1612b30565b5b5f82013567ffffffffffffffff811115612fff57612ffe612b34565b5b61300b84828501612fa0565b91505092915050565b5f80fd5b5f8083601f84011261302d5761302c612e8d565b5b8235905067ffffffffffffffff81111561304a57613049613014565b5b60208301915083602082028301111561306657613065612f34565b5b9250929050565b5f805f6040848603121561308457613083612b30565b5b5f84013567ffffffffffffffff8111156130a1576130a0612b34565b5b6130ad86828701613018565b935093505060206130c086828701612d9c565b9150509250925092565b5f80604083850312156130e0576130df612b30565b5b5f6130ed85828601612b7e565b92505060206130fe85828601612b7e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61313c602083612aa1565b915061314782613108565b602082019050919050565b5f6020820190508181035f83015261316981613130565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6131f7602683612aa1565b91506132028261319d565b604082019050919050565b5f6020820190508181035f830152613224816131eb565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613285602483612aa1565b91506132908261322b565b604082019050919050565b5f6020820190508181035f8301526132b281613279565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613313602283612aa1565b915061331e826132b9565b604082019050919050565b5f6020820190508181035f83015261334081613307565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133a1602583612aa1565b91506133ac82613347565b604082019050919050565b5f6020820190508181035f8301526133ce81613395565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61342f602383612aa1565b915061343a826133d5565b604082019050919050565b5f6020820190508181035f83015261345c81613423565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134bd602983612aa1565b91506134c882613463565b604082019050919050565b5f6020820190508181035f8301526134ea816134b1565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e64205f8201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b5f61354b603f83612aa1565b9150613556826134f1565b604082019050919050565b5f6020820190508181035f8301526135788161353f565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d6974000000005f82015250565b5f6135b3601c83612aa1565b91506135be8261357f565b602082019050919050565b5f6020820190508181035f8301526135e0816135a7565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c6973745f8201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b5f613641602383612aa1565b915061364c826135e7565b604082019050919050565b5f6020820190508181035f83015261366e81613635565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6136ac82612b92565b91506136b783612b92565b92508282019050808211156136cf576136ce613675565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c65742073695f8201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b5f61372f602383612aa1565b915061373a826136d5565b604082019050919050565b5f6020820190508181035f83015261375c81613723565b9050919050565b5f61376d82612b92565b915061377883612b92565b92508282039050818111156137905761378f613675565b5b92915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c20725f8201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b5f6137f0602a83612aa1565b91506137fb82613796565b604082019050919050565b5f6020820190508181035f83015261381d816137e4565b9050919050565b5f8151905061383281612b68565b92915050565b5f6020828403121561384d5761384c612b30565b5b5f61385a84828501613824565b91505092915050565b5f819050919050565b5f61388661388161387c84613863565b612c36565b612b92565b9050919050565b6138968161386c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6138ce81612b57565b82525050565b5f6138df83836138c5565b60208301905092915050565b5f602082019050919050565b5f6139018261389c565b61390b81856138a6565b9350613916836138b6565b805f5b8381101561394657815161392d88826138d4565b9750613938836138eb565b925050600181019050613919565b5085935050505092915050565b5f60a0820190506139665f830188612caa565b613973602083018761388d565b818103604083015261398581866138f7565b90506139946060830185612e65565b6139a16080830184612caa565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6139e282612b92565b91506139ed83612b92565b9250826139fd576139fc6139ab565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613a3c601b83612aa1565b9150613a4782613a08565b602082019050919050565b5f6020820190508181035f830152613a6981613a30565b9050919050565b5f613a7a82612b92565b9150613a8583612b92565b9250828202613a9381612b92565b91508282048414831517613aaa57613aa9613675565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b0b602183612aa1565b9150613b1682613ab1565b604082019050919050565b5f6020820190508181035f830152613b3881613aff565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220a374d4c6d5d1e42e594526f268432f7ba7c22a83f2e574891abfbec9f9ea6f5164736f6c63430008190033

Deployed Bytecode Sourcemap

4162:13502:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6689:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7614:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5523:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6966:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16534:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7815:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12264:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12618:238;;;;;;;;;;;;;:::i;:::-;;13043:88;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5833:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6875:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17201:106;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5571:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12864:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17061:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7069:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1649:148;;;;;;;;;;;;;:::i;:::-;;5721:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5265:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1435:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17435:224;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5776:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6780:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7215:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17315:112;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5227:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12374:236;;;;;;;;;;;;;:::i;:::-;;7422:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16877:132;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1805:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6689:83;6726:13;6759:5;;;;;;;;;;;;;;;;;6752:12;;6689:83;:::o;7614:193::-;7716:4;7738:39;7747:12;:10;:12::i;:::-;7761:7;7770:6;7738:8;:39::i;:::-;7795:4;7788:11;;7614:193;;;;:::o;5523:41::-;;;;;;;;;;;;;:::o;6966:95::-;7019:7;4724:20;7039:14;;6966:95;:::o;16534:291::-;1572:12;:10;:12::i;:::-;1562:22;;:6;;;;;;;;;;:22;;;1554:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16685:13:::1;16668:14;:30;;;;16727:14;16709:15;:32;;;;16767:11;16752:12;:26;;;;16805:12;16789:13;:28;;;;16534:291:::0;;;;:::o;7815:446::-;7947:4;7964:36;7974:6;7982:9;7993:6;7964:9;:36::i;:::-;8011:220;8034:6;8055:12;:10;:12::i;:::-;8082:138;8138:6;8082:138;;;;;;;;;;;;;;;;;:11;:19;8094:6;8082:19;;;;;;;;;;;;;;;:33;8102:12;:10;:12::i;:::-;8082:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8011:8;:220::i;:::-;8249:4;8242:11;;7815:446;;;;;:::o;12264:102::-;1572:12;:10;:12::i;:::-;1562:22;;:6;;;;;;;;;;:22;;;1554:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12346:12:::1;12332:11;;:26;;;;;;;;;;;;;;;;;;12264:102:::0;:::o;12618:238::-;12687:19;;;;;;;;;;;12671:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12726:17;;;;;;;;;;;12710:33;;:12;:10;:12::i;:::-;:33;;;12671:72;12663:81;;;;;;12755:26;12784:21;12755:50;;12816:32;12829:18;12816:12;:32::i;:::-;12652:204;12618:238::o;13043:88::-;1572:12;:10;:12::i;:::-;1562:22;;:6;;;;;;;;;;:22;;;1554:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13118:5:::1;13103:4;:12;13108:6;13103:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13043:88:::0;:::o;5833:55::-;;;;:::o;6875:83::-;6916:5;4397:1;6934:16;;6875:83;:::o;17201:106::-;1572:12;:10;:12::i;:::-;1562:22;;:6;;;;;;;;;;:22;;;1554:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17288:11:::1;17273:12;:26;;;;17201:106:::0;:::o;5571:28::-;;;;;;;;;;;;;:::o;12864:171::-;1572:12;:10;:12::i;:::-;1562:22;;:6;;;;;;;;;;:22;;;1554:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12942:9:::1;12937:91;12961:5;:12;12957:1;:16;12937:91;;;13012:4;12995;:14;13000:5;13006:1;13000:8;;;;;;;;:::i;:::-;;;;;;;;12995:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;12975:3;;;;;;;12937:91;;;;12864:171:::0;:::o;17061:101::-;1572:12;:10;:12::i;:::-;1562:22;;:6;;;;;;;;;;:22;;;1554:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17142:12:::1;17128:11;;:26;;;;;;;;;;;;;;;;;;17061:101:::0;:::o;7069:138::-;7135:7;7162:37;7182:7;:16;7190:7;7182:16;;;;;;;;;;;;;;;;7162:19;:37::i;:::-;7155:44;;7069:138;;;:::o;1649:148::-;1572:12;:10;:12::i;:::-;1562:22;;:6;;;;;;;;;;:22;;;1554:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1756:1:::1;1719:40;;1740:6;::::0;::::1;;;;;;;;1719:40;;;;;;;;;;;;1787:1;1770:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1649:148::o:0;5721:48::-;;;;:::o;5265:43::-;;;;;;;;;;;;;;;;;:::o;1435:79::-;1473:7;1500:6;;;;;;;;;;;1493:13;;1435:79;:::o;17435:224::-;1572:12;:10;:12::i;:::-;1562:22;;:6;;;;;;;;;;:22;;;1554:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17542:9:::1;17538:114;17561:8;;:15;;17557:1;:19;17538:114;;;17632:8;17598:18;:31;17617:8;;17626:1;17617:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17598:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17578:3;;;;;;;17538:114;;;;17435:224:::0;;;:::o;5776:50::-;;;;:::o;6780:87::-;6819:13;6852:7;;;;;;;;;;;;;;;;;6845:14;;6780:87;:::o;7215:199::-;7320:4;7342:42;7352:12;:10;:12::i;:::-;7366:9;7377:6;7342:9;:42::i;:::-;7402:4;7395:11;;7215:199;;;;:::o;17315:112::-;1572:12;:10;:12::i;:::-;1562:22;;:6;;;;;;;;;;:22;;;1554:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17406:13:::1;17389:14;:30;;;;17315:112:::0;:::o;5227:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12374:236::-;12440:19;;;;;;;;;;;12424:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12479:17;;;;;;;;;;;12463:33;;:12;:10;:12::i;:::-;:33;;;12424:72;12416:81;;;;;;12508:23;12534:24;12552:4;12534:9;:24::i;:::-;12508:50;;12569:33;12586:15;12569:16;:33::i;:::-;12405:205;12374:236::o;7422:184::-;7539:7;7571:11;:18;7583:5;7571:18;;;;;;;;;;;;;;;:27;7590:7;7571:27;;;;;;;;;;;;;;;;7564:34;;7422:184;;;;:::o;16877:132::-;1572:12;:10;:12::i;:::-;1562:22;;:6;;;;;;;;;;:22;;;1554:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16983:18:::1;16961:19;:40;;;;16877:132:::0;:::o;1805:244::-;1572:12;:10;:12::i;:::-;1562:22;;:6;;;;;;;;;;:22;;;1554:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1914:1:::1;1894:22;;:8;:22;;::::0;1886:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2004:8;1975:38;;1996:6;::::0;::::1;;;;;;;;1975:38;;;;;;;;;;;;2033:8;2024:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1805:244:::0;:::o;194:98::-;247:7;274:10;267:17;;194:98;:::o;8951:369::-;9095:1;9078:19;;:5;:19;;;9070:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9176:1;9157:21;;:7;:21;;;9149:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9258:6;9228:11;:18;9240:5;9228:18;;;;;;;;;;;;;;;:27;9247:7;9228:27;;;;;;;;;;;;;;;:36;;;;9296:7;9280:32;;9289:5;9280:32;;;9305:6;9280:32;;;;;;:::i;:::-;;;;;;;;8951:369;;;:::o;9328:2330::-;9466:1;9450:18;;:4;:18;;;9442:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9543:1;9529:16;;:2;:16;;;9521:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9613:1;9604:6;:10;9596:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9685:7;:5;:7::i;:::-;9677:15;;:4;:15;;;;:32;;;;;9702:7;:5;:7::i;:::-;9696:13;;:2;:13;;;;9677:32;9673:1259;;;9766:11;;;;;;;;;;;9761:144;;9814:7;:5;:7::i;:::-;9806:15;;:4;:15;;;9798:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9761:144;9939:12;;9929:6;:22;;9921:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10008:4;:10;10013:4;10008:10;;;;;;;;;;;;;;;;;;;;;;;;;10007:11;:24;;;;;10023:4;:8;10028:2;10023:8;;;;;;;;;;;;;;;;;;;;;;;;;10022:9;10007:24;9999:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10097:13;;;;;;;;;;;10091:19;;:2;:19;;;10088:146;;10164:14;;10155:6;10139:13;10149:2;10139:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10131:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10088:146;10250:28;10281:24;10299:4;10281:9;:24::i;:::-;10250:55;;10320:12;10359:19;;10335:20;:43;;10320:58;;10422:12;;10398:20;:36;10395:124;;10491:12;;10468:35;;10395:124;10539:7;:18;;;;;10551:6;;;;;;;;;;10550:7;10539:18;:43;;;;;10569:13;;;;;;;;;;;10561:21;;:4;:21;;;;10539:43;:58;;;;;10586:11;;;;;;;;;;;10539:58;:87;;;;;10602:18;:24;10621:4;10602:24;;;;;;;;;;;;;;;;;;;;;;;;;10601:25;10539:87;:114;;;;;10631:18;:22;10650:2;10631:22;;;;;;;;;;;;;;;;;;;;;;;;;10630:23;10539:114;10535:386;;;10674:38;10691:20;10674:16;:38::i;:::-;10731:26;10760:21;10731:50;;10825:1;10804:18;:22;10800:106;;;10851:35;10864:21;10851:12;:35::i;:::-;10800:106;10655:266;10535:386;9711:1221;;9673:1259;10944:12;10959:4;10944:19;;11008:18;:24;11027:4;11008:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11036:18;:22;11055:2;11036:22;;;;;;;;;;;;;;;;;;;;;;;;;11008:50;11007:102;;;;11072:13;;;;;;;;;;;11064:21;;:4;:21;;;;:44;;;;;11095:13;;;;;;;;;;;11089:19;;:2;:19;;;;11064:44;11007:102;11003:594;;;11136:5;11126:15;;11003:594;;;11219:13;;;;;;;;;;;11211:21;;:4;:21;;;:55;;;;;11250:15;;;;;;;;;;;11236:30;;:2;:30;;;;11211:55;11208:162;;;11299:14;;11287:9;:26;;;;11342:12;;11332:7;:22;;;;11208:162;11429:13;;;;;;;;;;;11423:19;;:2;:19;;;:55;;;;;11462:15;;;;;;;;;;;11446:32;;:4;:32;;;;11423:55;11419:165;;;11511:15;;11499:9;:27;;;;11555:13;;11545:7;:23;;;;11419:165;11003:594;11609:41;11624:4;11630:2;11634:6;11642:7;11609:14;:41::i;:::-;9431:2227;9328:2330;;;:::o;2413:224::-;2533:7;2566:1;2561;:6;;2569:12;2553:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2593:9;2609:1;2605;:5;;;;:::i;:::-;2593:17;;2628:1;2621:8;;;2413:224;;;;;:::o;12157:99::-;12214:17;;;;;;;;;;;:26;;:34;12241:6;12214:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12157:99;:::o;8269:323::-;8364:7;8422;;8411;:18;;8389:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8510:19;8532:10;:8;:10::i;:::-;8510:32;;8560:24;8572:11;8560:7;:11;;:24;;;;:::i;:::-;8553:31;;;8269:323;;;:::o;11666:483::-;5990:4;5981:6;;:13;;;;;;;;;;;;;;;;;;11744:21:::1;11782:1;11768:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11744:40;;11813:4;11795;11800:1;11795:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11839:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11829:4;11834:1;11829:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11872:62;11889:4;11904:15;;;;;;;;;;;11922:11;11872:8;:62::i;:::-;11945:15;;;;;;;;;;;:66;;;12026:11;12052:1;12068:4;12095;12115:15;11945:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11733:416;6026:5:::0;6017:6;;:14;;;;;;;;;;;;;;;;;;11666:483;:::o;13139:279::-;13295:7;13290:27;;13304:13;:11;:13::i;:::-;13290:27;13328:44;13346:6;13354:9;13365:6;13328:17;:44::i;:::-;13388:7;13383:27;;13397:13;:11;:13::i;:::-;13383:27;13139:279;;;;:::o;16097:164::-;16139:7;16160:15;16177;16196:19;:17;:19::i;:::-;16159:56;;;;16233:20;16245:7;16233;:11;;:20;;;;:::i;:::-;16226:27;;;;16097:164;:::o;2899:132::-;2957:7;2984:39;2988:1;2991;2984:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2977:46;;2899:132;;;;:::o;8600:218::-;8659:1;8646:9;;:14;:30;;;;;8675:1;8664:7;;:12;8646:30;8678:7;8642:43;8717:9;;8697:17;:29;;;;8755:7;;8737:15;:25;;;;8787:1;8775:9;:13;;;;8809:1;8799:7;:11;;;;8600:218;:::o;13426:610::-;13573:15;13603:23;13641:12;13668:23;13706:12;13733:13;13760:19;13771:7;13760:10;:19::i;:::-;13558:221;;;;;;;;;;;;13808:28;13828:7;13808;:15;13816:6;13808:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13790:7;:15;13798:6;13790:15;;;;;;;;;;;;;;;:46;;;;13868:39;13891:15;13868:7;:18;13876:9;13868:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13847:7;:18;13855:9;13847:18;;;;;;;;;;;;;;;:60;;;;13918:16;13928:5;13918:9;:16::i;:::-;13945:23;13957:4;13963;13945:11;:23::i;:::-;14001:9;13984:44;;13993:6;13984:44;;;14012:15;13984:44;;;;;;:::i;:::-;;;;;;;;13547:489;;;;;;13426:610;;;:::o;16269:257::-;16320:7;16329;16349:15;16367:7;;16349:25;;16385:15;4724:20;16385:25;;16435:20;4724;16435:7;;:11;;:20;;;;:::i;:::-;16425:7;:30;16421:61;;;16465:7;;4724:20;16457:25;;;;;;;;16421:61;16501:7;16510;16493:25;;;;;;16269:257;;;:::o;3039:223::-;3159:7;3191:1;3187;:5;3194:12;3179:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3218:9;3234:1;3230;:5;;;;:::i;:::-;3218:17;;3253:1;3246:8;;;3039:223;;;;;:::o;14455:615::-;14555:7;14577;14599;14621;14643;14665;14701:23;14726:12;14740:13;14770:40;14782:7;14791:9;;14802:7;;14770:11;:40::i;:::-;14700:110;;;;;;14821:19;14843:10;:8;:10::i;:::-;14821:32;;14865:15;14882:23;14907:12;14936:46;14948:7;14957:4;14963:5;14970:11;14936;:46::i;:::-;14864:118;;;;;;15001:7;15010:15;15027:4;15033:15;15050:4;15056:5;14993:69;;;;;;;;;;;;;;;;;;;14455:615;;;;;;;:::o;2269:136::-;2327:7;2354:43;2358:1;2361;2354:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2347:50;;2269:136;;;;:::o;2082:179::-;2140:7;2160:9;2176:1;2172;:5;;;;:::i;:::-;2160:17;;2201:1;2196;:6;;2188:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2252:1;2245:8;;;2082:179;;;;:::o;14044:211::-;14097:19;14119:10;:8;:10::i;:::-;14097:32;;14140:13;14156:22;14166:11;14156:5;:9;;:22;;;;:::i;:::-;14140:38;;14214:33;14241:5;14214:7;:22;14230:4;14214:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14189:7;:22;14205:4;14189:22;;;;;;;;;;;;;;;:58;;;;14086:169;;14044:211;:::o;14263:147::-;14341:17;14353:4;14341:7;;:11;;:17;;;;:::i;:::-;14331:7;:27;;;;14382:20;14397:4;14382:10;;:14;;:20;;;;:::i;:::-;14369:10;:33;;;;14263:147;;:::o;15078:469::-;15247:7;15269;15291;15326:12;15341:30;15367:3;15341:21;15353:8;15341:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15326:45;;15382:13;15398:28;15422:3;15398:19;15410:6;15398:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15382:44;;15437:23;15463:28;15485:5;15463:17;15475:4;15463:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15437:54;;15510:15;15527:4;15533:5;15502:37;;;;;;;;;15078:469;;;;;;;:::o;15555:534::-;15749:7;15771;15793;15828:15;15846:24;15858:11;15846:7;:11;;:24;;;;:::i;:::-;15828:42;;15881:12;15896:21;15905:11;15896:4;:8;;:21;;;;:::i;:::-;15881:36;;15928:13;15944:22;15954:11;15944:5;:9;;:22;;;;:::i;:::-;15928:38;;15977:23;16003:28;16025:5;16003:17;16015:4;16003:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15977:54;;16050:7;16059:15;16076:4;16042:39;;;;;;;;;;15555:534;;;;;;;;:::o;2645:246::-;2703:7;2732:1;2727;:6;2723:47;;2757:1;2750:8;;;;2723:47;2780:9;2796:1;2792;:5;;;;:::i;:::-;2780:17;;2825:1;2820;2816;:5;;;;:::i;:::-;:10;2808:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2882:1;2875:8;;;2645:246;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1242:75::-;1275:6;1308:2;1302:9;1292:19;;1242:75;:::o;1323:117::-;1432:1;1429;1422:12;1446:117;1555:1;1552;1545:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:60::-;3367:3;3388:5;3381:12;;3339:60;;;:::o;3405:142::-;3455:9;3488:53;3506:34;3515:24;3533:5;3515:24;:::i;:::-;3506:34;:::i;:::-;3488:53;:::i;:::-;3475:66;;3405:142;;;:::o;3553:126::-;3603:9;3636:37;3667:5;3636:37;:::i;:::-;3623:50;;3553:126;;;:::o;3685:152::-;3761:9;3794:37;3825:5;3794:37;:::i;:::-;3781:50;;3685:152;;;:::o;3843:183::-;3956:63;4013:5;3956:63;:::i;:::-;3951:3;3944:76;3843:183;;:::o;4032:274::-;4151:4;4189:2;4178:9;4174:18;4166:26;;4202:97;4296:1;4285:9;4281:17;4272:6;4202:97;:::i;:::-;4032:274;;;;:::o;4312:118::-;4399:24;4417:5;4399:24;:::i;:::-;4394:3;4387:37;4312:118;;:::o;4436:222::-;4529:4;4567:2;4556:9;4552:18;4544:26;;4580:71;4648:1;4637:9;4633:17;4624:6;4580:71;:::i;:::-;4436:222;;;;:::o;4664:765::-;4750:6;4758;4766;4774;4823:3;4811:9;4802:7;4798:23;4794:33;4791:120;;;4830:79;;:::i;:::-;4791:120;4950:1;4975:53;5020:7;5011:6;5000:9;4996:22;4975:53;:::i;:::-;4965:63;;4921:117;5077:2;5103:53;5148:7;5139:6;5128:9;5124:22;5103:53;:::i;:::-;5093:63;;5048:118;5205:2;5231:53;5276:7;5267:6;5256:9;5252:22;5231:53;:::i;:::-;5221:63;;5176:118;5333:2;5359:53;5404:7;5395:6;5384:9;5380:22;5359:53;:::i;:::-;5349:63;;5304:118;4664:765;;;;;;;:::o;5435:619::-;5512:6;5520;5528;5577:2;5565:9;5556:7;5552:23;5548:32;5545:119;;;5583:79;;:::i;:::-;5545:119;5703:1;5728:53;5773:7;5764:6;5753:9;5749:22;5728:53;:::i;:::-;5718:63;;5674:117;5830:2;5856:53;5901:7;5892:6;5881:9;5877:22;5856:53;:::i;:::-;5846:63;;5801:118;5958:2;5984:53;6029:7;6020:6;6009:9;6005:22;5984:53;:::i;:::-;5974:63;;5929:118;5435:619;;;;;:::o;6060:116::-;6130:21;6145:5;6130:21;:::i;:::-;6123:5;6120:32;6110:60;;6166:1;6163;6156:12;6110:60;6060:116;:::o;6182:133::-;6225:5;6263:6;6250:20;6241:29;;6279:30;6303:5;6279:30;:::i;:::-;6182:133;;;;:::o;6321:323::-;6377:6;6426:2;6414:9;6405:7;6401:23;6397:32;6394:119;;;6432:79;;:::i;:::-;6394:119;6552:1;6577:50;6619:7;6610:6;6599:9;6595:22;6577:50;:::i;:::-;6567:60;;6523:114;6321:323;;;;:::o;6650:329::-;6709:6;6758:2;6746:9;6737:7;6733:23;6729:32;6726:119;;;6764:79;;:::i;:::-;6726:119;6884:1;6909:53;6954:7;6945:6;6934:9;6930:22;6909:53;:::i;:::-;6899:63;;6855:117;6650:329;;;;:::o;6985:86::-;7020:7;7060:4;7053:5;7049:16;7038:27;;6985:86;;;:::o;7077:112::-;7160:22;7176:5;7160:22;:::i;:::-;7155:3;7148:35;7077:112;;:::o;7195:214::-;7284:4;7322:2;7311:9;7307:18;7299:26;;7335:67;7399:1;7388:9;7384:17;7375:6;7335:67;:::i;:::-;7195:214;;;;:::o;7415:329::-;7474:6;7523:2;7511:9;7502:7;7498:23;7494:32;7491:119;;;7529:79;;:::i;:::-;7491:119;7649:1;7674:53;7719:7;7710:6;7699:9;7695:22;7674:53;:::i;:::-;7664:63;;7620:117;7415:329;;;;:::o;7750:118::-;7837:24;7855:5;7837:24;:::i;:::-;7832:3;7825:37;7750:118;;:::o;7874:222::-;7967:4;8005:2;7994:9;7990:18;7982:26;;8018:71;8086:1;8075:9;8071:17;8062:6;8018:71;:::i;:::-;7874:222;;;;:::o;8102:117::-;8211:1;8208;8201:12;8225:180;8273:77;8270:1;8263:88;8370:4;8367:1;8360:15;8394:4;8391:1;8384:15;8411:281;8494:27;8516:4;8494:27;:::i;:::-;8486:6;8482:40;8624:6;8612:10;8609:22;8588:18;8576:10;8573:34;8570:62;8567:88;;;8635:18;;:::i;:::-;8567:88;8675:10;8671:2;8664:22;8454:238;8411:281;;:::o;8698:129::-;8732:6;8759:20;;:::i;:::-;8749:30;;8788:33;8816:4;8808:6;8788:33;:::i;:::-;8698:129;;;:::o;8833:311::-;8910:4;9000:18;8992:6;8989:30;8986:56;;;9022:18;;:::i;:::-;8986:56;9072:4;9064:6;9060:17;9052:25;;9132:4;9126;9122:15;9114:23;;8833:311;;;:::o;9150:117::-;9259:1;9256;9249:12;9290:710;9386:5;9411:81;9427:64;9484:6;9427:64;:::i;:::-;9411:81;:::i;:::-;9402:90;;9512:5;9541:6;9534:5;9527:21;9575:4;9568:5;9564:16;9557:23;;9628:4;9620:6;9616:17;9608:6;9604:30;9657:3;9649:6;9646:15;9643:122;;;9676:79;;:::i;:::-;9643:122;9791:6;9774:220;9808:6;9803:3;9800:15;9774:220;;;9883:3;9912:37;9945:3;9933:10;9912:37;:::i;:::-;9907:3;9900:50;9979:4;9974:3;9970:14;9963:21;;9850:144;9834:4;9829:3;9825:14;9818:21;;9774:220;;;9778:21;9392:608;;9290:710;;;;;:::o;10023:370::-;10094:5;10143:3;10136:4;10128:6;10124:17;10120:27;10110:122;;10151:79;;:::i;:::-;10110:122;10268:6;10255:20;10293:94;10383:3;10375:6;10368:4;10360:6;10356:17;10293:94;:::i;:::-;10284:103;;10100:293;10023:370;;;;:::o;10399:539::-;10483:6;10532:2;10520:9;10511:7;10507:23;10503:32;10500:119;;;10538:79;;:::i;:::-;10500:119;10686:1;10675:9;10671:17;10658:31;10716:18;10708:6;10705:30;10702:117;;;10738:79;;:::i;:::-;10702:117;10843:78;10913:7;10904:6;10893:9;10889:22;10843:78;:::i;:::-;10833:88;;10629:302;10399:539;;;;:::o;10944:117::-;11053:1;11050;11043:12;11084:568;11157:8;11167:6;11217:3;11210:4;11202:6;11198:17;11194:27;11184:122;;11225:79;;:::i;:::-;11184:122;11338:6;11325:20;11315:30;;11368:18;11360:6;11357:30;11354:117;;;11390:79;;:::i;:::-;11354:117;11504:4;11496:6;11492:17;11480:29;;11558:3;11550:4;11542:6;11538:17;11528:8;11524:32;11521:41;11518:128;;;11565:79;;:::i;:::-;11518:128;11084:568;;;;;:::o;11658:698::-;11750:6;11758;11766;11815:2;11803:9;11794:7;11790:23;11786:32;11783:119;;;11821:79;;:::i;:::-;11783:119;11969:1;11958:9;11954:17;11941:31;11999:18;11991:6;11988:30;11985:117;;;12021:79;;:::i;:::-;11985:117;12134:80;12206:7;12197:6;12186:9;12182:22;12134:80;:::i;:::-;12116:98;;;;11912:312;12263:2;12289:50;12331:7;12322:6;12311:9;12307:22;12289:50;:::i;:::-;12279:60;;12234:115;11658:698;;;;;:::o;12362:474::-;12430:6;12438;12487:2;12475:9;12466:7;12462:23;12458:32;12455:119;;;12493:79;;:::i;:::-;12455:119;12613:1;12638:53;12683:7;12674:6;12663:9;12659:22;12638:53;:::i;:::-;12628:63;;12584:117;12740:2;12766:53;12811:7;12802:6;12791:9;12787:22;12766:53;:::i;:::-;12756:63;;12711:118;12362:474;;;;;:::o;12842:182::-;12982:34;12978:1;12970:6;12966:14;12959:58;12842:182;:::o;13030:366::-;13172:3;13193:67;13257:2;13252:3;13193:67;:::i;:::-;13186:74;;13269:93;13358:3;13269:93;:::i;:::-;13387:2;13382:3;13378:12;13371:19;;13030:366;;;:::o;13402:419::-;13568:4;13606:2;13595:9;13591:18;13583:26;;13655:9;13649:4;13645:20;13641:1;13630:9;13626:17;13619:47;13683:131;13809:4;13683:131;:::i;:::-;13675:139;;13402:419;;;:::o;13827:180::-;13875:77;13872:1;13865:88;13972:4;13969:1;13962:15;13996:4;13993:1;13986:15;14013:225;14153:34;14149:1;14141:6;14137:14;14130:58;14222:8;14217:2;14209:6;14205:15;14198:33;14013:225;:::o;14244:366::-;14386:3;14407:67;14471:2;14466:3;14407:67;:::i;:::-;14400:74;;14483:93;14572:3;14483:93;:::i;:::-;14601:2;14596:3;14592:12;14585:19;;14244:366;;;:::o;14616:419::-;14782:4;14820:2;14809:9;14805:18;14797:26;;14869:9;14863:4;14859:20;14855:1;14844:9;14840:17;14833:47;14897:131;15023:4;14897:131;:::i;:::-;14889:139;;14616:419;;;:::o;15041:223::-;15181:34;15177:1;15169:6;15165:14;15158:58;15250:6;15245:2;15237:6;15233:15;15226:31;15041:223;:::o;15270:366::-;15412:3;15433:67;15497:2;15492:3;15433:67;:::i;:::-;15426:74;;15509:93;15598:3;15509:93;:::i;:::-;15627:2;15622:3;15618:12;15611:19;;15270:366;;;:::o;15642:419::-;15808:4;15846:2;15835:9;15831:18;15823:26;;15895:9;15889:4;15885:20;15881:1;15870:9;15866:17;15859:47;15923:131;16049:4;15923:131;:::i;:::-;15915:139;;15642:419;;;:::o;16067:221::-;16207:34;16203:1;16195:6;16191:14;16184:58;16276:4;16271:2;16263:6;16259:15;16252:29;16067:221;:::o;16294:366::-;16436:3;16457:67;16521:2;16516:3;16457:67;:::i;:::-;16450:74;;16533:93;16622:3;16533:93;:::i;:::-;16651:2;16646:3;16642:12;16635:19;;16294:366;;;:::o;16666:419::-;16832:4;16870:2;16859:9;16855:18;16847:26;;16919:9;16913:4;16909:20;16905:1;16894:9;16890:17;16883:47;16947:131;17073:4;16947:131;:::i;:::-;16939:139;;16666:419;;;:::o;17091:224::-;17231:34;17227:1;17219:6;17215:14;17208:58;17300:7;17295:2;17287:6;17283:15;17276:32;17091:224;:::o;17321:366::-;17463:3;17484:67;17548:2;17543:3;17484:67;:::i;:::-;17477:74;;17560:93;17649:3;17560:93;:::i;:::-;17678:2;17673:3;17669:12;17662:19;;17321:366;;;:::o;17693:419::-;17859:4;17897:2;17886:9;17882:18;17874:26;;17946:9;17940:4;17936:20;17932:1;17921:9;17917:17;17910:47;17974:131;18100:4;17974:131;:::i;:::-;17966:139;;17693:419;;;:::o;18118:222::-;18258:34;18254:1;18246:6;18242:14;18235:58;18327:5;18322:2;18314:6;18310:15;18303:30;18118:222;:::o;18346:366::-;18488:3;18509:67;18573:2;18568:3;18509:67;:::i;:::-;18502:74;;18585:93;18674:3;18585:93;:::i;:::-;18703:2;18698:3;18694:12;18687:19;;18346:366;;;:::o;18718:419::-;18884:4;18922:2;18911:9;18907:18;18899:26;;18971:9;18965:4;18961:20;18957:1;18946:9;18942:17;18935:47;18999:131;19125:4;18999:131;:::i;:::-;18991:139;;18718:419;;;:::o;19143:228::-;19283:34;19279:1;19271:6;19267:14;19260:58;19352:11;19347:2;19339:6;19335:15;19328:36;19143:228;:::o;19377:366::-;19519:3;19540:67;19604:2;19599:3;19540:67;:::i;:::-;19533:74;;19616:93;19705:3;19616:93;:::i;:::-;19734:2;19729:3;19725:12;19718:19;;19377:366;;;:::o;19749:419::-;19915:4;19953:2;19942:9;19938:18;19930:26;;20002:9;19996:4;19992:20;19988:1;19977:9;19973:17;19966:47;20030:131;20156:4;20030:131;:::i;:::-;20022:139;;19749:419;;;:::o;20174:250::-;20314:34;20310:1;20302:6;20298:14;20291:58;20383:33;20378:2;20370:6;20366:15;20359:58;20174:250;:::o;20430:366::-;20572:3;20593:67;20657:2;20652:3;20593:67;:::i;:::-;20586:74;;20669:93;20758:3;20669:93;:::i;:::-;20787:2;20782:3;20778:12;20771:19;;20430:366;;;:::o;20802:419::-;20968:4;21006:2;20995:9;20991:18;20983:26;;21055:9;21049:4;21045:20;21041:1;21030:9;21026:17;21019:47;21083:131;21209:4;21083:131;:::i;:::-;21075:139;;20802:419;;;:::o;21227:178::-;21367:30;21363:1;21355:6;21351:14;21344:54;21227:178;:::o;21411:366::-;21553:3;21574:67;21638:2;21633:3;21574:67;:::i;:::-;21567:74;;21650:93;21739:3;21650:93;:::i;:::-;21768:2;21763:3;21759:12;21752:19;;21411:366;;;:::o;21783:419::-;21949:4;21987:2;21976:9;21972:18;21964:26;;22036:9;22030:4;22026:20;22022:1;22011:9;22007:17;22000:47;22064:131;22190:4;22064:131;:::i;:::-;22056:139;;21783:419;;;:::o;22208:222::-;22348:34;22344:1;22336:6;22332:14;22325:58;22417:5;22412:2;22404:6;22400:15;22393:30;22208:222;:::o;22436:366::-;22578:3;22599:67;22663:2;22658:3;22599:67;:::i;:::-;22592:74;;22675:93;22764:3;22675:93;:::i;:::-;22793:2;22788:3;22784:12;22777:19;;22436:366;;;:::o;22808:419::-;22974:4;23012:2;23001:9;22997:18;22989:26;;23061:9;23055:4;23051:20;23047:1;23036:9;23032:17;23025:47;23089:131;23215:4;23089:131;:::i;:::-;23081:139;;22808:419;;;:::o;23233:180::-;23281:77;23278:1;23271:88;23378:4;23375:1;23368:15;23402:4;23399:1;23392:15;23419:191;23459:3;23478:20;23496:1;23478:20;:::i;:::-;23473:25;;23512:20;23530:1;23512:20;:::i;:::-;23507:25;;23555:1;23552;23548:9;23541:16;;23576:3;23573:1;23570:10;23567:36;;;23583:18;;:::i;:::-;23567:36;23419:191;;;;:::o;23616:222::-;23756:34;23752:1;23744:6;23740:14;23733:58;23825:5;23820:2;23812:6;23808:15;23801:30;23616:222;:::o;23844:366::-;23986:3;24007:67;24071:2;24066:3;24007:67;:::i;:::-;24000:74;;24083:93;24172:3;24083:93;:::i;:::-;24201:2;24196:3;24192:12;24185:19;;23844:366;;;:::o;24216:419::-;24382:4;24420:2;24409:9;24405:18;24397:26;;24469:9;24463:4;24459:20;24455:1;24444:9;24440:17;24433:47;24497:131;24623:4;24497:131;:::i;:::-;24489:139;;24216:419;;;:::o;24641:194::-;24681:4;24701:20;24719:1;24701:20;:::i;:::-;24696:25;;24735:20;24753:1;24735:20;:::i;:::-;24730:25;;24779:1;24776;24772:9;24764:17;;24803:1;24797:4;24794:11;24791:37;;;24808:18;;:::i;:::-;24791:37;24641:194;;;;:::o;24841:229::-;24981:34;24977:1;24969:6;24965:14;24958:58;25050:12;25045:2;25037:6;25033:15;25026:37;24841:229;:::o;25076:366::-;25218:3;25239:67;25303:2;25298:3;25239:67;:::i;:::-;25232:74;;25315:93;25404:3;25315:93;:::i;:::-;25433:2;25428:3;25424:12;25417:19;;25076:366;;;:::o;25448:419::-;25614:4;25652:2;25641:9;25637:18;25629:26;;25701:9;25695:4;25691:20;25687:1;25676:9;25672:17;25665:47;25729:131;25855:4;25729:131;:::i;:::-;25721:139;;25448:419;;;:::o;25873:143::-;25930:5;25961:6;25955:13;25946:22;;25977:33;26004:5;25977:33;:::i;:::-;25873:143;;;;:::o;26022:351::-;26092:6;26141:2;26129:9;26120:7;26116:23;26112:32;26109:119;;;26147:79;;:::i;:::-;26109:119;26267:1;26292:64;26348:7;26339:6;26328:9;26324:22;26292:64;:::i;:::-;26282:74;;26238:128;26022:351;;;;:::o;26379:85::-;26424:7;26453:5;26442:16;;26379:85;;;:::o;26470:158::-;26528:9;26561:61;26579:42;26588:32;26614:5;26588:32;:::i;:::-;26579:42;:::i;:::-;26561:61;:::i;:::-;26548:74;;26470:158;;;:::o;26634:147::-;26729:45;26768:5;26729:45;:::i;:::-;26724:3;26717:58;26634:147;;:::o;26787:114::-;26854:6;26888:5;26882:12;26872:22;;26787:114;;;:::o;26907:184::-;27006:11;27040:6;27035:3;27028:19;27080:4;27075:3;27071:14;27056:29;;26907:184;;;;:::o;27097:132::-;27164:4;27187:3;27179:11;;27217:4;27212:3;27208:14;27200:22;;27097:132;;;:::o;27235:108::-;27312:24;27330:5;27312:24;:::i;:::-;27307:3;27300:37;27235:108;;:::o;27349:179::-;27418:10;27439:46;27481:3;27473:6;27439:46;:::i;:::-;27517:4;27512:3;27508:14;27494:28;;27349:179;;;;:::o;27534:113::-;27604:4;27636;27631:3;27627:14;27619:22;;27534:113;;;:::o;27683:732::-;27802:3;27831:54;27879:5;27831:54;:::i;:::-;27901:86;27980:6;27975:3;27901:86;:::i;:::-;27894:93;;28011:56;28061:5;28011:56;:::i;:::-;28090:7;28121:1;28106:284;28131:6;28128:1;28125:13;28106:284;;;28207:6;28201:13;28234:63;28293:3;28278:13;28234:63;:::i;:::-;28227:70;;28320:60;28373:6;28320:60;:::i;:::-;28310:70;;28166:224;28153:1;28150;28146:9;28141:14;;28106:284;;;28110:14;28406:3;28399:10;;27807:608;;;27683:732;;;;:::o;28421:831::-;28684:4;28722:3;28711:9;28707:19;28699:27;;28736:71;28804:1;28793:9;28789:17;28780:6;28736:71;:::i;:::-;28817:80;28893:2;28882:9;28878:18;28869:6;28817:80;:::i;:::-;28944:9;28938:4;28934:20;28929:2;28918:9;28914:18;28907:48;28972:108;29075:4;29066:6;28972:108;:::i;:::-;28964:116;;29090:72;29158:2;29147:9;29143:18;29134:6;29090:72;:::i;:::-;29172:73;29240:3;29229:9;29225:19;29216:6;29172:73;:::i;:::-;28421:831;;;;;;;;:::o;29258:180::-;29306:77;29303:1;29296:88;29403:4;29400:1;29393:15;29427:4;29424:1;29417:15;29444:185;29484:1;29501:20;29519:1;29501:20;:::i;:::-;29496:25;;29535:20;29553:1;29535:20;:::i;:::-;29530:25;;29574:1;29564:35;;29579:18;;:::i;:::-;29564:35;29621:1;29618;29614:9;29609:14;;29444:185;;;;:::o;29635:177::-;29775:29;29771:1;29763:6;29759:14;29752:53;29635:177;:::o;29818:366::-;29960:3;29981:67;30045:2;30040:3;29981:67;:::i;:::-;29974:74;;30057:93;30146:3;30057:93;:::i;:::-;30175:2;30170:3;30166:12;30159:19;;29818:366;;;:::o;30190:419::-;30356:4;30394:2;30383:9;30379:18;30371:26;;30443:9;30437:4;30433:20;30429:1;30418:9;30414:17;30407:47;30471:131;30597:4;30471:131;:::i;:::-;30463:139;;30190:419;;;:::o;30615:410::-;30655:7;30678:20;30696:1;30678:20;:::i;:::-;30673:25;;30712:20;30730:1;30712:20;:::i;:::-;30707:25;;30767:1;30764;30760:9;30789:30;30807:11;30789:30;:::i;:::-;30778:41;;30968:1;30959:7;30955:15;30952:1;30949:22;30929:1;30922:9;30902:83;30879:139;;30998:18;;:::i;:::-;30879:139;30663:362;30615:410;;;;:::o;31031:220::-;31171:34;31167:1;31159:6;31155:14;31148:58;31240:3;31235:2;31227:6;31223:15;31216:28;31031:220;:::o;31257:366::-;31399:3;31420:67;31484:2;31479:3;31420:67;:::i;:::-;31413:74;;31496:93;31585:3;31496:93;:::i;:::-;31614:2;31609:3;31605:12;31598:19;;31257:366;;;:::o;31629:419::-;31795:4;31833:2;31822:9;31818:18;31810:26;;31882:9;31876:4;31872:20;31868:1;31857:9;31853:17;31846:47;31910:131;32036:4;31910:131;:::i;:::-;31902:139;;31629:419;;;:::o

Swarm Source

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