ETH Price: $3,073.83 (+0.82%)
Gas: 4 Gwei

Token

FreeCZ (FREECZ)
 

Overview

Max Total Supply

100,000,000 FREECZ

Holders

310

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.302921236 FREECZ

Value
$0.00
0xdb2a88d730b1d76e7c9594ae194c9b9f21ac9a7b
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:
FREECZ

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-11-21
*/

// SPDX-License-Identifier: MIT

/*
https://twitter.com/WatcherGuru/status/1727098019043279315

*/

pragma solidity 0.8.20;

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

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

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

}

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}

contract FREECZ is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
    address payable private _taxWallet;

    uint256 private _initialBuyTax=16;
    uint256 private _initialSellTax=24;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;
    uint256 private _reduceBuyTaxAt=25;
    uint256 private _reduceSellTaxAt=25;
    uint256 private _preventSwapBefore=28;
    uint256 private _buyCount=0;

    mapping(address => uint256) private cooldownTimer;
    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 1;
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"FreeCZ";
    string private constant _symbol = unicode"FREECZ";
    uint256 public _maxTxAmount = 2000000 * 10**_decimals;
    uint256 public _maxWalletSize = 2000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 1000000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        _balances[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

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

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

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

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

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

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

    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }

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

    function _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 cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    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");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to]);
            taxAmount = amount.mul((_buyCount>_reduceBuyTaxAt)?_finalBuyTax:_initialBuyTax).div(100);

            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }

            if (from == uniswapV2Pair && buyCooldownEnabled && ! _isExcludedFromFee[to]) {
                require(
                    cooldownTimer[to] < block.timestamp,
                    "buy Cooldown exists"
                );
                cooldownTimer[to] = block.timestamp + cooldownTimerInterval;
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }

            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul((_buyCount>_reduceSellTaxAt)?_finalSellTax:_initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to   == uniswapV2Pair && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        if(taxAmount>0){
          _balances[address(this)]=_balances[address(this)].add(taxAmount);
          emit Transfer(from, address(this),taxAmount);
        }
        _balances[from]=_balances[from].sub(amount);
        _balances[to]=_balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }

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

    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

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

    function delBots(address[] memory notbot) public onlyOwner {
      for (uint i = 0; i < notbot.length; i++) {
          bots[notbot[i]] = false;
      }
    }

    function isBot(address a) public view returns (bool){
      return bots[a];
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen,"trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }

    
     function reduceFee(uint256 _newBuyFee,uint256 _newSellFee) external onlyOwner{
            _finalBuyTax=_newBuyFee;
            _finalSellTax=_newSellFee;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"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":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","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":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"notbot","type":"address[]"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newBuyFee","type":"uint256"},{"internalType":"uint256","name":"_newSellFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","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":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

6080604052600160065f6101000a81548160ff021916908315150217905550601060075560186008555f6009555f600a556019600b556019600c55601c600d555f600e55600160105f6101000a81548160ff0219169083151502179055506001601060016101000a81548160ff021916908360ff1602179055506009600a6200008991906200063f565b621e84806200009991906200068f565b6011556009600a620000ac91906200063f565b621e8480620000bc91906200068f565b6012556009600a620000cf91906200063f565b620f4240620000df91906200068f565b6013556009600a620000f291906200063f565b620f42406200010291906200068f565b6014555f601660156101000a81548160ff0219169083151502179055505f6016806101000a81548160ff02191690831515021790555034801562000144575f80fd5b505f620001566200047f60201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002026200047f60201b60201c565b600660016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200025291906200063f565b6305f5e1006200026391906200068f565b60015f620002766200047f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002c86200048660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003f36200047f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200045191906200063f565b6305f5e1006200046291906200068f565b604051620004719190620006ea565b60405180910390a362000705565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000537578086048111156200050f576200050e620004ad565b5b60018516156200051f5780820291505b80810290506200052f85620004da565b9450620004ef565b94509492505050565b5f8262000551576001905062000623565b8162000560575f905062000623565b81600181146200057957600281146200058457620005ba565b600191505062000623565b60ff841115620005995762000598620004ad565b5b8360020a915084821115620005b357620005b2620004ad565b5b5062000623565b5060208310610133831016604e8410600b8410161715620005f45782820a905083811115620005ee57620005ed620004ad565b5b62000623565b620006038484846001620004e6565b925090508184048111156200061d576200061c620004ad565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200064b826200062a565b9150620006588362000633565b9250620006877fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000540565b905092915050565b5f6200069b826200062a565b9150620006a8836200062a565b9250828202620006b8816200062a565b91508282048414831517620006d257620006d1620004ad565b5b5092915050565b620006e4816200062a565b82525050565b5f602082019050620006ff5f830184620006d9565b92915050565b6139eb80620007135f395ff3fe608060405260043610610184575f3560e01c8063722b62ad116100d057806395d89b4111610089578063c876d0b911610063578063c876d0b914610543578063c9567bf91461056d578063d34628cc14610583578063dd62ed3e146105ab5761018b565b806395d89b41146104b3578063a9059cbb146104dd578063bf474bed146105195761018b565b8063722b62ad146103cd57806372333356146103f7578063751039fc1461041f5780637d1db4a5146104355780638da5cb5b1461045f5780638f9a55c0146104895761018b565b8063313ce5671161013d57806351bc3c851161011757806351bc3c851461033b578063617fe0ed1461035157806370a082311461037b578063715018a6146103b75761018b565b8063313ce567146102ad57806331c2d847146102d75780633bbac579146102ff5761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f557806318160ddd1461021f57806323b872dd146102495780632d594567146102855761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105e7565b6040516101b09190612854565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612912565b610624565b6040516101ec919061296a565b60405180910390f35b348015610200575f80fd5b50610209610641565b6040516102169190612992565b60405180910390f35b34801561022a575f80fd5b50610233610647565b6040516102409190612992565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906129ab565b61066a565b60405161027c919061296a565b60405180910390f35b348015610290575f80fd5b506102ab60048036038101906102a69190612a5b565b61073e565b005b3480156102b8575f80fd5b506102c161080a565b6040516102ce9190612aa8565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f89190612c01565b610812565b005b34801561030a575f80fd5b5061032560048036038101906103209190612c48565b610936565b604051610332919061296a565b60405180910390f35b348015610346575f80fd5b5061034f610988565b005b34801561035c575f80fd5b50610365610a20565b604051610372919061296a565b60405180910390f35b348015610386575f80fd5b506103a1600480360381019061039c9190612c48565b610a32565b6040516103ae9190612992565b60405180910390f35b3480156103c2575f80fd5b506103cb610a78565b005b3480156103d8575f80fd5b506103e1610bc6565b6040516103ee9190612aa8565b60405180910390f35b348015610402575f80fd5b5061041d60048036038101906104189190612c73565b610bd9565b005b34801561042a575f80fd5b50610433610c7f565b005b348015610440575f80fd5b50610449610dc7565b6040516104569190612992565b60405180910390f35b34801561046a575f80fd5b50610473610dcd565b6040516104809190612cc0565b60405180910390f35b348015610494575f80fd5b5061049d610df4565b6040516104aa9190612992565b60405180910390f35b3480156104be575f80fd5b506104c7610dfa565b6040516104d49190612854565b60405180910390f35b3480156104e8575f80fd5b5061050360048036038101906104fe9190612912565b610e37565b604051610510919061296a565b60405180910390f35b348015610524575f80fd5b5061052d610e54565b60405161053a9190612992565b60405180910390f35b34801561054e575f80fd5b50610557610e5a565b604051610564919061296a565b60405180910390f35b348015610578575f80fd5b50610581610e6c565b005b34801561058e575f80fd5b506105a960048036038101906105a49190612c01565b61138d565b005b3480156105b6575f80fd5b506105d160048036038101906105cc9190612cd9565b6114b2565b6040516105de9190612992565b60405180910390f35b60606040518060400160405280600681526020017f46726565435a0000000000000000000000000000000000000000000000000000815250905090565b5f610637610630611534565b848461153b565b6001905092915050565b60145481565b5f6009600a6106569190612e73565b6305f5e1006106659190612ebd565b905090565b5f6106768484846116fe565b61073384610682611534565b61072e8560405180606001604052806028815260200161398e6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106e5611534565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122b59092919063ffffffff16565b61153b565b600190509392505050565b610746611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c990612f48565b60405180910390fd5b8160105f6101000a81548160ff02191690831515021790555080601060016101000a81548160ff021916908360ff1602179055505050565b5f6009905090565b61081a611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089d90612f48565b60405180910390fd5b5f5b8151811015610932575f60045f8484815181106108c8576108c7612f66565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061092a90612f93565b9150506108a8565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109c9611534565b73ffffffffffffffffffffffffffffffffffffffff16146109e8575f80fd5b5f6109f230610a32565b90505f811115610a0657610a0581612317565b5b5f4790505f811115610a1c57610a1b81612582565b5b5050565b60105f9054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a80611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0390612f48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060019054906101000a900460ff1681565b610be1611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6490612f48565b60405180910390fd5b8160098190555080600a819055505050565b610c87611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90612f48565b60405180910390fd5b6009600a610d219190612e73565b6305f5e100610d309190612ebd565b6011819055506009600a610d449190612e73565b6305f5e100610d539190612ebd565b6012819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610da19190612e73565b6305f5e100610db09190612ebd565b604051610dbd9190612992565b60405180910390a1565b60115481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600681526020017f46524545435a0000000000000000000000000000000000000000000000000000815250905090565b5f610e4a610e43611534565b84846116fe565b6001905092915050565b60135481565b60065f9054906101000a900460ff1681565b610e74611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790612f48565b60405180910390fd5b601660149054906101000a900460ff1615610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790613024565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fec3060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610fd89190612e73565b6305f5e100610fe79190612ebd565b61153b565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611056573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107a9190613056565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611100573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111249190613056565b6040518363ffffffff1660e01b8152600401611141929190613081565b6020604051808303815f875af115801561115d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111819190613056565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061120830610a32565b5f80611212610dcd565b426040518863ffffffff1660e01b8152600401611234969594939291906130ea565b60606040518083038185885af1158015611250573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611275919061315d565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016113159291906131ad565b6020604051808303815f875af1158015611331573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135591906131e8565b5060016016806101000a81548160ff0219169083151502179055506001601660146101000a81548160ff021916908315150217905550565b611395611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890612f48565b60405180910390fd5b5f5b81518110156114ae57600160045f84848151811061144457611443612f66565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806114a690612f93565b915050611423565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a090613283565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90613311565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116f19190612992565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117639061339f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d19061342d565b60405180910390fd5b5f811161181c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611813906134bb565b60405180910390fd5b5f611825610dcd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118935750611863610dcd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120055760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611936575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61193e575f80fd5b61197a606461196c600b54600e54116119595760075461195d565b6009545b856125eb90919063ffffffff16565b61266290919063ffffffff16565b905060065f9054906101000a900460ff1615611b025760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a3a575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b01574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab59061356f565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b69575060105f9054906101000a900460ff165b8015611bbc575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ca05742600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c37906135d7565b60405180910390fd5b601060019054906101000a900460ff1660ff1642611c5e91906135f5565b600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d49575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d9c575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e5657601154821115611de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddd90613672565b60405180910390fd5b60125482611df385610a32565b611dfd91906135f5565b1115611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906136da565b60405180910390fd5b600e5f815480929190611e5090612f93565b91905055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ede57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f2257611f1f6064611f11600c54600e5411611efe57600854611f02565b600a545b856125eb90919063ffffffff16565b61266290919063ffffffff16565b90505b5f611f2c30610a32565b9050601660159054906101000a900460ff16158015611f97575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611fad575060168054906101000a900460ff165b8015611fba575060135481115b8015611fc95750600d54600e54115b1561200357611feb611fe684611fe1846014546126ab565b6126ab565b612317565b5f4790505f8111156120015761200047612582565b5b505b505b5f8111156121045761205d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120fb9190612992565b60405180910390a35b6121548260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461272090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121f76121ab828461272090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61229a848661272090919063ffffffff16565b6040516122a79190612992565b60405180910390a350505050565b5f8383111582906122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f39190612854565b60405180910390fd5b505f838561230a91906136f8565b9050809150509392505050565b6001601660156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561234e5761234d612ac5565b5b60405190808252806020026020018201604052801561237c5781602001602082028036833780820191505090505b50905030815f8151811061239357612392612f66565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612437573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061245b9190613056565b8160018151811061246f5761246e612f66565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124d53060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461153b565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125379594939291906137e2565b5f604051808303815f87803b15801561254e575f80fd5b505af1158015612560573d5f803e3d5ffd5b50505050505f601660156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156125e7573d5f803e3d5ffd5b5050565b5f8083036125fb575f905061265c565b5f82846126089190612ebd565b90508284826126179190613867565b14612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e90613907565b60405180910390fd5b809150505b92915050565b5f6126a383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612769565b905092915050565b5f8183116126b957826126bb565b815b905092915050565b5f8082846126d191906135f5565b905083811015612716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270d9061396f565b60405180910390fd5b8091505092915050565b5f61276183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122b5565b905092915050565b5f80831182906127af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a69190612854565b60405180910390fd5b505f83856127bd9190613867565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156128015780820151818401526020810190506127e6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612826826127ca565b61283081856127d4565b93506128408185602086016127e4565b6128498161280c565b840191505092915050565b5f6020820190508181035f83015261286c818461281c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ae82612885565b9050919050565b6128be816128a4565b81146128c8575f80fd5b50565b5f813590506128d9816128b5565b92915050565b5f819050919050565b6128f1816128df565b81146128fb575f80fd5b50565b5f8135905061290c816128e8565b92915050565b5f80604083850312156129285761292761287d565b5b5f612935858286016128cb565b9250506020612946858286016128fe565b9150509250929050565b5f8115159050919050565b61296481612950565b82525050565b5f60208201905061297d5f83018461295b565b92915050565b61298c816128df565b82525050565b5f6020820190506129a55f830184612983565b92915050565b5f805f606084860312156129c2576129c161287d565b5b5f6129cf868287016128cb565b93505060206129e0868287016128cb565b92505060406129f1868287016128fe565b9150509250925092565b612a0481612950565b8114612a0e575f80fd5b50565b5f81359050612a1f816129fb565b92915050565b5f60ff82169050919050565b612a3a81612a25565b8114612a44575f80fd5b50565b5f81359050612a5581612a31565b92915050565b5f8060408385031215612a7157612a7061287d565b5b5f612a7e85828601612a11565b9250506020612a8f85828601612a47565b9150509250929050565b612aa281612a25565b82525050565b5f602082019050612abb5f830184612a99565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612afb8261280c565b810181811067ffffffffffffffff82111715612b1a57612b19612ac5565b5b80604052505050565b5f612b2c612874565b9050612b388282612af2565b919050565b5f67ffffffffffffffff821115612b5757612b56612ac5565b5b602082029050602081019050919050565b5f80fd5b5f612b7e612b7984612b3d565b612b23565b90508083825260208201905060208402830185811115612ba157612ba0612b68565b5b835b81811015612bca5780612bb688826128cb565b845260208401935050602081019050612ba3565b5050509392505050565b5f82601f830112612be857612be7612ac1565b5b8135612bf8848260208601612b6c565b91505092915050565b5f60208284031215612c1657612c1561287d565b5b5f82013567ffffffffffffffff811115612c3357612c32612881565b5b612c3f84828501612bd4565b91505092915050565b5f60208284031215612c5d57612c5c61287d565b5b5f612c6a848285016128cb565b91505092915050565b5f8060408385031215612c8957612c8861287d565b5b5f612c96858286016128fe565b9250506020612ca7858286016128fe565b9150509250929050565b612cba816128a4565b82525050565b5f602082019050612cd35f830184612cb1565b92915050565b5f8060408385031215612cef57612cee61287d565b5b5f612cfc858286016128cb565b9250506020612d0d858286016128cb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d9957808604811115612d7557612d74612d17565b5b6001851615612d845780820291505b8081029050612d9285612d44565b9450612d59565b94509492505050565b5f82612db15760019050612e6c565b81612dbe575f9050612e6c565b8160018114612dd45760028114612dde57612e0d565b6001915050612e6c565b60ff841115612df057612def612d17565b5b8360020a915084821115612e0757612e06612d17565b5b50612e6c565b5060208310610133831016604e8410600b8410161715612e425782820a905083811115612e3d57612e3c612d17565b5b612e6c565b612e4f8484846001612d50565b92509050818404811115612e6657612e65612d17565b5b81810290505b9392505050565b5f612e7d826128df565b9150612e8883612a25565b9250612eb57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612da2565b905092915050565b5f612ec7826128df565b9150612ed2836128df565b9250828202612ee0816128df565b91508282048414831517612ef757612ef6612d17565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f326020836127d4565b9150612f3d82612efe565b602082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612f9d826128df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fcf57612fce612d17565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61300e6017836127d4565b915061301982612fda565b602082019050919050565b5f6020820190508181035f83015261303b81613002565b9050919050565b5f81519050613050816128b5565b92915050565b5f6020828403121561306b5761306a61287d565b5b5f61307884828501613042565b91505092915050565b5f6040820190506130945f830185612cb1565b6130a16020830184612cb1565b9392505050565b5f819050919050565b5f819050919050565b5f6130d46130cf6130ca846130a8565b6130b1565b6128df565b9050919050565b6130e4816130ba565b82525050565b5f60c0820190506130fd5f830189612cb1565b61310a6020830188612983565b61311760408301876130db565b61312460608301866130db565b6131316080830185612cb1565b61313e60a0830184612983565b979650505050505050565b5f81519050613157816128e8565b92915050565b5f805f606084860312156131745761317361287d565b5b5f61318186828701613149565b935050602061319286828701613149565b92505060406131a386828701613149565b9150509250925092565b5f6040820190506131c05f830185612cb1565b6131cd6020830184612983565b9392505050565b5f815190506131e2816129fb565b92915050565b5f602082840312156131fd576131fc61287d565b5b5f61320a848285016131d4565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61326d6024836127d4565b915061327882613213565b604082019050919050565b5f6020820190508181035f83015261329a81613261565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132fb6022836127d4565b9150613306826132a1565b604082019050919050565b5f6020820190508181035f830152613328816132ef565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133896025836127d4565b91506133948261332f565b604082019050919050565b5f6020820190508181035f8301526133b68161337d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134176023836127d4565b9150613422826133bd565b604082019050919050565b5f6020820190508181035f8301526134448161340b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134a56029836127d4565b91506134b08261344b565b604082019050919050565b5f6020820190508181035f8301526134d281613499565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6135596049836127d4565b9150613564826134d9565b606082019050919050565b5f6020820190508181035f8301526135868161354d565b9050919050565b7f62757920436f6f6c646f776e20657869737473000000000000000000000000005f82015250565b5f6135c16013836127d4565b91506135cc8261358d565b602082019050919050565b5f6020820190508181035f8301526135ee816135b5565b9050919050565b5f6135ff826128df565b915061360a836128df565b925082820190508082111561362257613621612d17565b5b92915050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61365c6019836127d4565b915061366782613628565b602082019050919050565b5f6020820190508181035f83015261368981613650565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6136c4601a836127d4565b91506136cf82613690565b602082019050919050565b5f6020820190508181035f8301526136f1816136b8565b9050919050565b5f613702826128df565b915061370d836128df565b925082820390508181111561372557613724612d17565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61375d816128a4565b82525050565b5f61376e8383613754565b60208301905092915050565b5f602082019050919050565b5f6137908261372b565b61379a8185613735565b93506137a583613745565b805f5b838110156137d55781516137bc8882613763565b97506137c78361377a565b9250506001810190506137a8565b5085935050505092915050565b5f60a0820190506137f55f830188612983565b61380260208301876130db565b81810360408301526138148186613786565b90506138236060830185612cb1565b6138306080830184612983565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613871826128df565b915061387c836128df565b92508261388c5761388b61383a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138f16021836127d4565b91506138fc82613897565b604082019050919050565b5f6020820190508181035f83015261391e816138e5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613959601b836127d4565b915061396482613925565b602082019050919050565b5f6020820190508181035f8301526139868161394d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220719a8d4a49bafd27d242d3cd6b80ed589bf53dea64cb5863e3ee831210e5cad664736f6c63430008140033

Deployed Bytecode

0x608060405260043610610184575f3560e01c8063722b62ad116100d057806395d89b4111610089578063c876d0b911610063578063c876d0b914610543578063c9567bf91461056d578063d34628cc14610583578063dd62ed3e146105ab5761018b565b806395d89b41146104b3578063a9059cbb146104dd578063bf474bed146105195761018b565b8063722b62ad146103cd57806372333356146103f7578063751039fc1461041f5780637d1db4a5146104355780638da5cb5b1461045f5780638f9a55c0146104895761018b565b8063313ce5671161013d57806351bc3c851161011757806351bc3c851461033b578063617fe0ed1461035157806370a082311461037b578063715018a6146103b75761018b565b8063313ce567146102ad57806331c2d847146102d75780633bbac579146102ff5761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f557806318160ddd1461021f57806323b872dd146102495780632d594567146102855761018b565b3661018b57005b5f80fd5b34801561019a575f80fd5b506101a36105e7565b6040516101b09190612854565b60405180910390f35b3480156101c4575f80fd5b506101df60048036038101906101da9190612912565b610624565b6040516101ec919061296a565b60405180910390f35b348015610200575f80fd5b50610209610641565b6040516102169190612992565b60405180910390f35b34801561022a575f80fd5b50610233610647565b6040516102409190612992565b60405180910390f35b348015610254575f80fd5b5061026f600480360381019061026a91906129ab565b61066a565b60405161027c919061296a565b60405180910390f35b348015610290575f80fd5b506102ab60048036038101906102a69190612a5b565b61073e565b005b3480156102b8575f80fd5b506102c161080a565b6040516102ce9190612aa8565b60405180910390f35b3480156102e2575f80fd5b506102fd60048036038101906102f89190612c01565b610812565b005b34801561030a575f80fd5b5061032560048036038101906103209190612c48565b610936565b604051610332919061296a565b60405180910390f35b348015610346575f80fd5b5061034f610988565b005b34801561035c575f80fd5b50610365610a20565b604051610372919061296a565b60405180910390f35b348015610386575f80fd5b506103a1600480360381019061039c9190612c48565b610a32565b6040516103ae9190612992565b60405180910390f35b3480156103c2575f80fd5b506103cb610a78565b005b3480156103d8575f80fd5b506103e1610bc6565b6040516103ee9190612aa8565b60405180910390f35b348015610402575f80fd5b5061041d60048036038101906104189190612c73565b610bd9565b005b34801561042a575f80fd5b50610433610c7f565b005b348015610440575f80fd5b50610449610dc7565b6040516104569190612992565b60405180910390f35b34801561046a575f80fd5b50610473610dcd565b6040516104809190612cc0565b60405180910390f35b348015610494575f80fd5b5061049d610df4565b6040516104aa9190612992565b60405180910390f35b3480156104be575f80fd5b506104c7610dfa565b6040516104d49190612854565b60405180910390f35b3480156104e8575f80fd5b5061050360048036038101906104fe9190612912565b610e37565b604051610510919061296a565b60405180910390f35b348015610524575f80fd5b5061052d610e54565b60405161053a9190612992565b60405180910390f35b34801561054e575f80fd5b50610557610e5a565b604051610564919061296a565b60405180910390f35b348015610578575f80fd5b50610581610e6c565b005b34801561058e575f80fd5b506105a960048036038101906105a49190612c01565b61138d565b005b3480156105b6575f80fd5b506105d160048036038101906105cc9190612cd9565b6114b2565b6040516105de9190612992565b60405180910390f35b60606040518060400160405280600681526020017f46726565435a0000000000000000000000000000000000000000000000000000815250905090565b5f610637610630611534565b848461153b565b6001905092915050565b60145481565b5f6009600a6106569190612e73565b6305f5e1006106659190612ebd565b905090565b5f6106768484846116fe565b61073384610682611534565b61072e8560405180606001604052806028815260200161398e6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6106e5611534565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546122b59092919063ffffffff16565b61153b565b600190509392505050565b610746611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107c990612f48565b60405180910390fd5b8160105f6101000a81548160ff02191690831515021790555080601060016101000a81548160ff021916908360ff1602179055505050565b5f6009905090565b61081a611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161089d90612f48565b60405180910390fd5b5f5b8151811015610932575f60045f8484815181106108c8576108c7612f66565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550808061092a90612f93565b9150506108a8565b5050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109c9611534565b73ffffffffffffffffffffffffffffffffffffffff16146109e8575f80fd5b5f6109f230610a32565b90505f811115610a0657610a0581612317565b5b5f4790505f811115610a1c57610a1b81612582565b5b5050565b60105f9054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610a80611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0390612f48565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601060019054906101000a900460ff1681565b610be1611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6490612f48565b60405180910390fd5b8160098190555080600a819055505050565b610c87611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0a90612f48565b60405180910390fd5b6009600a610d219190612e73565b6305f5e100610d309190612ebd565b6011819055506009600a610d449190612e73565b6305f5e100610d539190612ebd565b6012819055505f60065f6101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610da19190612e73565b6305f5e100610db09190612ebd565b604051610dbd9190612992565b60405180910390a1565b60115481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60125481565b60606040518060400160405280600681526020017f46524545435a0000000000000000000000000000000000000000000000000000815250905090565b5f610e4a610e43611534565b84846116fe565b6001905092915050565b60135481565b60065f9054906101000a900460ff1681565b610e74611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790612f48565b60405180910390fd5b601660149054906101000a900460ff1615610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790613024565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610fec3060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610fd89190612e73565b6305f5e100610fe79190612ebd565b61153b565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611056573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061107a9190613056565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611100573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111249190613056565b6040518363ffffffff1660e01b8152600401611141929190613081565b6020604051808303815f875af115801561115d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111819190613056565b60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061120830610a32565b5f80611212610dcd565b426040518863ffffffff1660e01b8152600401611234969594939291906130ea565b60606040518083038185885af1158015611250573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611275919061315d565b50505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016113159291906131ad565b6020604051808303815f875af1158015611331573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061135591906131e8565b5060016016806101000a81548160ff0219169083151502179055506001601660146101000a81548160ff021916908315150217905550565b611395611534565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890612f48565b60405180910390fd5b5f5b81518110156114ae57600160045f84848151811061144457611443612f66565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555080806114a690612f93565b915050611423565b5050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115a090613283565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611617576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160e90613311565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116f19190612992565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361176c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117639061339f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117d19061342d565b60405180910390fd5b5f811161181c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611813906134bb565b60405180910390fd5b5f611825610dcd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156118935750611863610dcd565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120055760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611936575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b61193e575f80fd5b61197a606461196c600b54600e54116119595760075461195d565b6009545b856125eb90919063ffffffff16565b61266290919063ffffffff16565b905060065f9054906101000a900460ff1615611b025760155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611a3a575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611b01574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611abe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab59061356f565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611b69575060105f9054906101000a900460ff165b8015611bbc575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ca05742600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c37906135d7565b60405180910390fd5b601060019054906101000a900460ff1660ff1642611c5e91906135f5565b600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611d49575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611d9c575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611e5657601154821115611de6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ddd90613672565b60405180910390fd5b60125482611df385610a32565b611dfd91906135f5565b1115611e3e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e35906136da565b60405180910390fd5b600e5f815480929190611e5090612f93565b91905055505b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ede57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611f2257611f1f6064611f11600c54600e5411611efe57600854611f02565b600a545b856125eb90919063ffffffff16565b61266290919063ffffffff16565b90505b5f611f2c30610a32565b9050601660159054906101000a900460ff16158015611f97575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b8015611fad575060168054906101000a900460ff165b8015611fba575060135481115b8015611fc95750600d54600e54115b1561200357611feb611fe684611fe1846014546126ab565b6126ab565b612317565b5f4790505f8111156120015761200047612582565b5b505b505b5f8111156121045761205d8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120fb9190612992565b60405180910390a35b6121548260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461272090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506121f76121ab828461272090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61229a848661272090919063ffffffff16565b6040516122a79190612992565b60405180910390a350505050565b5f8383111582906122fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122f39190612854565b60405180910390fd5b505f838561230a91906136f8565b9050809150509392505050565b6001601660156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561234e5761234d612ac5565b5b60405190808252806020026020018201604052801561237c5781602001602082028036833780820191505090505b50905030815f8151811061239357612392612f66565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612437573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061245b9190613056565b8160018151811061246f5761246e612f66565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506124d53060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461153b565b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b81526004016125379594939291906137e2565b5f604051808303815f87803b15801561254e575f80fd5b505af1158015612560573d5f803e3d5ffd5b50505050505f601660156101000a81548160ff02191690831515021790555050565b600660019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156125e7573d5f803e3d5ffd5b5050565b5f8083036125fb575f905061265c565b5f82846126089190612ebd565b90508284826126179190613867565b14612657576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161264e90613907565b60405180910390fd5b809150505b92915050565b5f6126a383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612769565b905092915050565b5f8183116126b957826126bb565b815b905092915050565b5f8082846126d191906135f5565b905083811015612716576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270d9061396f565b60405180910390fd5b8091505092915050565b5f61276183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506122b5565b905092915050565b5f80831182906127af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a69190612854565b60405180910390fd5b505f83856127bd9190613867565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156128015780820151818401526020810190506127e6565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612826826127ca565b61283081856127d4565b93506128408185602086016127e4565b6128498161280c565b840191505092915050565b5f6020820190508181035f83015261286c818461281c565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6128ae82612885565b9050919050565b6128be816128a4565b81146128c8575f80fd5b50565b5f813590506128d9816128b5565b92915050565b5f819050919050565b6128f1816128df565b81146128fb575f80fd5b50565b5f8135905061290c816128e8565b92915050565b5f80604083850312156129285761292761287d565b5b5f612935858286016128cb565b9250506020612946858286016128fe565b9150509250929050565b5f8115159050919050565b61296481612950565b82525050565b5f60208201905061297d5f83018461295b565b92915050565b61298c816128df565b82525050565b5f6020820190506129a55f830184612983565b92915050565b5f805f606084860312156129c2576129c161287d565b5b5f6129cf868287016128cb565b93505060206129e0868287016128cb565b92505060406129f1868287016128fe565b9150509250925092565b612a0481612950565b8114612a0e575f80fd5b50565b5f81359050612a1f816129fb565b92915050565b5f60ff82169050919050565b612a3a81612a25565b8114612a44575f80fd5b50565b5f81359050612a5581612a31565b92915050565b5f8060408385031215612a7157612a7061287d565b5b5f612a7e85828601612a11565b9250506020612a8f85828601612a47565b9150509250929050565b612aa281612a25565b82525050565b5f602082019050612abb5f830184612a99565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612afb8261280c565b810181811067ffffffffffffffff82111715612b1a57612b19612ac5565b5b80604052505050565b5f612b2c612874565b9050612b388282612af2565b919050565b5f67ffffffffffffffff821115612b5757612b56612ac5565b5b602082029050602081019050919050565b5f80fd5b5f612b7e612b7984612b3d565b612b23565b90508083825260208201905060208402830185811115612ba157612ba0612b68565b5b835b81811015612bca5780612bb688826128cb565b845260208401935050602081019050612ba3565b5050509392505050565b5f82601f830112612be857612be7612ac1565b5b8135612bf8848260208601612b6c565b91505092915050565b5f60208284031215612c1657612c1561287d565b5b5f82013567ffffffffffffffff811115612c3357612c32612881565b5b612c3f84828501612bd4565b91505092915050565b5f60208284031215612c5d57612c5c61287d565b5b5f612c6a848285016128cb565b91505092915050565b5f8060408385031215612c8957612c8861287d565b5b5f612c96858286016128fe565b9250506020612ca7858286016128fe565b9150509250929050565b612cba816128a4565b82525050565b5f602082019050612cd35f830184612cb1565b92915050565b5f8060408385031215612cef57612cee61287d565b5b5f612cfc858286016128cb565b9250506020612d0d858286016128cb565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612d9957808604811115612d7557612d74612d17565b5b6001851615612d845780820291505b8081029050612d9285612d44565b9450612d59565b94509492505050565b5f82612db15760019050612e6c565b81612dbe575f9050612e6c565b8160018114612dd45760028114612dde57612e0d565b6001915050612e6c565b60ff841115612df057612def612d17565b5b8360020a915084821115612e0757612e06612d17565b5b50612e6c565b5060208310610133831016604e8410600b8410161715612e425782820a905083811115612e3d57612e3c612d17565b5b612e6c565b612e4f8484846001612d50565b92509050818404811115612e6657612e65612d17565b5b81810290505b9392505050565b5f612e7d826128df565b9150612e8883612a25565b9250612eb57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612da2565b905092915050565b5f612ec7826128df565b9150612ed2836128df565b9250828202612ee0816128df565b91508282048414831517612ef757612ef6612d17565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f612f326020836127d4565b9150612f3d82612efe565b602082019050919050565b5f6020820190508181035f830152612f5f81612f26565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612f9d826128df565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612fcf57612fce612d17565b5b600182019050919050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f61300e6017836127d4565b915061301982612fda565b602082019050919050565b5f6020820190508181035f83015261303b81613002565b9050919050565b5f81519050613050816128b5565b92915050565b5f6020828403121561306b5761306a61287d565b5b5f61307884828501613042565b91505092915050565b5f6040820190506130945f830185612cb1565b6130a16020830184612cb1565b9392505050565b5f819050919050565b5f819050919050565b5f6130d46130cf6130ca846130a8565b6130b1565b6128df565b9050919050565b6130e4816130ba565b82525050565b5f60c0820190506130fd5f830189612cb1565b61310a6020830188612983565b61311760408301876130db565b61312460608301866130db565b6131316080830185612cb1565b61313e60a0830184612983565b979650505050505050565b5f81519050613157816128e8565b92915050565b5f805f606084860312156131745761317361287d565b5b5f61318186828701613149565b935050602061319286828701613149565b92505060406131a386828701613149565b9150509250925092565b5f6040820190506131c05f830185612cb1565b6131cd6020830184612983565b9392505050565b5f815190506131e2816129fb565b92915050565b5f602082840312156131fd576131fc61287d565b5b5f61320a848285016131d4565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61326d6024836127d4565b915061327882613213565b604082019050919050565b5f6020820190508181035f83015261329a81613261565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6132fb6022836127d4565b9150613306826132a1565b604082019050919050565b5f6020820190508181035f830152613328816132ef565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6133896025836127d4565b91506133948261332f565b604082019050919050565b5f6020820190508181035f8301526133b68161337d565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6134176023836127d4565b9150613422826133bd565b604082019050919050565b5f6020820190508181035f8301526134448161340b565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f6134a56029836127d4565b91506134b08261344b565b604082019050919050565b5f6020820190508181035f8301526134d281613499565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6135596049836127d4565b9150613564826134d9565b606082019050919050565b5f6020820190508181035f8301526135868161354d565b9050919050565b7f62757920436f6f6c646f776e20657869737473000000000000000000000000005f82015250565b5f6135c16013836127d4565b91506135cc8261358d565b602082019050919050565b5f6020820190508181035f8301526135ee816135b5565b9050919050565b5f6135ff826128df565b915061360a836128df565b925082820190508082111561362257613621612d17565b5b92915050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61365c6019836127d4565b915061366782613628565b602082019050919050565b5f6020820190508181035f83015261368981613650565b9050919050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6136c4601a836127d4565b91506136cf82613690565b602082019050919050565b5f6020820190508181035f8301526136f1816136b8565b9050919050565b5f613702826128df565b915061370d836128df565b925082820390508181111561372557613724612d17565b5b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61375d816128a4565b82525050565b5f61376e8383613754565b60208301905092915050565b5f602082019050919050565b5f6137908261372b565b61379a8185613735565b93506137a583613745565b805f5b838110156137d55781516137bc8882613763565b97506137c78361377a565b9250506001810190506137a8565b5085935050505092915050565b5f60a0820190506137f55f830188612983565b61380260208301876130db565b81810360408301526138148186613786565b90506138236060830185612cb1565b6138306080830184612983565b9695505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613871826128df565b915061387c836128df565b92508261388c5761388b61383a565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138f16021836127d4565b91506138fc82613897565b604082019050919050565b5f6020820190508181035f83015261391e816138e5565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613959601b836127d4565b915061396482613925565b602082019050919050565b5f6020820190508181035f8301526139868161394d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220719a8d4a49bafd27d242d3cd6b80ed589bf53dea64cb5863e3ee831210e5cad664736f6c63430008140033

Deployed Bytecode Sourcemap

3545:9278:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5616:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6449:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4892:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5893:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6618:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7282:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5802:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11317:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11487:83;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12472:348;;;;;;;;;;;;;:::i;:::-;;4397:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5996:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2626:148;;;;;;;;;;;;;:::i;:::-;;4441:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12264:163;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10841:196;;;;;;;;;;;;;:::i;:::-;;4706:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2412:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4766:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5707:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6123:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4828:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3933:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11578:671;;;;;;;;;;;;;:::i;:::-;;11145:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6298:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5616:83;5653:13;5686:5;;;;;;;;;;;;;;;;;5679:12;;5616:83;:::o;6449:161::-;6524:4;6541:39;6550:12;:10;:12::i;:::-;6564:7;6573:6;6541:8;:39::i;:::-;6598:4;6591:11;;6449:161;;;;:::o;4892:51::-;;;;:::o;5893:95::-;5946:7;4521:1;4576:2;:13;;;;:::i;:::-;4564:9;:25;;;;:::i;:::-;5966:14;;5893:95;:::o;6618:313::-;6716:4;6733:36;6743:6;6751:9;6762:6;6733:9;:36::i;:::-;6780:121;6789:6;6797:12;:10;:12::i;:::-;6811:89;6849:6;6811:89;;;;;;;;;;;;;;;;;:11;:19;6823:6;6811:19;;;;;;;;;;;;;;;:33;6831:12;:10;:12::i;:::-;6811:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;6780:8;:121::i;:::-;6919:4;6912:11;;6618:313;;;;;:::o;7282:164::-;2549:12;:10;:12::i;:::-;2539:22;;:6;;;;;;;;;;:22;;;2531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7387:7:::1;7366:18;;:28;;;;;;;;;;;;;;;;;;7429:9;7405:21;;:33;;;;;;;;;;;;;;;;;;7282:164:::0;;:::o;5802:83::-;5843:5;4521:1;5861:16;;5802:83;:::o;11317:162::-;2549:12;:10;:12::i;:::-;2539:22;;:6;;;;;;;;;;:22;;;2531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11390:6:::1;11385:87;11406:6;:13;11402:1;:17;11385:87;;;11457:5;11439:4;:15;11444:6;11451:1;11444:9;;;;;;;;:::i;:::-;;;;;;;;11439:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;11421:3;;;;;:::i;:::-;;;;11385:87;;;;11317:162:::0;:::o;11487:83::-;11534:4;11555;:7;11560:1;11555:7;;;;;;;;;;;;;;;;;;;;;;;;;11548:14;;11487:83;;;:::o;12472:348::-;12536:10;;;;;;;;;;;12522:24;;:12;:10;:12::i;:::-;:24;;;12514:33;;;;;;12558:20;12579:24;12597:4;12579:9;:24::i;:::-;12558:45;;12630:1;12617:12;:14;12614:73;;;12645:30;12662:12;12645:16;:30::i;:::-;12614:73;12697:18;12716:21;12697:40;;12762:1;12751:10;:12;12748:65;;;12777:24;12790:10;12777:12;:24::i;:::-;12748:65;12503:317;;12472:348::o;4397:37::-;;;;;;;;;;;;;:::o;5996:119::-;6062:7;6089:9;:18;6099:7;6089:18;;;;;;;;;;;;;;;;6082:25;;5996:119;;;:::o;2626:148::-;2549:12;:10;:12::i;:::-;2539:22;;:6;;;;;;;;;;:22;;;2531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2733:1:::1;2696:40;;2717:6;::::0;::::1;;;;;;;;2696:40;;;;;;;;;;;;2764:1;2747:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2626:148::o:0;4441:38::-;;;;;;;;;;;;;:::o;12264:163::-;2549:12;:10;:12::i;:::-;2539:22;;:6;;;;;;;;;;:22;;;2531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12369:10:::1;12356:12;:23;;;;12408:11;12394:13;:25;;;;12264:163:::0;;:::o;10841:196::-;2549:12;:10;:12::i;:::-;2539:22;;:6;;;;;;;;;;:22;;;2531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4521:1:::1;4576:2;:13;;;;:::i;:::-;4564:9;:25;;;;:::i;:::-;10894:12;:22;;;;4521:1;4576:2;:13;;;;:::i;:::-;4564:9;:25;;;;:::i;:::-;10927:14;:22;;;;10981:5;10960:20;;:26;;;;;;;;;;;;;;;;;;11002:27;4521:1;4576:2;:13;;;;:::i;:::-;4564:9;:25;;;;:::i;:::-;11002:27;;;;;;:::i;:::-;;;;;;;;10841:196::o:0;4706:53::-;;;;:::o;2412:79::-;2450:7;2477:6;;;;;;;;;;;2470:13;;2412:79;:::o;4766:55::-;;;;:::o;5707:87::-;5746:13;5779:7;;;;;;;;;;;;;;;;;5772:14;;5707:87;:::o;6123:167::-;6201:4;6218:42;6228:12;:10;:12::i;:::-;6242:9;6253:6;6218:9;:42::i;:::-;6278:4;6271:11;;6123:167;;;;:::o;4828:57::-;;;;:::o;3933:39::-;;;;;;;;;;;;;:::o;11578:671::-;2549:12;:10;:12::i;:::-;2539:22;;:6;;;;;;;;;;:22;;;2531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11642:11:::1;;;;;;;;;;;11641:12;11633:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;11728:42;11691:15;;:80;;;;;;;;;;;;;;;;;;11782:58;11799:4;11814:15;;;;;;;;;;;4521:1;4576:2;:13;;;;:::i;:::-;4564:9;:25;;;;:::i;:::-;11782:8;:58::i;:::-;11885:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11867:55;;;11931:4;11938:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11867:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11851:13;;:110;;;;;;;;;;;;;;;;;;11972:15;;;;;;;;;;;:31;;;12011:21;12042:4;12048:24;12066:4;12048:9;:24::i;:::-;12073:1;12075::::0;12077:7:::1;:5;:7::i;:::-;12085:15;11972:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;12119:13;;;;;;;;;;;12112:29;;;12150:15;;;;;;;;;;;12168:14;12112:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;12208:4;12194:11;::::0;:18:::1;;;;;;;;;;;;;;;;;;12237:4;12223:11;;:18;;;;;;;;;;;;;;;;;;11578:671::o:0;11145:164::-;2549:12;:10;:12::i;:::-;2539:22;;:6;;;;;;;;;;:22;;;2531:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11219:6:::1;11214:88;11235:5;:12;11231:1;:16;11214:88;;;11286:4;11269;:14;11274:5;11280:1;11274:8;;;;;;;;:::i;:::-;;;;;;;;11269:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;11249:3;;;;;:::i;:::-;;;;11214:88;;;;11145:164:::0;:::o;6298:143::-;6379:7;6406:11;:18;6418:5;6406:18;;;;;;;;;;;;;;;:27;6425:7;6406:27;;;;;;;;;;;;;;;;6399:34;;6298:143;;;;:::o;167:98::-;220:7;247:10;240:17;;167:98;:::o;6939:335::-;7049:1;7032:19;;:5;:19;;;7024:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7130:1;7111:21;;:7;:21;;;7103:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7212:6;7182:11;:18;7194:5;7182:18;;;;;;;;;;;;;;;:27;7201:7;7182:27;;;;;;;;;;;;;;;:36;;;;7250:7;7234:32;;7243:5;7234:32;;;7259:6;7234:32;;;;;;:::i;:::-;;;;;;;;6939:335;;;:::o;7454:2780::-;7558:1;7542:18;;:4;:18;;;7534:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7635:1;7621:16;;:2;:16;;;7613:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7705:1;7696:6;:10;7688:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7763:17;7805:7;:5;:7::i;:::-;7797:15;;:4;:15;;;;:32;;;;;7822:7;:5;:7::i;:::-;7816:13;;:2;:13;;;;7797:32;7793:2085;;;7855:4;:10;7860:4;7855:10;;;;;;;;;;;;;;;;;;;;;;;;;7854:11;:24;;;;;7870:4;:8;7875:2;7870:8;;;;;;;;;;;;;;;;;;;;;;;;;7869:9;7854:24;7846:33;;;;;;7906:76;7978:3;7906:67;7928:15;;7918:9;;:25;7917:55;;7958:14;;7917:55;;;7945:12;;7917:55;7906:6;:10;;:67;;;;:::i;:::-;:71;;:76;;;;:::i;:::-;7894:88;;8003:20;;;;;;;;;;;7999:508;;;8064:15;;;;;;;;;;;8050:30;;:2;:30;;;;:62;;;;;8098:13;;;;;;;;;;;8084:28;;:2;:28;;;;8050:62;8046:444;;;8248:12;8175:28;:39;8204:9;8175:39;;;;;;;;;;;;;;;;:85;8139:250;;;;;;;;;;;;:::i;:::-;;;;;;;;;8456:12;8414:28;:39;8443:9;8414:39;;;;;;;;;;;;;;;:54;;;;8046:444;7999:508;8535:13;;;;;;;;;;;8527:21;;:4;:21;;;:43;;;;;8552:18;;;;;;;;;;;8527:43;:71;;;;;8576:18;:22;8595:2;8576:22;;;;;;;;;;;;;;;;;;;;;;;;;8574:24;8527:71;8523:318;;;8669:15;8649:13;:17;8663:2;8649:17;;;;;;;;;;;;;;;;:35;8619:128;;;;;;;;;;;;:::i;:::-;;;;;;;;;8804:21;;;;;;;;;;;8786:39;;:15;:39;;;;:::i;:::-;8766:13;:17;8780:2;8766:17;;;;;;;;;;;;;;;:59;;;;8523:318;8869:13;;;;;;;;;;;8861:21;;:4;:21;;;:55;;;;;8900:15;;;;;;;;;;;8886:30;;:2;:30;;;;8861:55;:83;;;;;8922:18;:22;8941:2;8922:22;;;;;;;;;;;;;;;;;;;;;;;;;8920:24;8861:83;8857:313;;;8984:12;;8974:6;:22;;8966:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9079:14;;9069:6;9053:13;9063:2;9053:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9045:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9143:9;;:11;;;;;;;;;:::i;:::-;;;;;;8857:313;9195:13;;;;;;;;;;;9189:19;;:2;:19;;;:43;;;;;9227:4;9212:20;;:4;:20;;;;9189:43;9186:174;;;9265:79;9340:3;9265:70;9287:16;;9277:9;;:26;9276:58;;9319:15;;9276:58;;;9305:13;;9276:58;9265:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;9253:91;;9186:174;9376:28;9407:24;9425:4;9407:9;:24::i;:::-;9376:55;;9451:6;;;;;;;;;;;9450:7;:32;;;;;9469:13;;;;;;;;;;;9461:21;;:2;:21;;;9450:32;:47;;;;;9486:11;;;;;;;;;;9450:47;:89;;;;;9522:17;;9501:20;:38;9450:89;:121;;;;;9553:18;;9543:9;;:28;9450:121;9446:421;;;9592:67;9609:49;9613:6;9620:37;9624:20;9645:11;;9620:3;:37::i;:::-;9609:3;:49::i;:::-;9592:16;:67::i;:::-;9678:26;9707:21;9678:50;;9771:1;9750:18;:22;9747:105;;;9797:35;9810:21;9797:12;:35::i;:::-;9747:105;9573:294;9446:421;7831:2047;7793:2085;9903:1;9893:9;:11;9890:161;;;9943:39;9972:9;9943;:24;9961:4;9943:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;9918:9;:24;9936:4;9918:24;;;;;;;;;;;;;;;:64;;;;10023:4;10000:39;;10009:4;10000:39;;;10029:9;10000:39;;;;;;:::i;:::-;;;;;;;;9890:161;10077:27;10097:6;10077:9;:15;10087:4;10077:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10061:9;:15;10071:4;10061:15;;;;;;;;;;;;;;;:43;;;;10129:40;10147:21;10158:9;10147:6;:10;;:21;;;;:::i;:::-;10129:9;:13;10139:2;10129:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10115:9;:13;10125:2;10115:13;;;;;;;;;;;;;;;:54;;;;10200:2;10185:41;;10194:4;10185:41;;;10204:21;10215:9;10204:6;:10;;:21;;;;:::i;:::-;10185:41;;;;;;:::i;:::-;;;;;;;;7523:2711;7454:2780;;;:::o;1304:190::-;1390:7;1423:1;1418;:6;;1426:12;1410:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1450:9;1466:1;1462;:5;;;;:::i;:::-;1450:17;;1485:1;1478:8;;;1304:190;;;;;:::o;10350:483::-;5234:4;5225:6;;:13;;;;;;;;;;;;;;;;;;10428:21:::1;10466:1;10452:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10428:40;;10497:4;10479;10484:1;10479:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;10523:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10513:4;10518:1;10513:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;10556:62;10573:4;10588:15;;;;;;;;;;;10606:11;10556:8;:62::i;:::-;10629:15;;;;;;;;;;;:66;;;10710:11;10736:1;10752:4;10779;10799:15;10629:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10417:416;5270:5:::0;5261:6;;:14;;;;;;;;;;;;;;;;;;10350:483;:::o;11045:92::-;11102:10;;;;;;;;;;;:19;;:27;11122:6;11102:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11045:92;:::o;1502:246::-;1560:7;1589:1;1584;:6;1580:47;;1614:1;1607:8;;;;1580:47;1637:9;1653:1;1649;:5;;;;:::i;:::-;1637:17;;1682:1;1677;1673;:5;;;;:::i;:::-;:10;1665:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1739:1;1732:8;;;1502:246;;;;;:::o;1756:132::-;1814:7;1841:39;1845:1;1848;1841:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1834:46;;1756:132;;;;:::o;10244:98::-;10301:7;10328:1;10326;:3;10325:9;;10333:1;10325:9;;;10331:1;10325:9;10318:16;;10244:98;;;;:::o;973:179::-;1031:7;1051:9;1067:1;1063;:5;;;;:::i;:::-;1051:17;;1092:1;1087;:6;;1079:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1143:1;1136:8;;;973:179;;;;:::o;1160:136::-;1218:7;1245:43;1249:1;1252;1245:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1238:50;;1160:136;;;;:::o;1896:189::-;1982:7;2014:1;2010;:5;2017:12;2002:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2041:9;2057:1;2053;:5;;;;:::i;:::-;2041:17;;2076:1;2069:8;;;1896:189;;;;;:::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;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:116::-;4493:21;4508:5;4493:21;:::i;:::-;4486:5;4483:32;4473:60;;4529:1;4526;4519:12;4473:60;4423:116;:::o;4545:133::-;4588:5;4626:6;4613:20;4604:29;;4642:30;4666:5;4642:30;:::i;:::-;4545:133;;;;:::o;4684:86::-;4719:7;4759:4;4752:5;4748:16;4737:27;;4684:86;;;:::o;4776:118::-;4847:22;4863:5;4847:22;:::i;:::-;4840:5;4837:33;4827:61;;4884:1;4881;4874:12;4827:61;4776:118;:::o;4900:135::-;4944:5;4982:6;4969:20;4960:29;;4998:31;5023:5;4998:31;:::i;:::-;4900:135;;;;:::o;5041:464::-;5104:6;5112;5161:2;5149:9;5140:7;5136:23;5132:32;5129:119;;;5167:79;;:::i;:::-;5129:119;5287:1;5312:50;5354:7;5345:6;5334:9;5330:22;5312:50;:::i;:::-;5302:60;;5258:114;5411:2;5437:51;5480:7;5471:6;5460:9;5456:22;5437:51;:::i;:::-;5427:61;;5382:116;5041:464;;;;;:::o;5511:112::-;5594:22;5610:5;5594:22;:::i;:::-;5589:3;5582:35;5511:112;;:::o;5629:214::-;5718:4;5756:2;5745:9;5741:18;5733:26;;5769:67;5833:1;5822:9;5818:17;5809:6;5769:67;:::i;:::-;5629:214;;;;:::o;5849:117::-;5958:1;5955;5948:12;5972:180;6020:77;6017:1;6010:88;6117:4;6114:1;6107:15;6141:4;6138:1;6131:15;6158:281;6241:27;6263:4;6241:27;:::i;:::-;6233:6;6229:40;6371:6;6359:10;6356:22;6335:18;6323:10;6320:34;6317:62;6314:88;;;6382:18;;:::i;:::-;6314:88;6422:10;6418:2;6411:22;6201:238;6158:281;;:::o;6445:129::-;6479:6;6506:20;;:::i;:::-;6496:30;;6535:33;6563:4;6555:6;6535:33;:::i;:::-;6445:129;;;:::o;6580:311::-;6657:4;6747:18;6739:6;6736:30;6733:56;;;6769:18;;:::i;:::-;6733:56;6819:4;6811:6;6807:17;6799:25;;6879:4;6873;6869:15;6861:23;;6580:311;;;:::o;6897:117::-;7006:1;7003;6996:12;7037:710;7133:5;7158:81;7174:64;7231:6;7174:64;:::i;:::-;7158:81;:::i;:::-;7149:90;;7259:5;7288:6;7281:5;7274:21;7322:4;7315:5;7311:16;7304:23;;7375:4;7367:6;7363:17;7355:6;7351:30;7404:3;7396:6;7393:15;7390:122;;;7423:79;;:::i;:::-;7390:122;7538:6;7521:220;7555:6;7550:3;7547:15;7521:220;;;7630:3;7659:37;7692:3;7680:10;7659:37;:::i;:::-;7654:3;7647:50;7726:4;7721:3;7717:14;7710:21;;7597:144;7581:4;7576:3;7572:14;7565:21;;7521:220;;;7525:21;7139:608;;7037:710;;;;;:::o;7770:370::-;7841:5;7890:3;7883:4;7875:6;7871:17;7867:27;7857:122;;7898:79;;:::i;:::-;7857:122;8015:6;8002:20;8040:94;8130:3;8122:6;8115:4;8107:6;8103:17;8040:94;:::i;:::-;8031:103;;7847:293;7770:370;;;;:::o;8146:539::-;8230:6;8279:2;8267:9;8258:7;8254:23;8250:32;8247:119;;;8285:79;;:::i;:::-;8247:119;8433:1;8422:9;8418:17;8405:31;8463:18;8455:6;8452:30;8449:117;;;8485:79;;:::i;:::-;8449:117;8590:78;8660:7;8651:6;8640:9;8636:22;8590:78;:::i;:::-;8580:88;;8376:302;8146:539;;;;:::o;8691:329::-;8750:6;8799:2;8787:9;8778:7;8774:23;8770:32;8767:119;;;8805:79;;:::i;:::-;8767:119;8925:1;8950:53;8995:7;8986:6;8975:9;8971:22;8950:53;:::i;:::-;8940:63;;8896:117;8691:329;;;;:::o;9026:474::-;9094:6;9102;9151:2;9139:9;9130:7;9126:23;9122:32;9119:119;;;9157:79;;:::i;:::-;9119:119;9277:1;9302:53;9347:7;9338:6;9327:9;9323:22;9302:53;:::i;:::-;9292:63;;9248:117;9404:2;9430:53;9475:7;9466:6;9455:9;9451:22;9430:53;:::i;:::-;9420:63;;9375:118;9026:474;;;;;:::o;9506:118::-;9593:24;9611:5;9593:24;:::i;:::-;9588:3;9581:37;9506:118;;:::o;9630:222::-;9723:4;9761:2;9750:9;9746:18;9738:26;;9774:71;9842:1;9831:9;9827:17;9818:6;9774:71;:::i;:::-;9630:222;;;;:::o;9858:474::-;9926:6;9934;9983:2;9971:9;9962:7;9958:23;9954:32;9951:119;;;9989:79;;:::i;:::-;9951:119;10109:1;10134:53;10179:7;10170:6;10159:9;10155:22;10134:53;:::i;:::-;10124:63;;10080:117;10236:2;10262:53;10307:7;10298:6;10287:9;10283:22;10262:53;:::i;:::-;10252:63;;10207:118;9858:474;;;;;:::o;10338:180::-;10386:77;10383:1;10376:88;10483:4;10480:1;10473:15;10507:4;10504:1;10497:15;10524:102;10566:8;10613:5;10610:1;10606:13;10585:34;;10524:102;;;:::o;10632:848::-;10693:5;10700:4;10724:6;10715:15;;10748:5;10739:14;;10762:712;10783:1;10773:8;10770:15;10762:712;;;10878:4;10873:3;10869:14;10863:4;10860:24;10857:50;;;10887:18;;:::i;:::-;10857:50;10937:1;10927:8;10923:16;10920:451;;;11352:4;11345:5;11341:16;11332:25;;10920:451;11402:4;11396;11392:15;11384:23;;11432:32;11455:8;11432:32;:::i;:::-;11420:44;;10762:712;;;10632:848;;;;;;;:::o;11486:1073::-;11540:5;11731:8;11721:40;;11752:1;11743:10;;11754:5;;11721:40;11780:4;11770:36;;11797:1;11788:10;;11799:5;;11770:36;11866:4;11914:1;11909:27;;;;11950:1;11945:191;;;;11859:277;;11909:27;11927:1;11918:10;;11929:5;;;11945:191;11990:3;11980:8;11977:17;11974:43;;;11997:18;;:::i;:::-;11974:43;12046:8;12043:1;12039:16;12030:25;;12081:3;12074:5;12071:14;12068:40;;;12088:18;;:::i;:::-;12068:40;12121:5;;;11859:277;;12245:2;12235:8;12232:16;12226:3;12220:4;12217:13;12213:36;12195:2;12185:8;12182:16;12177:2;12171:4;12168:12;12164:35;12148:111;12145:246;;;12301:8;12295:4;12291:19;12282:28;;12336:3;12329:5;12326:14;12323:40;;;12343:18;;:::i;:::-;12323:40;12376:5;;12145:246;12416:42;12454:3;12444:8;12438:4;12435:1;12416:42;:::i;:::-;12401:57;;;;12490:4;12485:3;12481:14;12474:5;12471:25;12468:51;;;12499:18;;:::i;:::-;12468:51;12548:4;12541:5;12537:16;12528:25;;11486:1073;;;;;;:::o;12565:281::-;12623:5;12647:23;12665:4;12647:23;:::i;:::-;12639:31;;12691:25;12707:8;12691:25;:::i;:::-;12679:37;;12735:104;12772:66;12762:8;12756:4;12735:104;:::i;:::-;12726:113;;12565:281;;;;:::o;12852:410::-;12892:7;12915:20;12933:1;12915:20;:::i;:::-;12910:25;;12949:20;12967:1;12949:20;:::i;:::-;12944:25;;13004:1;13001;12997:9;13026:30;13044:11;13026:30;:::i;:::-;13015:41;;13205:1;13196:7;13192:15;13189:1;13186:22;13166:1;13159:9;13139:83;13116:139;;13235:18;;:::i;:::-;13116:139;12900:362;12852:410;;;;:::o;13268:182::-;13408:34;13404:1;13396:6;13392:14;13385:58;13268:182;:::o;13456:366::-;13598:3;13619:67;13683:2;13678:3;13619:67;:::i;:::-;13612:74;;13695:93;13784:3;13695:93;:::i;:::-;13813:2;13808:3;13804:12;13797:19;;13456:366;;;:::o;13828:419::-;13994:4;14032:2;14021:9;14017:18;14009:26;;14081:9;14075:4;14071:20;14067:1;14056:9;14052:17;14045:47;14109:131;14235:4;14109:131;:::i;:::-;14101:139;;13828:419;;;:::o;14253:180::-;14301:77;14298:1;14291:88;14398:4;14395:1;14388:15;14422:4;14419:1;14412:15;14439:233;14478:3;14501:24;14519:5;14501:24;:::i;:::-;14492:33;;14547:66;14540:5;14537:77;14534:103;;14617:18;;:::i;:::-;14534:103;14664:1;14657:5;14653:13;14646:20;;14439:233;;;:::o;14678:173::-;14818:25;14814:1;14806:6;14802:14;14795:49;14678:173;:::o;14857:366::-;14999:3;15020:67;15084:2;15079:3;15020:67;:::i;:::-;15013:74;;15096:93;15185:3;15096:93;:::i;:::-;15214:2;15209:3;15205:12;15198:19;;14857:366;;;:::o;15229:419::-;15395:4;15433:2;15422:9;15418:18;15410:26;;15482:9;15476:4;15472:20;15468:1;15457:9;15453:17;15446:47;15510:131;15636:4;15510:131;:::i;:::-;15502:139;;15229:419;;;:::o;15654:143::-;15711:5;15742:6;15736:13;15727:22;;15758:33;15785:5;15758:33;:::i;:::-;15654:143;;;;:::o;15803:351::-;15873:6;15922:2;15910:9;15901:7;15897:23;15893:32;15890:119;;;15928:79;;:::i;:::-;15890:119;16048:1;16073:64;16129:7;16120:6;16109:9;16105:22;16073:64;:::i;:::-;16063:74;;16019:128;15803:351;;;;:::o;16160:332::-;16281:4;16319:2;16308:9;16304:18;16296:26;;16332:71;16400:1;16389:9;16385:17;16376:6;16332:71;:::i;:::-;16413:72;16481:2;16470:9;16466:18;16457:6;16413:72;:::i;:::-;16160:332;;;;;:::o;16498:85::-;16543:7;16572:5;16561:16;;16498:85;;;:::o;16589:60::-;16617:3;16638:5;16631:12;;16589:60;;;:::o;16655:158::-;16713:9;16746:61;16764:42;16773:32;16799:5;16773:32;:::i;:::-;16764:42;:::i;:::-;16746:61;:::i;:::-;16733:74;;16655:158;;;:::o;16819:147::-;16914:45;16953:5;16914:45;:::i;:::-;16909:3;16902:58;16819:147;;:::o;16972:807::-;17221:4;17259:3;17248:9;17244:19;17236:27;;17273:71;17341:1;17330:9;17326:17;17317:6;17273:71;:::i;:::-;17354:72;17422:2;17411:9;17407:18;17398:6;17354:72;:::i;:::-;17436:80;17512:2;17501:9;17497:18;17488:6;17436:80;:::i;:::-;17526;17602:2;17591:9;17587:18;17578:6;17526:80;:::i;:::-;17616:73;17684:3;17673:9;17669:19;17660:6;17616:73;:::i;:::-;17699;17767:3;17756:9;17752:19;17743:6;17699:73;:::i;:::-;16972:807;;;;;;;;;:::o;17785:143::-;17842:5;17873:6;17867:13;17858:22;;17889:33;17916:5;17889:33;:::i;:::-;17785:143;;;;:::o;17934:663::-;18022:6;18030;18038;18087:2;18075:9;18066:7;18062:23;18058:32;18055:119;;;18093:79;;:::i;:::-;18055:119;18213:1;18238:64;18294:7;18285:6;18274:9;18270:22;18238:64;:::i;:::-;18228:74;;18184:128;18351:2;18377:64;18433:7;18424:6;18413:9;18409:22;18377:64;:::i;:::-;18367:74;;18322:129;18490:2;18516:64;18572:7;18563:6;18552:9;18548:22;18516:64;:::i;:::-;18506:74;;18461:129;17934:663;;;;;:::o;18603:332::-;18724:4;18762:2;18751:9;18747:18;18739:26;;18775:71;18843:1;18832:9;18828:17;18819:6;18775:71;:::i;:::-;18856:72;18924:2;18913:9;18909:18;18900:6;18856:72;:::i;:::-;18603:332;;;;;:::o;18941:137::-;18995:5;19026:6;19020:13;19011:22;;19042:30;19066:5;19042:30;:::i;:::-;18941:137;;;;:::o;19084:345::-;19151:6;19200:2;19188:9;19179:7;19175:23;19171:32;19168:119;;;19206:79;;:::i;:::-;19168:119;19326:1;19351:61;19404:7;19395:6;19384:9;19380:22;19351:61;:::i;:::-;19341:71;;19297:125;19084:345;;;;:::o;19435:223::-;19575:34;19571:1;19563:6;19559:14;19552:58;19644:6;19639:2;19631:6;19627:15;19620:31;19435:223;:::o;19664:366::-;19806:3;19827:67;19891:2;19886:3;19827:67;:::i;:::-;19820:74;;19903:93;19992:3;19903:93;:::i;:::-;20021:2;20016:3;20012:12;20005:19;;19664:366;;;:::o;20036:419::-;20202:4;20240:2;20229:9;20225:18;20217:26;;20289:9;20283:4;20279:20;20275:1;20264:9;20260:17;20253:47;20317:131;20443:4;20317:131;:::i;:::-;20309:139;;20036:419;;;:::o;20461:221::-;20601:34;20597:1;20589:6;20585:14;20578:58;20670:4;20665:2;20657:6;20653:15;20646:29;20461:221;:::o;20688:366::-;20830:3;20851:67;20915:2;20910:3;20851:67;:::i;:::-;20844:74;;20927:93;21016:3;20927:93;:::i;:::-;21045:2;21040:3;21036:12;21029:19;;20688:366;;;:::o;21060:419::-;21226:4;21264:2;21253:9;21249:18;21241:26;;21313:9;21307:4;21303:20;21299:1;21288:9;21284:17;21277:47;21341:131;21467:4;21341:131;:::i;:::-;21333:139;;21060:419;;;:::o;21485:224::-;21625:34;21621:1;21613:6;21609:14;21602:58;21694:7;21689:2;21681:6;21677:15;21670:32;21485:224;:::o;21715:366::-;21857:3;21878:67;21942:2;21937:3;21878:67;:::i;:::-;21871:74;;21954:93;22043:3;21954:93;:::i;:::-;22072:2;22067:3;22063:12;22056:19;;21715:366;;;:::o;22087:419::-;22253:4;22291:2;22280:9;22276:18;22268:26;;22340:9;22334:4;22330:20;22326:1;22315:9;22311:17;22304:47;22368:131;22494:4;22368:131;:::i;:::-;22360:139;;22087:419;;;:::o;22512:222::-;22652:34;22648:1;22640:6;22636:14;22629:58;22721:5;22716:2;22708:6;22704:15;22697:30;22512:222;:::o;22740:366::-;22882:3;22903:67;22967:2;22962:3;22903:67;:::i;:::-;22896:74;;22979:93;23068:3;22979:93;:::i;:::-;23097:2;23092:3;23088:12;23081:19;;22740:366;;;:::o;23112:419::-;23278:4;23316:2;23305:9;23301:18;23293:26;;23365:9;23359:4;23355:20;23351:1;23340:9;23336:17;23329:47;23393:131;23519:4;23393:131;:::i;:::-;23385:139;;23112:419;;;:::o;23537:228::-;23677:34;23673:1;23665:6;23661:14;23654:58;23746:11;23741:2;23733:6;23729:15;23722:36;23537:228;:::o;23771:366::-;23913:3;23934:67;23998:2;23993:3;23934:67;:::i;:::-;23927:74;;24010:93;24099:3;24010:93;:::i;:::-;24128:2;24123:3;24119:12;24112:19;;23771:366;;;:::o;24143:419::-;24309:4;24347:2;24336:9;24332:18;24324:26;;24396:9;24390:4;24386:20;24382:1;24371:9;24367:17;24360:47;24424:131;24550:4;24424:131;:::i;:::-;24416:139;;24143:419;;;:::o;24568:297::-;24708:34;24704:1;24696:6;24692:14;24685:58;24777:34;24772:2;24764:6;24760:15;24753:59;24846:11;24841:2;24833:6;24829:15;24822:36;24568:297;:::o;24871:366::-;25013:3;25034:67;25098:2;25093:3;25034:67;:::i;:::-;25027:74;;25110:93;25199:3;25110:93;:::i;:::-;25228:2;25223:3;25219:12;25212:19;;24871:366;;;:::o;25243:419::-;25409:4;25447:2;25436:9;25432:18;25424:26;;25496:9;25490:4;25486:20;25482:1;25471:9;25467:17;25460:47;25524:131;25650:4;25524:131;:::i;:::-;25516:139;;25243:419;;;:::o;25668:169::-;25808:21;25804:1;25796:6;25792:14;25785:45;25668:169;:::o;25843:366::-;25985:3;26006:67;26070:2;26065:3;26006:67;:::i;:::-;25999:74;;26082:93;26171:3;26082:93;:::i;:::-;26200:2;26195:3;26191:12;26184:19;;25843:366;;;:::o;26215:419::-;26381:4;26419:2;26408:9;26404:18;26396:26;;26468:9;26462:4;26458:20;26454:1;26443:9;26439:17;26432:47;26496:131;26622:4;26496:131;:::i;:::-;26488:139;;26215:419;;;:::o;26640:191::-;26680:3;26699:20;26717:1;26699:20;:::i;:::-;26694:25;;26733:20;26751:1;26733:20;:::i;:::-;26728:25;;26776:1;26773;26769:9;26762:16;;26797:3;26794:1;26791:10;26788:36;;;26804:18;;:::i;:::-;26788:36;26640:191;;;;:::o;26837:175::-;26977:27;26973:1;26965:6;26961:14;26954:51;26837:175;:::o;27018:366::-;27160:3;27181:67;27245:2;27240:3;27181:67;:::i;:::-;27174:74;;27257:93;27346:3;27257:93;:::i;:::-;27375:2;27370:3;27366:12;27359:19;;27018:366;;;:::o;27390:419::-;27556:4;27594:2;27583:9;27579:18;27571:26;;27643:9;27637:4;27633:20;27629:1;27618:9;27614:17;27607:47;27671:131;27797:4;27671:131;:::i;:::-;27663:139;;27390:419;;;:::o;27815:176::-;27955:28;27951:1;27943:6;27939:14;27932:52;27815:176;:::o;27997:366::-;28139:3;28160:67;28224:2;28219:3;28160:67;:::i;:::-;28153:74;;28236:93;28325:3;28236:93;:::i;:::-;28354:2;28349:3;28345:12;28338:19;;27997:366;;;:::o;28369:419::-;28535:4;28573:2;28562:9;28558:18;28550:26;;28622:9;28616:4;28612:20;28608:1;28597:9;28593:17;28586:47;28650:131;28776:4;28650:131;:::i;:::-;28642:139;;28369:419;;;:::o;28794:194::-;28834:4;28854:20;28872:1;28854:20;:::i;:::-;28849:25;;28888:20;28906:1;28888:20;:::i;:::-;28883:25;;28932:1;28929;28925:9;28917:17;;28956:1;28950:4;28947:11;28944:37;;;28961:18;;:::i;:::-;28944:37;28794:194;;;;:::o;28994:114::-;29061:6;29095:5;29089:12;29079:22;;28994:114;;;:::o;29114:184::-;29213:11;29247:6;29242:3;29235:19;29287:4;29282:3;29278:14;29263:29;;29114:184;;;;:::o;29304:132::-;29371:4;29394:3;29386:11;;29424:4;29419:3;29415:14;29407:22;;29304:132;;;:::o;29442:108::-;29519:24;29537:5;29519:24;:::i;:::-;29514:3;29507:37;29442:108;;:::o;29556:179::-;29625:10;29646:46;29688:3;29680:6;29646:46;:::i;:::-;29724:4;29719:3;29715:14;29701:28;;29556:179;;;;:::o;29741:113::-;29811:4;29843;29838:3;29834:14;29826:22;;29741:113;;;:::o;29890:732::-;30009:3;30038:54;30086:5;30038:54;:::i;:::-;30108:86;30187:6;30182:3;30108:86;:::i;:::-;30101:93;;30218:56;30268:5;30218:56;:::i;:::-;30297:7;30328:1;30313:284;30338:6;30335:1;30332:13;30313:284;;;30414:6;30408:13;30441:63;30500:3;30485:13;30441:63;:::i;:::-;30434:70;;30527:60;30580:6;30527:60;:::i;:::-;30517:70;;30373:224;30360:1;30357;30353:9;30348:14;;30313:284;;;30317:14;30613:3;30606:10;;30014:608;;;29890:732;;;;:::o;30628:831::-;30891:4;30929:3;30918:9;30914:19;30906:27;;30943:71;31011:1;31000:9;30996:17;30987:6;30943:71;:::i;:::-;31024:80;31100:2;31089:9;31085:18;31076:6;31024:80;:::i;:::-;31151:9;31145:4;31141:20;31136:2;31125:9;31121:18;31114:48;31179:108;31282:4;31273:6;31179:108;:::i;:::-;31171:116;;31297:72;31365:2;31354:9;31350:18;31341:6;31297:72;:::i;:::-;31379:73;31447:3;31436:9;31432:19;31423:6;31379:73;:::i;:::-;30628:831;;;;;;;;:::o;31465:180::-;31513:77;31510:1;31503:88;31610:4;31607:1;31600:15;31634:4;31631:1;31624:15;31651:185;31691:1;31708:20;31726:1;31708:20;:::i;:::-;31703:25;;31742:20;31760:1;31742:20;:::i;:::-;31737:25;;31781:1;31771:35;;31786:18;;:::i;:::-;31771:35;31828:1;31825;31821:9;31816:14;;31651:185;;;;:::o;31842:220::-;31982:34;31978:1;31970:6;31966:14;31959:58;32051:3;32046:2;32038:6;32034:15;32027:28;31842:220;:::o;32068:366::-;32210:3;32231:67;32295:2;32290:3;32231:67;:::i;:::-;32224:74;;32307:93;32396:3;32307:93;:::i;:::-;32425:2;32420:3;32416:12;32409:19;;32068:366;;;:::o;32440:419::-;32606:4;32644:2;32633:9;32629:18;32621:26;;32693:9;32687:4;32683:20;32679:1;32668:9;32664:17;32657:47;32721:131;32847:4;32721:131;:::i;:::-;32713:139;;32440:419;;;:::o;32865:177::-;33005:29;33001:1;32993:6;32989:14;32982:53;32865:177;:::o;33048:366::-;33190:3;33211:67;33275:2;33270:3;33211:67;:::i;:::-;33204:74;;33287:93;33376:3;33287:93;:::i;:::-;33405:2;33400:3;33396:12;33389:19;;33048:366;;;:::o;33420:419::-;33586:4;33624:2;33613:9;33609:18;33601:26;;33673:9;33667:4;33663:20;33659:1;33648:9;33644:17;33637:47;33701:131;33827:4;33701:131;:::i;:::-;33693:139;;33420:419;;;:::o

Swarm Source

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