ETH Price: $2,629.87 (-0.87%)

Token

Polaris Dawn (Polaris)
 

Overview

Max Total Supply

420,690,000,000 Polaris

Holders

943

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Filtered by Token Holder
yamster.eth
Balance
7,131,118,653.862966943 Polaris

Value
$0.00
0xd81aaEe1205BFB271BF9eb2da4D596316D9Ea0EC
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:
Polaris

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-08-26
*/

// SPDX-License-Identifier: MIT

/*

Telegram: https://t.me/PolarisDawnERC
Twitter : https://x.com/PolarisDawnERC
*/

pragma solidity 0.8.23;

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

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

interface 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 Polaris is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private isExile;
    mapping (address => bool) public marketPair;
    mapping (uint256 => uint256) private perBuyCount;
    address payable private _taxWallet;
    uint256 private firstBlock = 0;

    uint256 private _initialBuyTax=12;
    uint256 private _initialSellTax=12;
    uint256 private _finalBuyTax=0;
    uint256 private _finalSellTax=0;

    uint256 private _reduceBuyTaxAt=10;

    uint256 private _reduceSellTaxAt=10;
    uint256 private _preventSwapBefore=10;
    uint256 private _buyCount=0;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"Polaris Dawn";
    string private constant _symbol = unicode"Polaris";
    uint256 public _maxTxAmount =   10517250000 * 10**_decimals;
    uint256 public _maxWalletSize = 10517250000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 1 * 10**_decimals;
    uint256 public _maxTaxSwap= 4206900000 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    bool private tradingOpen;
    uint256 public casellAllowed = 3;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool public caCatalyst = true;

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

    constructor () {

        _taxWallet = payable(0x466bAb6005258D496fF6cE7F673Bd1B5b827C090);
        _balances[_msgSender()] = _tTotal;
        isExile[owner()] = true;
        isExile[address(this)] = true;
        isExile[address(uniswapV2Pair)] = 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 setMarketPair(address addr) public onlyOwner {
        marketPair[addr] = true;
    }

    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()) {
            taxAmount = amount.mul((_buyCount> _reduceBuyTaxAt)? _finalBuyTax: _initialBuyTax).div(100);

            if(block.number == firstBlock){
               require(perBuyCount[block.number] < 70, "Exceeds buys on the first block.");
               perBuyCount[block.number]++;
            }

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

            if (!marketPair[to] && ! isExile[to]) {
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
            }

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

	    if (!marketPair[from] && !marketPair[to] && from!= address(this) ) {
                taxAmount = 0;
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (caCatalyst && !inSwap && marketPair[to] && swapEnabled && contractTokenBalance>_taxSwapThreshold && _buyCount>_preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < casellAllowed, "CA balance sell");
                swapTokensForEth(min(amount,min(contractTokenBalance,_maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if(contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }

            else if(!inSwap && marketPair[to] && 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 setMaxTaxSwap(bool enabled, uint256 amount) external onlyOwner {
        swapEnabled = enabled;
        _maxTaxSwap = amount;
    }

    function setcasellAllowed(uint256 amount) external onlyOwner {
        casellAllowed = amount;
    }

    function setcaCatalyst(bool _status) external onlyOwner {
        caCatalyst = _status;
    }

    function reclaimETH() external onlyOwner {
        payable(_taxWallet).transfer(address(this).balance);
    }

    function reclaimERC20tokens(address _tokenAddr, uint _amount) external onlyOwner {
        IERC20(_tokenAddr).transfer(_taxWallet, _amount);
    }

    function setFeeWallet(address newTaxWallet) external onlyOwner {
        _taxWallet = payable(newTaxWallet);
    }

    function isNotRestricted() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

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

    function enableTrading() 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());
        marketPair[address(uniswapV2Pair)] = true;
        isExile[address(uniswapV2Pair)] = true;
        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;
        firstBlock = block.number;
    }

    receive() external payable {}
}

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":"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":"caCatalyst","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"casellAllowed","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isNotRestricted","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"marketPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"reclaimERC20tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reclaimETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newTaxWallet","type":"address"}],"name":"setFeeWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setMarketPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTaxSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"}],"name":"setcaCatalyst","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setcasellAllowed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040525f600755600c600855600c6009555f600a555f600b55600a600c55600a600d55600a600e555f600f555f6010555f6011556009600a62000045919062000623565b640272e07fd062000057919062000673565b6012556009600a6200006a919062000623565b640272e07fd06200007c919062000673565b6013556009600a6200008f919062000623565b60016200009d919062000673565b6014556009600a620000b0919062000623565b63fac03320620000c1919062000673565b60155560036018555f60195f6101000a81548160ff0219169083151502179055505f601960016101000a81548160ff0219169083151502179055506001601960026101000a81548160ff02191690831515021790555034801562000123575f80fd5b505f620001356200046360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35073466bab6005258d496ff6ce7f673bd1b5b827c09060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a62000235919062000623565b6461f313f88062000247919062000673565b60015f6200025a6200046360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f620002ac6200046a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550620003d66200046360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a62000434919062000623565b6461f313f88062000446919062000673565b604051620004559190620006ce565b60405180910390a3620006e9565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200051b57808604811115620004f357620004f262000491565b5b6001851615620005035780820291505b80810290506200051385620004be565b9450620004d3565b94509492505050565b5f8262000535576001905062000607565b8162000544575f905062000607565b81600181146200055d576002811462000568576200059e565b600191505062000607565b60ff8411156200057d576200057c62000491565b5b8360020a91508482111562000597576200059662000491565b5b5062000607565b5060208310610133831016604e8410600b8410161715620005d85782820a905083811115620005d257620005d162000491565b5b62000607565b620005e78484846001620004ca565b9250905081840481111562000601576200060062000491565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f6200062f826200060e565b91506200063c8362000617565b92506200066b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000524565b905092915050565b5f6200067f826200060e565b91506200068c836200060e565b92508282026200069c816200060e565b91508282048414831517620006b657620006b562000491565b5b5092915050565b620006c8816200060e565b82525050565b5f602082019050620006e35f830184620006bd565b92915050565b613de180620006f75f395ff3fe6080604052600436106101c5575f3560e01c80637d1db4a5116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e146105d8578063e68d0b0514610614578063f2fde38b1461063c578063f5b3c3bf14610664576101cc565b8063a9059cbb14610520578063bf474bed1461055c578063c4e2b61914610586578063d45cce65146105ae576101cc565b80638f9a55c0116100d05780638f9a55c01461047c57806390b60549146104a657806390d49b9d146104ce57806395d89b41146104f6576101cc565b80637d1db4a5146104125780638a8c523c1461043c5780638da5cb5b14610452576101cc565b806323b872dd1161016357806353bc13dc1161013d57806353bc13dc146103705780636e4636671461039857806370a08231146103c0578063715018a6146103fc576101cc565b806323b872dd146102e0578063313ce5671461031c57806349bd5a5e14610346576101cc565b80630f144a481161019f5780630f144a481461024c5780630faee56f1461026257806310c435aa1461028c57806318160ddd146102b6576101cc565b806301ab6ee5146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106a0565b005b3480156101f1575f80fd5b506101fa6107d2565b6040516102079190612d08565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612db9565b61080f565b6040516102439190612e11565b60405180910390f35b348015610257575f80fd5b5061026061082c565b005b34801561026d575f80fd5b50610276610927565b6040516102839190612e39565b60405180910390f35b348015610297575f80fd5b506102a061092d565b6040516102ad9190612e39565b60405180910390f35b3480156102c1575f80fd5b506102ca610933565b6040516102d79190612e39565b60405180910390f35b3480156102eb575f80fd5b5061030660048036038101906103019190612e52565b610957565b6040516103139190612e11565b60405180910390f35b348015610327575f80fd5b50610330610a2b565b60405161033d9190612ebd565b60405180910390f35b348015610351575f80fd5b5061035a610a33565b6040516103679190612ee5565b60405180910390f35b34801561037b575f80fd5b5061039660048036038101906103919190612efe565b610a58565b005b3480156103a3575f80fd5b506103be60048036038101906103b99190612f29565b610b44565b005b3480156103cb575f80fd5b506103e660048036038101906103e19190612efe565b610be2565b6040516103f39190612e39565b60405180910390f35b348015610407575f80fd5b50610410610c28565b005b34801561041d575f80fd5b50610426610d76565b6040516104339190612e39565b60405180910390f35b348015610447575f80fd5b50610450610d7c565b005b34801561045d575f80fd5b50610466611392565b6040516104739190612ee5565b60405180910390f35b348015610487575f80fd5b506104906113b9565b60405161049d9190612e39565b60405180910390f35b3480156104b1575f80fd5b506104cc60048036038101906104c79190612f7e565b6113bf565b005b3480156104d9575f80fd5b506104f460048036038101906104ef9190612efe565b611470565b005b348015610501575f80fd5b5061050a611547565b6040516105179190612d08565b60405180910390f35b34801561052b575f80fd5b5061054660048036038101906105419190612db9565b611584565b6040516105539190612e11565b60405180910390f35b348015610567575f80fd5b506105706115a1565b60405161057d9190612e39565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a79190612db9565b6115a7565b005b3480156105b9575f80fd5b506105c26116dc565b6040516105cf9190612e11565b60405180910390f35b3480156105e3575f80fd5b506105fe60048036038101906105f99190612fa9565b6116ef565b60405161060b9190612e39565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190612fe7565b611771565b005b348015610647575f80fd5b50610662600480360381019061065d9190612efe565b61182a565b005b34801561066f575f80fd5b5061068a60048036038101906106859190612efe565b6119e7565b6040516106979190612e11565b60405180910390f35b6106a8611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b9061306f565b60405180910390fd5b6009600a61074291906131e9565b6461f313f8806107529190613233565b6012819055506009600a61076691906131e9565b6461f313f8806107769190613233565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107ab91906131e9565b6461f313f8806107bb9190613233565b6040516107c89190612e39565b60405180910390a1565b60606040518060400160405280600c81526020017f506f6c61726973204461776e0000000000000000000000000000000000000000815250905090565b5f61082261081b611a04565b8484611a0b565b6001905092915050565b610834611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b79061306f565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610924573d5f803e3d5ffd5b50565b60155481565b60185481565b5f6009600a61094291906131e9565b6461f313f8806109529190613233565b905090565b5f610963848484611bce565b610a208461096f611a04565b610a1b85604051806060016040528060288152602001613d846028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109d2611a04565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276c9092919063ffffffff16565b611a0b565b600190509392505050565b5f6009905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a60611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae39061306f565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b4c611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf9061306f565b60405180910390fd5b8060188190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c30611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb39061306f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b610d84611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e079061306f565b60405180910390fd5b601760149054906101000a900460ff1615610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e57906132be565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610efd3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ee891906131e9565b6461f313f880610ef89190613233565b611a0b565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8b91906132f0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103591906132f0565b6040518363ffffffff1660e01b815260040161105292919061331b565b6020604051808303815f875af115801561106e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109291906132f0565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061120530610be2565b5f8061120f611392565b426040518863ffffffff1660e01b815260040161123196959493929190613384565b60606040518083038185885af115801561124d573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061127291906133f7565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611312929190613447565b6020604051808303815f875af115801561132e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113529190613482565b506001601960016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6113c7611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a9061306f565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b611478611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb9061306f565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600781526020017f506f6c6172697300000000000000000000000000000000000000000000000000815250905090565b5f611597611590611a04565b8484611bce565b6001905092915050565b60145481565b6115af611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116329061306f565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016116979291906134ff565b6020604051808303815f875af11580156116b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d79190613482565b505050565b601960029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611779611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc9061306f565b60405180910390fd5b81601960016101000a81548160ff021916908315150217905550806015819055505050565b611832611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b59061306f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390613596565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613624565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade906136b2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bc19190612e39565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3390613740565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906137ce565b60405180910390fd5b5f8111611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce39061385c565b60405180910390fd5b5f611cf5611392565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d635750611d33611392565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124bc57611da46064611d96600c54600f5411611d8357600854611d87565b600a545b856127ce90919063ffffffff16565b61284590919063ffffffff16565b90506007544303611e2a57604660055f4381526020019081526020015f205410611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa906138c4565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e24906138e2565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ecd575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f20575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fda57601254821115611f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6190613973565b60405180910390fd5b60135482611f7785610be2565b611f819190613991565b1115611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb990613a0e565b60405180910390fd5b600f5f815480929190611fd4906138e2565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612078575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120d6576013548261208a85610be2565b6120949190613991565b11156120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90613a0e565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561215857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561219c57612199606461218b600d54600f54116121785760095461217c565b600b545b856127ce90919063ffffffff16565b61284590919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561223a575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561227257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561227b575f90505b5f61228530610be2565b9050601960029054906101000a900460ff1680156122af575060195f9054906101000a900460ff16155b8015612301575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156123195750601960019054906101000a900460ff165b8015612326575060145481115b80156123355750600e54600f54115b156123e95760115443111561234c575f6010819055505b60185460105410612392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238990613a76565b60405180910390fd5b6123af6123aa846123a58460155461288e565b61288e565b6128a6565b5f4790505f8111156123c5576123c447612b0f565b5b60105f8154809291906123d7906138e2565b919050555043601181905550506124ba565b60195f9054906101000a900460ff1615801561244b575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124635750601960019054906101000a900460ff165b8015612470575060145481115b801561247f5750600e54600f54115b156124b9576124a161249c846124978460155461288e565b61288e565b6128a6565b5f4790505f8111156124b7576124b647612b0f565b5b505b5b505b5f8111156125bb576125148160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125b29190612e39565b60405180910390a35b61260b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bd490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126ae6126628284612bd490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127518486612bd490919063ffffffff16565b60405161275e9190612e39565b60405180910390a350505050565b5f8383111582906127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa9190612d08565b60405180910390fd5b505f83856127c19190613a94565b9050809150509392505050565b5f8083036127de575f905061283f565b5f82846127eb9190613233565b90508284826127fa9190613af4565b1461283a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283190613b94565b60405180910390fd5b809150505b92915050565b5f61288683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c1d565b905092915050565b5f81831161289c578261289e565b815b905092915050565b600160195f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156128dc576128db613bb2565b5b60405190808252806020026020018201604052801561290a5781602001602082028036833780820191505090505b50905030815f8151811061292157612920613bdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e991906132f0565b816001815181106129fd576129fc613bdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a633060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a0b565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612ac5959493929190613cc3565b5f604051808303815f87803b158015612adc575f80fd5b505af1158015612aee573d5f803e3d5ffd5b50505050505f60195f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612b73573d5f803e3d5ffd5b5050565b5f808284612b859190613991565b905083811015612bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc190613d65565b60405180910390fd5b8091505092915050565b5f612c1583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061276c565b905092915050565b5f8083118290612c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5a9190612d08565b60405180910390fd5b505f8385612c719190613af4565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612cb5578082015181840152602081019050612c9a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612cda82612c7e565b612ce48185612c88565b9350612cf4818560208601612c98565b612cfd81612cc0565b840191505092915050565b5f6020820190508181035f830152612d208184612cd0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d5582612d2c565b9050919050565b612d6581612d4b565b8114612d6f575f80fd5b50565b5f81359050612d8081612d5c565b92915050565b5f819050919050565b612d9881612d86565b8114612da2575f80fd5b50565b5f81359050612db381612d8f565b92915050565b5f8060408385031215612dcf57612dce612d28565b5b5f612ddc85828601612d72565b9250506020612ded85828601612da5565b9150509250929050565b5f8115159050919050565b612e0b81612df7565b82525050565b5f602082019050612e245f830184612e02565b92915050565b612e3381612d86565b82525050565b5f602082019050612e4c5f830184612e2a565b92915050565b5f805f60608486031215612e6957612e68612d28565b5b5f612e7686828701612d72565b9350506020612e8786828701612d72565b9250506040612e9886828701612da5565b9150509250925092565b5f60ff82169050919050565b612eb781612ea2565b82525050565b5f602082019050612ed05f830184612eae565b92915050565b612edf81612d4b565b82525050565b5f602082019050612ef85f830184612ed6565b92915050565b5f60208284031215612f1357612f12612d28565b5b5f612f2084828501612d72565b91505092915050565b5f60208284031215612f3e57612f3d612d28565b5b5f612f4b84828501612da5565b91505092915050565b612f5d81612df7565b8114612f67575f80fd5b50565b5f81359050612f7881612f54565b92915050565b5f60208284031215612f9357612f92612d28565b5b5f612fa084828501612f6a565b91505092915050565b5f8060408385031215612fbf57612fbe612d28565b5b5f612fcc85828601612d72565b9250506020612fdd85828601612d72565b9150509250929050565b5f8060408385031215612ffd57612ffc612d28565b5b5f61300a85828601612f6a565b925050602061301b85828601612da5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613059602083612c88565b915061306482613025565b602082019050919050565b5f6020820190508181035f8301526130868161304d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561310f578086048111156130eb576130ea61308d565b5b60018516156130fa5780820291505b8081029050613108856130ba565b94506130cf565b94509492505050565b5f8261312757600190506131e2565b81613134575f90506131e2565b816001811461314a576002811461315457613183565b60019150506131e2565b60ff8411156131665761316561308d565b5b8360020a91508482111561317d5761317c61308d565b5b506131e2565b5060208310610133831016604e8410600b84101617156131b85782820a9050838111156131b3576131b261308d565b5b6131e2565b6131c584848460016130c6565b925090508184048111156131dc576131db61308d565b5b81810290505b9392505050565b5f6131f382612d86565b91506131fe83612ea2565b925061322b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613118565b905092915050565b5f61323d82612d86565b915061324883612d86565b925082820261325681612d86565b9150828204841483151761326d5761326c61308d565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132a8601783612c88565b91506132b382613274565b602082019050919050565b5f6020820190508181035f8301526132d58161329c565b9050919050565b5f815190506132ea81612d5c565b92915050565b5f6020828403121561330557613304612d28565b5b5f613312848285016132dc565b91505092915050565b5f60408201905061332e5f830185612ed6565b61333b6020830184612ed6565b9392505050565b5f819050919050565b5f819050919050565b5f61336e61336961336484613342565b61334b565b612d86565b9050919050565b61337e81613354565b82525050565b5f60c0820190506133975f830189612ed6565b6133a46020830188612e2a565b6133b16040830187613375565b6133be6060830186613375565b6133cb6080830185612ed6565b6133d860a0830184612e2a565b979650505050505050565b5f815190506133f181612d8f565b92915050565b5f805f6060848603121561340e5761340d612d28565b5b5f61341b868287016133e3565b935050602061342c868287016133e3565b925050604061343d868287016133e3565b9150509250925092565b5f60408201905061345a5f830185612ed6565b6134676020830184612e2a565b9392505050565b5f8151905061347c81612f54565b92915050565b5f6020828403121561349757613496612d28565b5b5f6134a48482850161346e565b91505092915050565b5f6134c76134c26134bd84612d2c565b61334b565b612d2c565b9050919050565b5f6134d8826134ad565b9050919050565b5f6134e9826134ce565b9050919050565b6134f9816134df565b82525050565b5f6040820190506135125f8301856134f0565b61351f6020830184612e2a565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613580602683612c88565b915061358b82613526565b604082019050919050565b5f6020820190508181035f8301526135ad81613574565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61360e602483612c88565b9150613619826135b4565b604082019050919050565b5f6020820190508181035f83015261363b81613602565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61369c602283612c88565b91506136a782613642565b604082019050919050565b5f6020820190508181035f8301526136c981613690565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61372a602583612c88565b9150613735826136d0565b604082019050919050565b5f6020820190508181035f8301526137578161371e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6137b8602383612c88565b91506137c38261375e565b604082019050919050565b5f6020820190508181035f8301526137e5816137ac565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613846602983612c88565b9150613851826137ec565b604082019050919050565b5f6020820190508181035f8301526138738161383a565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f6138ae602083612c88565b91506138b98261387a565b602082019050919050565b5f6020820190508181035f8301526138db816138a2565b9050919050565b5f6138ec82612d86565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361391e5761391d61308d565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61395d601983612c88565b915061396882613929565b602082019050919050565b5f6020820190508181035f83015261398a81613951565b9050919050565b5f61399b82612d86565b91506139a683612d86565b92508282019050808211156139be576139bd61308d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6139f8601a83612c88565b9150613a03826139c4565b602082019050919050565b5f6020820190508181035f830152613a25816139ec565b9050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f613a60600f83612c88565b9150613a6b82613a2c565b602082019050919050565b5f6020820190508181035f830152613a8d81613a54565b9050919050565b5f613a9e82612d86565b9150613aa983612d86565b9250828203905081811115613ac157613ac061308d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613afe82612d86565b9150613b0983612d86565b925082613b1957613b18613ac7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b7e602183612c88565b9150613b8982613b24565b604082019050919050565b5f6020820190508181035f830152613bab81613b72565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c3e81612d4b565b82525050565b5f613c4f8383613c35565b60208301905092915050565b5f602082019050919050565b5f613c7182613c0c565b613c7b8185613c16565b9350613c8683613c26565b805f5b83811015613cb6578151613c9d8882613c44565b9750613ca883613c5b565b925050600181019050613c89565b5085935050505092915050565b5f60a082019050613cd65f830188612e2a565b613ce36020830187613375565b8181036040830152613cf58186613c67565b9050613d046060830185612ed6565b613d116080830184612e2a565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d4f601b83612c88565b9150613d5a82613d1b565b602082019050919050565b5f6020820190508181035f830152613d7c81613d43565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122050a35ee4b6c557c2091fd1de39f7be712d651528d497b3e1b4460383feaf3ba864736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101c5575f3560e01c80637d1db4a5116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e146105d8578063e68d0b0514610614578063f2fde38b1461063c578063f5b3c3bf14610664576101cc565b8063a9059cbb14610520578063bf474bed1461055c578063c4e2b61914610586578063d45cce65146105ae576101cc565b80638f9a55c0116100d05780638f9a55c01461047c57806390b60549146104a657806390d49b9d146104ce57806395d89b41146104f6576101cc565b80637d1db4a5146104125780638a8c523c1461043c5780638da5cb5b14610452576101cc565b806323b872dd1161016357806353bc13dc1161013d57806353bc13dc146103705780636e4636671461039857806370a08231146103c0578063715018a6146103fc576101cc565b806323b872dd146102e0578063313ce5671461031c57806349bd5a5e14610346576101cc565b80630f144a481161019f5780630f144a481461024c5780630faee56f1461026257806310c435aa1461028c57806318160ddd146102b6576101cc565b806301ab6ee5146101d057806306fdde03146101e6578063095ea7b314610210576101cc565b366101cc57005b5f80fd5b3480156101db575f80fd5b506101e46106a0565b005b3480156101f1575f80fd5b506101fa6107d2565b6040516102079190612d08565b60405180910390f35b34801561021b575f80fd5b5061023660048036038101906102319190612db9565b61080f565b6040516102439190612e11565b60405180910390f35b348015610257575f80fd5b5061026061082c565b005b34801561026d575f80fd5b50610276610927565b6040516102839190612e39565b60405180910390f35b348015610297575f80fd5b506102a061092d565b6040516102ad9190612e39565b60405180910390f35b3480156102c1575f80fd5b506102ca610933565b6040516102d79190612e39565b60405180910390f35b3480156102eb575f80fd5b5061030660048036038101906103019190612e52565b610957565b6040516103139190612e11565b60405180910390f35b348015610327575f80fd5b50610330610a2b565b60405161033d9190612ebd565b60405180910390f35b348015610351575f80fd5b5061035a610a33565b6040516103679190612ee5565b60405180910390f35b34801561037b575f80fd5b5061039660048036038101906103919190612efe565b610a58565b005b3480156103a3575f80fd5b506103be60048036038101906103b99190612f29565b610b44565b005b3480156103cb575f80fd5b506103e660048036038101906103e19190612efe565b610be2565b6040516103f39190612e39565b60405180910390f35b348015610407575f80fd5b50610410610c28565b005b34801561041d575f80fd5b50610426610d76565b6040516104339190612e39565b60405180910390f35b348015610447575f80fd5b50610450610d7c565b005b34801561045d575f80fd5b50610466611392565b6040516104739190612ee5565b60405180910390f35b348015610487575f80fd5b506104906113b9565b60405161049d9190612e39565b60405180910390f35b3480156104b1575f80fd5b506104cc60048036038101906104c79190612f7e565b6113bf565b005b3480156104d9575f80fd5b506104f460048036038101906104ef9190612efe565b611470565b005b348015610501575f80fd5b5061050a611547565b6040516105179190612d08565b60405180910390f35b34801561052b575f80fd5b5061054660048036038101906105419190612db9565b611584565b6040516105539190612e11565b60405180910390f35b348015610567575f80fd5b506105706115a1565b60405161057d9190612e39565b60405180910390f35b348015610591575f80fd5b506105ac60048036038101906105a79190612db9565b6115a7565b005b3480156105b9575f80fd5b506105c26116dc565b6040516105cf9190612e11565b60405180910390f35b3480156105e3575f80fd5b506105fe60048036038101906105f99190612fa9565b6116ef565b60405161060b9190612e39565b60405180910390f35b34801561061f575f80fd5b5061063a60048036038101906106359190612fe7565b611771565b005b348015610647575f80fd5b50610662600480360381019061065d9190612efe565b61182a565b005b34801561066f575f80fd5b5061068a60048036038101906106859190612efe565b6119e7565b6040516106979190612e11565b60405180910390f35b6106a8611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072b9061306f565b60405180910390fd5b6009600a61074291906131e9565b6461f313f8806107529190613233565b6012819055506009600a61076691906131e9565b6461f313f8806107769190613233565b6013819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6107ab91906131e9565b6461f313f8806107bb9190613233565b6040516107c89190612e39565b60405180910390a1565b60606040518060400160405280600c81526020017f506f6c61726973204461776e0000000000000000000000000000000000000000815250905090565b5f61082261081b611a04565b8484611a0b565b6001905092915050565b610834611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b79061306f565b60405180910390fd5b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610924573d5f803e3d5ffd5b50565b60155481565b60185481565b5f6009600a61094291906131e9565b6461f313f8806109529190613233565b905090565b5f610963848484611bce565b610a208461096f611a04565b610a1b85604051806060016040528060288152602001613d846028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6109d2611a04565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461276c9092919063ffffffff16565b611a0b565b600190509392505050565b5f6009905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610a60611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610aec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae39061306f565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b610b4c611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610bd8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcf9061306f565b60405180910390fd5b8060188190555050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610c30611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb39061306f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60125481565b610d84611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e079061306f565b60405180910390fd5b601760149054906101000a900460ff1615610e60576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e57906132be565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60165f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610efd3060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610ee891906131e9565b6461f313f880610ef89190613233565b611a0b565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f67573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8b91906132f0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611011573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061103591906132f0565b6040518363ffffffff1660e01b815260040161105292919061331b565b6020604051808303815f875af115801561106e573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061109291906132f0565b60175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160045f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061120530610be2565b5f8061120f611392565b426040518863ffffffff1660e01b815260040161123196959493929190613384565b60606040518083038185885af115801561124d573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061127291906133f7565b50505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611312929190613447565b6020604051808303815f875af115801561132e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113529190613482565b506001601960016101000a81548160ff0219169083151502179055506001601760146101000a81548160ff02191690831515021790555043600781905550565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60135481565b6113c7611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a9061306f565b60405180910390fd5b80601960026101000a81548160ff02191690831515021790555050565b611478611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611504576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fb9061306f565b60405180910390fd5b8060065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60606040518060400160405280600781526020017f506f6c6172697300000000000000000000000000000000000000000000000000815250905090565b5f611597611590611a04565b8484611bce565b6001905092915050565b60145481565b6115af611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461163b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116329061306f565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b81526004016116979291906134ff565b6020604051808303815f875af11580156116b3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116d79190613482565b505050565b601960029054906101000a900460ff1681565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611779611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611805576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fc9061306f565b60405180910390fd5b81601960016101000a81548160ff021916908315150217905550806015819055505050565b611832611a04565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146118be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b59061306f565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361192c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192390613596565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6004602052805f5260405f205f915054906101000a900460ff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a79576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7090613624565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ade906136b2565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611bc19190612e39565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3390613740565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611caa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca1906137ce565b60405180910390fd5b5f8111611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce39061385c565b60405180910390fd5b5f611cf5611392565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d635750611d33611392565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156124bc57611da46064611d96600c54600f5411611d8357600854611d87565b600a545b856127ce90919063ffffffff16565b61284590919063ffffffff16565b90506007544303611e2a57604660055f4381526020019081526020015f205410611e03576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dfa906138c4565b60405180910390fd5b60055f4381526020019081526020015f205f815480929190611e24906138e2565b91905055505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015611ecd575060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f20575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611fda57601254821115611f6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6190613973565b60405180910390fd5b60135482611f7785610be2565b611f819190613991565b1115611fc2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb990613a0e565b60405180910390fd5b600f5f815480929190611fd4906138e2565b91905055505b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612078575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b156120d6576013548261208a85610be2565b6120949190613991565b11156120d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cc90613a0e565b60405180910390fd5b5b60045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561215857503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561219c57612199606461218b600d54600f54116121785760095461217c565b600b545b856127ce90919063ffffffff16565b61284590919063ffffffff16565b90505b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615801561223a575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561227257503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561227b575f90505b5f61228530610be2565b9050601960029054906101000a900460ff1680156122af575060195f9054906101000a900460ff16155b8015612301575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156123195750601960019054906101000a900460ff165b8015612326575060145481115b80156123355750600e54600f54115b156123e95760115443111561234c575f6010819055505b60185460105410612392576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238990613a76565b60405180910390fd5b6123af6123aa846123a58460155461288e565b61288e565b6128a6565b5f4790505f8111156123c5576123c447612b0f565b5b60105f8154809291906123d7906138e2565b919050555043601181905550506124ba565b60195f9054906101000a900460ff1615801561244b575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80156124635750601960019054906101000a900460ff165b8015612470575060145481115b801561247f5750600e54600f54115b156124b9576124a161249c846124978460155461288e565b61288e565b6128a6565b5f4790505f8111156124b7576124b647612b0f565b5b505b5b505b5f8111156125bb576125148160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7790919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516125b29190612e39565b60405180910390a35b61260b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bd490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506126ae6126628284612bd490919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b7790919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6127518486612bd490919063ffffffff16565b60405161275e9190612e39565b60405180910390a350505050565b5f8383111582906127b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127aa9190612d08565b60405180910390fd5b505f83856127c19190613a94565b9050809150509392505050565b5f8083036127de575f905061283f565b5f82846127eb9190613233565b90508284826127fa9190613af4565b1461283a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161283190613b94565b60405180910390fd5b809150505b92915050565b5f61288683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612c1d565b905092915050565b5f81831161289c578261289e565b815b905092915050565b600160195f6101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156128dc576128db613bb2565b5b60405190808252806020026020018201604052801561290a5781602001602082028036833780820191505090505b50905030815f8151811061292157612920613bdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129c5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129e991906132f0565b816001815181106129fd576129fc613bdf565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612a633060165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a0b565b60165f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612ac5959493929190613cc3565b5f604051808303815f87803b158015612adc575f80fd5b505af1158015612aee573d5f803e3d5ffd5b50505050505f60195f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612b73573d5f803e3d5ffd5b5050565b5f808284612b859190613991565b905083811015612bca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bc190613d65565b60405180910390fd5b8091505092915050565b5f612c1583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061276c565b905092915050565b5f8083118290612c63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5a9190612d08565b60405180910390fd5b505f8385612c719190613af4565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612cb5578082015181840152602081019050612c9a565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612cda82612c7e565b612ce48185612c88565b9350612cf4818560208601612c98565b612cfd81612cc0565b840191505092915050565b5f6020820190508181035f830152612d208184612cd0565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612d5582612d2c565b9050919050565b612d6581612d4b565b8114612d6f575f80fd5b50565b5f81359050612d8081612d5c565b92915050565b5f819050919050565b612d9881612d86565b8114612da2575f80fd5b50565b5f81359050612db381612d8f565b92915050565b5f8060408385031215612dcf57612dce612d28565b5b5f612ddc85828601612d72565b9250506020612ded85828601612da5565b9150509250929050565b5f8115159050919050565b612e0b81612df7565b82525050565b5f602082019050612e245f830184612e02565b92915050565b612e3381612d86565b82525050565b5f602082019050612e4c5f830184612e2a565b92915050565b5f805f60608486031215612e6957612e68612d28565b5b5f612e7686828701612d72565b9350506020612e8786828701612d72565b9250506040612e9886828701612da5565b9150509250925092565b5f60ff82169050919050565b612eb781612ea2565b82525050565b5f602082019050612ed05f830184612eae565b92915050565b612edf81612d4b565b82525050565b5f602082019050612ef85f830184612ed6565b92915050565b5f60208284031215612f1357612f12612d28565b5b5f612f2084828501612d72565b91505092915050565b5f60208284031215612f3e57612f3d612d28565b5b5f612f4b84828501612da5565b91505092915050565b612f5d81612df7565b8114612f67575f80fd5b50565b5f81359050612f7881612f54565b92915050565b5f60208284031215612f9357612f92612d28565b5b5f612fa084828501612f6a565b91505092915050565b5f8060408385031215612fbf57612fbe612d28565b5b5f612fcc85828601612d72565b9250506020612fdd85828601612d72565b9150509250929050565b5f8060408385031215612ffd57612ffc612d28565b5b5f61300a85828601612f6a565b925050602061301b85828601612da5565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613059602083612c88565b915061306482613025565b602082019050919050565b5f6020820190508181035f8301526130868161304d565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111561310f578086048111156130eb576130ea61308d565b5b60018516156130fa5780820291505b8081029050613108856130ba565b94506130cf565b94509492505050565b5f8261312757600190506131e2565b81613134575f90506131e2565b816001811461314a576002811461315457613183565b60019150506131e2565b60ff8411156131665761316561308d565b5b8360020a91508482111561317d5761317c61308d565b5b506131e2565b5060208310610133831016604e8410600b84101617156131b85782820a9050838111156131b3576131b261308d565b5b6131e2565b6131c584848460016130c6565b925090508184048111156131dc576131db61308d565b5b81810290505b9392505050565b5f6131f382612d86565b91506131fe83612ea2565b925061322b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613118565b905092915050565b5f61323d82612d86565b915061324883612d86565b925082820261325681612d86565b9150828204841483151761326d5761326c61308d565b5b5092915050565b7f74726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f6132a8601783612c88565b91506132b382613274565b602082019050919050565b5f6020820190508181035f8301526132d58161329c565b9050919050565b5f815190506132ea81612d5c565b92915050565b5f6020828403121561330557613304612d28565b5b5f613312848285016132dc565b91505092915050565b5f60408201905061332e5f830185612ed6565b61333b6020830184612ed6565b9392505050565b5f819050919050565b5f819050919050565b5f61336e61336961336484613342565b61334b565b612d86565b9050919050565b61337e81613354565b82525050565b5f60c0820190506133975f830189612ed6565b6133a46020830188612e2a565b6133b16040830187613375565b6133be6060830186613375565b6133cb6080830185612ed6565b6133d860a0830184612e2a565b979650505050505050565b5f815190506133f181612d8f565b92915050565b5f805f6060848603121561340e5761340d612d28565b5b5f61341b868287016133e3565b935050602061342c868287016133e3565b925050604061343d868287016133e3565b9150509250925092565b5f60408201905061345a5f830185612ed6565b6134676020830184612e2a565b9392505050565b5f8151905061347c81612f54565b92915050565b5f6020828403121561349757613496612d28565b5b5f6134a48482850161346e565b91505092915050565b5f6134c76134c26134bd84612d2c565b61334b565b612d2c565b9050919050565b5f6134d8826134ad565b9050919050565b5f6134e9826134ce565b9050919050565b6134f9816134df565b82525050565b5f6040820190506135125f8301856134f0565b61351f6020830184612e2a565b9392505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613580602683612c88565b915061358b82613526565b604082019050919050565b5f6020820190508181035f8301526135ad81613574565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61360e602483612c88565b9150613619826135b4565b604082019050919050565b5f6020820190508181035f83015261363b81613602565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61369c602283612c88565b91506136a782613642565b604082019050919050565b5f6020820190508181035f8301526136c981613690565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61372a602583612c88565b9150613735826136d0565b604082019050919050565b5f6020820190508181035f8301526137578161371e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6137b8602383612c88565b91506137c38261375e565b604082019050919050565b5f6020820190508181035f8301526137e5816137ac565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613846602983612c88565b9150613851826137ec565b604082019050919050565b5f6020820190508181035f8301526138738161383a565b9050919050565b7f457863656564732062757973206f6e2074686520666972737420626c6f636b2e5f82015250565b5f6138ae602083612c88565b91506138b98261387a565b602082019050919050565b5f6020820190508181035f8301526138db816138a2565b9050919050565b5f6138ec82612d86565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361391e5761391d61308d565b5b600182019050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f61395d601983612c88565b915061396882613929565b602082019050919050565b5f6020820190508181035f83015261398a81613951565b9050919050565b5f61399b82612d86565b91506139a683612d86565b92508282019050808211156139be576139bd61308d565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f6139f8601a83612c88565b9150613a03826139c4565b602082019050919050565b5f6020820190508181035f830152613a25816139ec565b9050919050565b7f43412062616c616e63652073656c6c00000000000000000000000000000000005f82015250565b5f613a60600f83612c88565b9150613a6b82613a2c565b602082019050919050565b5f6020820190508181035f830152613a8d81613a54565b9050919050565b5f613a9e82612d86565b9150613aa983612d86565b9250828203905081811115613ac157613ac061308d565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613afe82612d86565b9150613b0983612d86565b925082613b1957613b18613ac7565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613b7e602183612c88565b9150613b8982613b24565b604082019050919050565b5f6020820190508181035f830152613bab81613b72565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613c3e81612d4b565b82525050565b5f613c4f8383613c35565b60208301905092915050565b5f602082019050919050565b5f613c7182613c0c565b613c7b8185613c16565b9350613c8683613c26565b805f5b83811015613cb6578151613c9d8882613c44565b9750613ca883613c5b565b925050600181019050613c89565b5085935050505092915050565b5f60a082019050613cd65f830188612e2a565b613ce36020830187613375565b8181036040830152613cf58186613c67565b9050613d046060830185612ed6565b613d116080830184612e2a565b9695505050505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613d4f601b83612c88565b9150613d5a82613d1b565b602082019050919050565b5f6020820190508181035f830152613d7c81613d43565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122050a35ee4b6c557c2091fd1de39f7be712d651528d497b3e1b4460383feaf3ba864736f6c63430008170033

Deployed Bytecode Sourcemap

3814:9397:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12091:162;;;;;;;;;;;;;:::i;:::-;;5900:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6733:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11692:111;;;;;;;;;;;;;:::i;:::-;;5080:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5258:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6177:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6902:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6086:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5192:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7566:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11479:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6280:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2645:148;;;;;;;;;;;;;:::i;:::-;;4890:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12361:810;;;;;;;;;;;;;:::i;:::-;;2431:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4956:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11589:95;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11967:116;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5991:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6407:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5022:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11811:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5370:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6582:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11328;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2801:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4076:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12091:162;2568:12;:10;:12::i;:::-;2558:22;;:6;;;;;;;;;;:22;;;2550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4695:1:::1;4753:2;:13;;;;:::i;:::-;4738:12;:28;;;;:::i;:::-;12147:12;:22;;;;4695:1;4753:2;:13;;;;:::i;:::-;4738:12;:28;;;;:::i;:::-;12180:14;:22;;;;12218:27;4695:1;4753:2;:13;;;;:::i;:::-;4738:12;:28;;;;:::i;:::-;12218:27;;;;;;:::i;:::-;;;;;;;;12091:162::o:0;5900:83::-;5937:13;5970:5;;;;;;;;;;;;;;;;;5963:12;;5900:83;:::o;6733:161::-;6808:4;6825:39;6834:12;:10;:12::i;:::-;6848:7;6857:6;6825:8;:39::i;:::-;6882:4;6875:11;;6733:161;;;;:::o;11692:111::-;2568:12;:10;:12::i;:::-;2558:22;;:6;;;;;;;;;;:22;;;2550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11752:10:::1;;;;;;;;;;;11744:28;;:51;11773:21;11744:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;11692:111::o:0;5080:54::-;;;;:::o;5258:32::-;;;;:::o;6177:95::-;6230:7;4695:1;4753:2;:13;;;;:::i;:::-;4738:12;:28;;;;:::i;:::-;6250:14;;6177:95;:::o;6902:313::-;7000:4;7017:36;7027:6;7035:9;7046:6;7017:9;:36::i;:::-;7064:121;7073:6;7081:12;:10;:12::i;:::-;7095:89;7133:6;7095:89;;;;;;;;;;;;;;;;;:11;:19;7107:6;7095:19;;;;;;;;;;;;;;;:33;7115:12;:10;:12::i;:::-;7095:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7064:8;:121::i;:::-;7203:4;7196:11;;6902:313;;;;;:::o;6086:83::-;6127:5;4695:1;6145:16;;6086:83;:::o;5192:28::-;;;;;;;;;;;;;:::o;7566:96::-;2568:12;:10;:12::i;:::-;2558:22;;:6;;;;;;;;;;:22;;;2550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7650:4:::1;7631:10;:16;7642:4;7631:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;7566:96:::0;:::o;11479:102::-;2568:12;:10;:12::i;:::-;2558:22;;:6;;;;;;;;;;:22;;;2550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11567:6:::1;11551:13;:22;;;;11479:102:::0;:::o;6280:119::-;6346:7;6373:9;:18;6383:7;6373:18;;;;;;;;;;;;;;;;6366:25;;6280:119;;;:::o;2645:148::-;2568:12;:10;:12::i;:::-;2558:22;;:6;;;;;;;;;;:22;;;2550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2752:1:::1;2715:40;;2736:6;::::0;::::1;;;;;;;;2715:40;;;;;;;;;;;;2783:1;2766:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2645:148::o:0;4890:59::-;;;;:::o;12361:810::-;2568:12;:10;:12::i;:::-;2558:22;;:6;;;;;;;;;;:22;;;2550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12427:11:::1;;;;;;;;;;;12426:12;12418:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;12513:42;12476:15;;:80;;;;;;;;;;;;;;;;;;12567:58;12584:4;12599:15;;;;;;;;;;;4695:1;4753:2;:13;;;;:::i;:::-;4738:12;:28;;;;:::i;:::-;12567:8;:58::i;:::-;12670:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12652:55;;;12716:4;12723:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12652:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12636:13;;:110;;;;;;;;;;;;;;;;;;12794:4;12757:10;:34;12776:13;;;;;;;;;;;12757:34;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;12843:4;12809:7;:31;12825:13;;;;;;;;;;;12809:31;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;12858:15;;;;;;;;;;;:31;;;12897:21;12928:4;12934:24;12952:4;12934:9;:24::i;:::-;12959:1;12961::::0;12963:7:::1;:5;:7::i;:::-;12971:15;12858:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;13005:13;;;;;;;;;;;12998:29;;;13036:15;;;;;;;;;;;13054:14;12998:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13094:4;13080:11;;:18;;;;;;;;;;;;;;;;;;13123:4;13109:11;;:18;;;;;;;;;;;;;;;;;;13151:12;13138:10;:25;;;;12361:810::o:0;2431:79::-;2469:7;2496:6;;;;;;;;;;;2489:13;;2431:79;:::o;4956:59::-;;;;:::o;11589:95::-;2568:12;:10;:12::i;:::-;2558:22;;:6;;;;;;;;;;:22;;;2550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11669:7:::1;11656:10;;:20;;;;;;;;;;;;;;;;;;11589:95:::0;:::o;11967:116::-;2568:12;:10;:12::i;:::-;2558:22;;:6;;;;;;;;;;:22;;;2550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12062:12:::1;12041:10;;:34;;;;;;;;;;;;;;;;;;11967:116:::0;:::o;5991:87::-;6030:13;6063:7;;;;;;;;;;;;;;;;;6056:14;;5991:87;:::o;6407:167::-;6485:4;6502:42;6512:12;:10;:12::i;:::-;6526:9;6537:6;6502:9;:42::i;:::-;6562:4;6555:11;;6407:167;;;;:::o;5022:51::-;;;;:::o;11811:148::-;2568:12;:10;:12::i;:::-;2558:22;;:6;;;;;;;;;;:22;;;2550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11910:10:::1;11903:27;;;11931:10;;;;;;;;;;;11943:7;11903:48;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11811:148:::0;;:::o;5370:29::-;;;;;;;;;;;;;:::o;6582:143::-;6663:7;6690:11;:18;6702:5;6690:18;;;;;;;;;;;;;;;:27;6709:7;6690:27;;;;;;;;;;;;;;;;6683:34;;6582:143;;;;:::o;11328:::-;2568:12;:10;:12::i;:::-;2558:22;;:6;;;;;;;;;;:22;;;2550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;11425:7:::1;11411:11;;:21;;;;;;;;;;;;;;;;;;11457:6;11443:11;:20;;;;11328:143:::0;;:::o;2801:244::-;2568:12;:10;:12::i;:::-;2558:22;;:6;;;;;;;;;;:22;;;2550:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2910:1:::1;2890:22;;:8;:22;;::::0;2882:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3000:8;2971:38;;2992:6;::::0;::::1;;;;;;;;2971:38;;;;;;;;;;;;3029:8;3020:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;2801:244:::0;:::o;4076:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;186:98::-;239:7;266:10;259:17;;186:98;:::o;7223:335::-;7333:1;7316:19;;:5;:19;;;7308:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7414:1;7395:21;;:7;:21;;;7387:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7496:6;7466:11;:18;7478:5;7466:18;;;;;;;;;;;;;;;:27;7485:7;7466:27;;;;;;;;;;;;;;;:36;;;;7534:7;7518:32;;7527:5;7518:32;;;7543:6;7518:32;;;;;;:::i;:::-;;;;;;;;7223:335;;;:::o;7670:3051::-;7774:1;7758:18;;:4;:18;;;7750:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7851:1;7837:16;;:2;:16;;;7829:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7921:1;7912:6;:10;7904:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7979:17;8023:7;:5;:7::i;:::-;8015:15;;:4;:15;;;;:32;;;;;8040:7;:5;:7::i;:::-;8034:13;;:2;:13;;;;8015:32;8011:2354;;;8076:79;8151:3;8076:70;8099:15;;8088:9;;:26;8087:58;;8131:14;;8087:58;;;8117:12;;8087:58;8076:6;:10;;:70;;;;:::i;:::-;:74;;:79;;;;:::i;:::-;8064:91;;8191:10;;8175:12;:26;8172:184;;8256:2;8228:11;:25;8240:12;8228:25;;;;;;;;;;;;:30;8220:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;8313:11;:25;8325:12;8313:25;;;;;;;;;;;;:27;;;;;;;;;:::i;:::-;;;;;;8172:184;8376:10;:16;8387:4;8376:16;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;;8410:15;;;;;;;;;;;8396:30;;:2;:30;;;;8376:50;:67;;;;;8432:7;:11;8440:2;8432:11;;;;;;;;;;;;;;;;;;;;;;;;;8430:13;8376:67;8372:297;;;8483:12;;8473:6;:22;;8465:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8578:14;;8568:6;8552:13;8562:2;8552:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8544:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8642:9;;:11;;;;;;;;;:::i;:::-;;;;;;8372:297;8690:10;:14;8701:2;8690:14;;;;;;;;;;;;;;;;;;;;;;;;;8689:15;:32;;;;;8710:7;:11;8718:2;8710:11;;;;;;;;;;;;;;;;;;;;;;;;;8708:13;8689:32;8685:152;;;8776:14;;8766:6;8750:13;8760:2;8750:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8742:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8685:152;8856:10;:14;8867:2;8856:14;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;8889:4;8874:20;;:4;:20;;;;8856:38;8853:172;;;8927:82;9005:3;8927:73;8950:16;;8939:9;;:27;8938:61;;8984:15;;8938:61;;;8969:13;;8938:61;8927:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8915:94;;8853:172;9039:10;:16;9050:4;9039:16;;;;;;;;;;;;;;;;;;;;;;;;;9038:17;:36;;;;;9060:10;:14;9071:2;9060:14;;;;;;;;;;;;;;;;;;;;;;;;;9059:15;9038:36;:60;;;;;9093:4;9078:20;;:4;:20;;;;9038:60;9034:115;;;9132:1;9120:13;;9034:115;9165:28;9196:24;9214:4;9196:9;:24::i;:::-;9165:55;;9239:10;;;;;;;;;;;:21;;;;;9254:6;;;;;;;;;;;9253:7;9239:21;:39;;;;;9264:10;:14;9275:2;9264:14;;;;;;;;;;;;;;;;;;;;;;;;;9239:39;:54;;;;;9282:11;;;;;;;;;;;9239:54;:96;;;;;9318:17;;9297:20;:38;9239:96;:128;;;;;9349:18;;9339:9;;:28;9239:128;9235:1119;;;9407:13;;9392:12;:28;9388:90;;;9457:1;9445:9;:13;;;;9388:90;9516:13;;9504:9;;:25;9496:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;9568:67;9585:49;9589:6;9596:37;9600:20;9621:11;;9596:3;:37::i;:::-;9585:3;:49::i;:::-;9568:16;:67::i;:::-;9654:26;9683:21;9654:50;;9747:1;9726:18;:22;9723:105;;;9773:35;9786:21;9773:12;:35::i;:::-;9723:105;9846:9;;:11;;;;;;;;;:::i;:::-;;;;;;9892:12;9876:13;:28;;;;9369:551;9235:1119;;;9945:6;;;;;;;;;;;9944:7;:25;;;;;9955:10;:14;9966:2;9955:14;;;;;;;;;;;;;;;;;;;;;;;;;9944:25;:40;;;;;9973:11;;;;;;;;;;;9944:40;:82;;;;;10009:17;;9988:20;:38;9944:82;:114;;;;;10040:18;;10030:9;;:28;9944:114;9941:413;;;10079:67;10096:49;10100:6;10107:37;10111:20;10132:11;;10107:3;:37::i;:::-;10096:3;:49::i;:::-;10079:16;:67::i;:::-;10165:26;10194:21;10165:50;;10258:1;10237:18;:22;10234:105;;;10284:35;10297:21;10284:12;:35::i;:::-;10234:105;10060:294;9941:413;9235:1119;8049:2316;8011:2354;10390:1;10380:9;:11;10377:161;;;10430:39;10459:9;10430;:24;10448:4;10430:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;10405:9;:24;10423:4;10405:24;;;;;;;;;;;;;;;:64;;;;10510:4;10487:39;;10496:4;10487:39;;;10516:9;10487:39;;;;;;:::i;:::-;;;;;;;;10377:161;10564:27;10584:6;10564:9;:15;10574:4;10564:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;10548:9;:15;10558:4;10548:15;;;;;;;;;;;;;;;:43;;;;10616:40;10634:21;10645:9;10634:6;:10;;:21;;;;:::i;:::-;10616:9;:13;10626:2;10616:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;10602:9;:13;10612:2;10602:13;;;;;;;;;;;;;;;:54;;;;10687:2;10672:41;;10681:4;10672:41;;;10691:21;10702:9;10691:6;:10;;:21;;;;:::i;:::-;10672:41;;;;;;:::i;:::-;;;;;;;;7739:2982;7670:3051;;;:::o;1323:190::-;1409:7;1442:1;1437;:6;;1445:12;1429:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1469:9;1485:1;1481;:5;;;;:::i;:::-;1469:17;;1504:1;1497:8;;;1323:190;;;;;:::o;1521:246::-;1579:7;1608:1;1603;:6;1599:47;;1633:1;1626:8;;;;1599:47;1656:9;1672:1;1668;:5;;;;:::i;:::-;1656:17;;1701:1;1696;1692;:5;;;;:::i;:::-;:10;1684:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1758:1;1751:8;;;1521:246;;;;;:::o;1775:132::-;1833:7;1860:39;1864:1;1867;1860:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1853:46;;1775:132;;;;:::o;10731:98::-;10788:7;10815:1;10813;:3;10812:9;;10820:1;10812:9;;;10818:1;10812:9;10805:16;;10731:98;;;;:::o;10837:483::-;5499:4;5490:6;;:13;;;;;;;;;;;;;;;;;;10915:21:::1;10953:1;10939:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10915:40;;10984:4;10966;10971:1;10966:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11010:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11000:4;11005:1;11000:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11043:62;11060:4;11075:15;;;;;;;;;;;11093:11;11043:8;:62::i;:::-;11116:15;;;;;;;;;;;:66;;;11197:11;11223:1;11239:4;11266;11286:15;11116:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10904:416;5535:5:::0;5526:6;;:14;;;;;;;;;;;;;;;;;;10837:483;:::o;12261:92::-;12318:10;;;;;;;;;;;:19;;:27;12338:6;12318:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12261:92;:::o;992:179::-;1050:7;1070:9;1086:1;1082;:5;;;;:::i;:::-;1070:17;;1111:1;1106;:6;;1098:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1162:1;1155:8;;;992:179;;;;:::o;1179:136::-;1237:7;1264:43;1268:1;1271;1264:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1257:50;;1179:136;;;;:::o;1915:189::-;2001:7;2033:1;2029;:5;2036:12;2021:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2060:9;2076:1;2072;:5;;;;:::i;:::-;2060:17;;2095:1;2088:8;;;1915: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;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446: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:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:118::-;4940:24;4958:5;4940:24;:::i;:::-;4935:3;4928:37;4853:118;;:::o;4977:222::-;5070:4;5108:2;5097:9;5093:18;5085:26;;5121:71;5189:1;5178:9;5174:17;5165:6;5121:71;:::i;:::-;4977:222;;;;:::o;5205:329::-;5264:6;5313:2;5301:9;5292:7;5288:23;5284:32;5281:119;;;5319:79;;:::i;:::-;5281:119;5439:1;5464:53;5509:7;5500:6;5489:9;5485:22;5464:53;:::i;:::-;5454:63;;5410:117;5205:329;;;;:::o;5540:::-;5599:6;5648:2;5636:9;5627:7;5623:23;5619:32;5616:119;;;5654:79;;:::i;:::-;5616:119;5774:1;5799:53;5844:7;5835:6;5824:9;5820:22;5799:53;:::i;:::-;5789:63;;5745:117;5540:329;;;;:::o;5875:116::-;5945:21;5960:5;5945:21;:::i;:::-;5938:5;5935:32;5925:60;;5981:1;5978;5971:12;5925:60;5875:116;:::o;5997:133::-;6040:5;6078:6;6065:20;6056:29;;6094:30;6118:5;6094:30;:::i;:::-;5997:133;;;;:::o;6136:323::-;6192:6;6241:2;6229:9;6220:7;6216:23;6212:32;6209:119;;;6247:79;;:::i;:::-;6209:119;6367:1;6392:50;6434:7;6425:6;6414:9;6410:22;6392:50;:::i;:::-;6382:60;;6338:114;6136:323;;;;:::o;6465:474::-;6533:6;6541;6590:2;6578:9;6569:7;6565:23;6561:32;6558:119;;;6596:79;;:::i;:::-;6558:119;6716:1;6741:53;6786:7;6777:6;6766:9;6762:22;6741:53;:::i;:::-;6731:63;;6687:117;6843:2;6869:53;6914:7;6905:6;6894:9;6890:22;6869:53;:::i;:::-;6859:63;;6814:118;6465:474;;;;;:::o;6945:468::-;7010:6;7018;7067:2;7055:9;7046:7;7042:23;7038:32;7035:119;;;7073:79;;:::i;:::-;7035:119;7193:1;7218:50;7260:7;7251:6;7240:9;7236:22;7218:50;:::i;:::-;7208:60;;7164:114;7317:2;7343:53;7388:7;7379:6;7368:9;7364:22;7343:53;:::i;:::-;7333:63;;7288:118;6945:468;;;;;:::o;7419:182::-;7559:34;7555:1;7547:6;7543:14;7536:58;7419:182;:::o;7607:366::-;7749:3;7770:67;7834:2;7829:3;7770:67;:::i;:::-;7763:74;;7846:93;7935:3;7846:93;:::i;:::-;7964:2;7959:3;7955:12;7948:19;;7607:366;;;:::o;7979:419::-;8145:4;8183:2;8172:9;8168:18;8160:26;;8232:9;8226:4;8222:20;8218:1;8207:9;8203:17;8196:47;8260:131;8386:4;8260:131;:::i;:::-;8252:139;;7979:419;;;:::o;8404:180::-;8452:77;8449:1;8442:88;8549:4;8546:1;8539:15;8573:4;8570:1;8563:15;8590:102;8632:8;8679:5;8676:1;8672:13;8651:34;;8590:102;;;:::o;8698:848::-;8759:5;8766:4;8790:6;8781:15;;8814:5;8805:14;;8828:712;8849:1;8839:8;8836:15;8828:712;;;8944:4;8939:3;8935:14;8929:4;8926:24;8923:50;;;8953:18;;:::i;:::-;8923:50;9003:1;8993:8;8989:16;8986:451;;;9418:4;9411:5;9407:16;9398:25;;8986:451;9468:4;9462;9458:15;9450:23;;9498:32;9521:8;9498:32;:::i;:::-;9486:44;;8828:712;;;8698:848;;;;;;;:::o;9552:1073::-;9606:5;9797:8;9787:40;;9818:1;9809:10;;9820:5;;9787:40;9846:4;9836:36;;9863:1;9854:10;;9865:5;;9836:36;9932:4;9980:1;9975:27;;;;10016:1;10011:191;;;;9925:277;;9975:27;9993:1;9984:10;;9995:5;;;10011:191;10056:3;10046:8;10043:17;10040:43;;;10063:18;;:::i;:::-;10040:43;10112:8;10109:1;10105:16;10096:25;;10147:3;10140:5;10137:14;10134:40;;;10154:18;;:::i;:::-;10134:40;10187:5;;;9925:277;;10311:2;10301:8;10298:16;10292:3;10286:4;10283:13;10279:36;10261:2;10251:8;10248:16;10243:2;10237:4;10234:12;10230:35;10214:111;10211:246;;;10367:8;10361:4;10357:19;10348:28;;10402:3;10395:5;10392:14;10389:40;;;10409:18;;:::i;:::-;10389:40;10442:5;;10211:246;10482:42;10520:3;10510:8;10504:4;10501:1;10482:42;:::i;:::-;10467:57;;;;10556:4;10551:3;10547:14;10540:5;10537:25;10534:51;;;10565:18;;:::i;:::-;10534:51;10614:4;10607:5;10603:16;10594:25;;9552:1073;;;;;;:::o;10631:281::-;10689:5;10713:23;10731:4;10713:23;:::i;:::-;10705:31;;10757:25;10773:8;10757:25;:::i;:::-;10745:37;;10801:104;10838:66;10828:8;10822:4;10801:104;:::i;:::-;10792:113;;10631:281;;;;:::o;10918:410::-;10958:7;10981:20;10999:1;10981:20;:::i;:::-;10976:25;;11015:20;11033:1;11015:20;:::i;:::-;11010:25;;11070:1;11067;11063:9;11092:30;11110:11;11092:30;:::i;:::-;11081:41;;11271:1;11262:7;11258:15;11255:1;11252:22;11232:1;11225:9;11205:83;11182:139;;11301:18;;:::i;:::-;11182:139;10966:362;10918:410;;;;:::o;11334:173::-;11474:25;11470:1;11462:6;11458:14;11451:49;11334:173;:::o;11513:366::-;11655:3;11676:67;11740:2;11735:3;11676:67;:::i;:::-;11669:74;;11752:93;11841:3;11752:93;:::i;:::-;11870:2;11865:3;11861:12;11854:19;;11513:366;;;:::o;11885:419::-;12051:4;12089:2;12078:9;12074:18;12066:26;;12138:9;12132:4;12128:20;12124:1;12113:9;12109:17;12102:47;12166:131;12292:4;12166:131;:::i;:::-;12158:139;;11885:419;;;:::o;12310:143::-;12367:5;12398:6;12392:13;12383:22;;12414:33;12441:5;12414:33;:::i;:::-;12310:143;;;;:::o;12459:351::-;12529:6;12578:2;12566:9;12557:7;12553:23;12549:32;12546:119;;;12584:79;;:::i;:::-;12546:119;12704:1;12729:64;12785:7;12776:6;12765:9;12761:22;12729:64;:::i;:::-;12719:74;;12675:128;12459:351;;;;:::o;12816:332::-;12937:4;12975:2;12964:9;12960:18;12952:26;;12988:71;13056:1;13045:9;13041:17;13032:6;12988:71;:::i;:::-;13069:72;13137:2;13126:9;13122:18;13113:6;13069:72;:::i;:::-;12816:332;;;;;:::o;13154:85::-;13199:7;13228:5;13217:16;;13154:85;;;:::o;13245:60::-;13273:3;13294:5;13287:12;;13245:60;;;:::o;13311:158::-;13369:9;13402:61;13420:42;13429:32;13455:5;13429:32;:::i;:::-;13420:42;:::i;:::-;13402:61;:::i;:::-;13389:74;;13311:158;;;:::o;13475:147::-;13570:45;13609:5;13570:45;:::i;:::-;13565:3;13558:58;13475:147;;:::o;13628:807::-;13877:4;13915:3;13904:9;13900:19;13892:27;;13929:71;13997:1;13986:9;13982:17;13973:6;13929:71;:::i;:::-;14010:72;14078:2;14067:9;14063:18;14054:6;14010:72;:::i;:::-;14092:80;14168:2;14157:9;14153:18;14144:6;14092:80;:::i;:::-;14182;14258:2;14247:9;14243:18;14234:6;14182:80;:::i;:::-;14272:73;14340:3;14329:9;14325:19;14316:6;14272:73;:::i;:::-;14355;14423:3;14412:9;14408:19;14399:6;14355:73;:::i;:::-;13628:807;;;;;;;;;:::o;14441:143::-;14498:5;14529:6;14523:13;14514:22;;14545:33;14572:5;14545:33;:::i;:::-;14441:143;;;;:::o;14590:663::-;14678:6;14686;14694;14743:2;14731:9;14722:7;14718:23;14714:32;14711:119;;;14749:79;;:::i;:::-;14711:119;14869:1;14894:64;14950:7;14941:6;14930:9;14926:22;14894:64;:::i;:::-;14884:74;;14840:128;15007:2;15033:64;15089:7;15080:6;15069:9;15065:22;15033:64;:::i;:::-;15023:74;;14978:129;15146:2;15172:64;15228:7;15219:6;15208:9;15204:22;15172:64;:::i;:::-;15162:74;;15117:129;14590:663;;;;;:::o;15259:332::-;15380:4;15418:2;15407:9;15403:18;15395:26;;15431:71;15499:1;15488:9;15484:17;15475:6;15431:71;:::i;:::-;15512:72;15580:2;15569:9;15565:18;15556:6;15512:72;:::i;:::-;15259:332;;;;;:::o;15597:137::-;15651:5;15682:6;15676:13;15667:22;;15698:30;15722:5;15698:30;:::i;:::-;15597:137;;;;:::o;15740:345::-;15807:6;15856:2;15844:9;15835:7;15831:23;15827:32;15824:119;;;15862:79;;:::i;:::-;15824:119;15982:1;16007:61;16060:7;16051:6;16040:9;16036:22;16007:61;:::i;:::-;15997:71;;15953:125;15740:345;;;;:::o;16091:142::-;16141:9;16174:53;16192:34;16201:24;16219:5;16201:24;:::i;:::-;16192:34;:::i;:::-;16174:53;:::i;:::-;16161:66;;16091:142;;;:::o;16239:126::-;16289:9;16322:37;16353:5;16322:37;:::i;:::-;16309:50;;16239:126;;;:::o;16371:134::-;16429:9;16462:37;16493:5;16462:37;:::i;:::-;16449:50;;16371:134;;;:::o;16511:147::-;16606:45;16645:5;16606:45;:::i;:::-;16601:3;16594:58;16511:147;;:::o;16664:348::-;16793:4;16831:2;16820:9;16816:18;16808:26;;16844:79;16920:1;16909:9;16905:17;16896:6;16844:79;:::i;:::-;16933:72;17001:2;16990:9;16986:18;16977:6;16933:72;:::i;:::-;16664:348;;;;;:::o;17018:225::-;17158:34;17154:1;17146:6;17142:14;17135:58;17227:8;17222:2;17214:6;17210:15;17203:33;17018:225;:::o;17249:366::-;17391:3;17412:67;17476:2;17471:3;17412:67;:::i;:::-;17405:74;;17488:93;17577:3;17488:93;:::i;:::-;17606:2;17601:3;17597:12;17590:19;;17249:366;;;:::o;17621:419::-;17787:4;17825:2;17814:9;17810:18;17802:26;;17874:9;17868:4;17864:20;17860:1;17849:9;17845:17;17838:47;17902:131;18028:4;17902:131;:::i;:::-;17894:139;;17621:419;;;:::o;18046:223::-;18186:34;18182:1;18174:6;18170:14;18163:58;18255:6;18250:2;18242:6;18238:15;18231:31;18046:223;:::o;18275:366::-;18417:3;18438:67;18502:2;18497:3;18438:67;:::i;:::-;18431:74;;18514:93;18603:3;18514:93;:::i;:::-;18632:2;18627:3;18623:12;18616:19;;18275:366;;;:::o;18647:419::-;18813:4;18851:2;18840:9;18836:18;18828:26;;18900:9;18894:4;18890:20;18886:1;18875:9;18871:17;18864:47;18928:131;19054:4;18928:131;:::i;:::-;18920:139;;18647:419;;;:::o;19072:221::-;19212:34;19208:1;19200:6;19196:14;19189:58;19281:4;19276:2;19268:6;19264:15;19257:29;19072:221;:::o;19299:366::-;19441:3;19462:67;19526:2;19521:3;19462:67;:::i;:::-;19455:74;;19538:93;19627:3;19538:93;:::i;:::-;19656:2;19651:3;19647:12;19640:19;;19299:366;;;:::o;19671:419::-;19837:4;19875:2;19864:9;19860:18;19852:26;;19924:9;19918:4;19914:20;19910:1;19899:9;19895:17;19888:47;19952:131;20078:4;19952:131;:::i;:::-;19944:139;;19671:419;;;:::o;20096:224::-;20236:34;20232:1;20224:6;20220:14;20213:58;20305:7;20300:2;20292:6;20288:15;20281:32;20096:224;:::o;20326:366::-;20468:3;20489:67;20553:2;20548:3;20489:67;:::i;:::-;20482:74;;20565:93;20654:3;20565:93;:::i;:::-;20683:2;20678:3;20674:12;20667:19;;20326:366;;;:::o;20698:419::-;20864:4;20902:2;20891:9;20887:18;20879:26;;20951:9;20945:4;20941:20;20937:1;20926:9;20922:17;20915:47;20979:131;21105:4;20979:131;:::i;:::-;20971:139;;20698:419;;;:::o;21123:222::-;21263:34;21259:1;21251:6;21247:14;21240:58;21332:5;21327:2;21319:6;21315:15;21308:30;21123:222;:::o;21351:366::-;21493:3;21514:67;21578:2;21573:3;21514:67;:::i;:::-;21507:74;;21590:93;21679:3;21590:93;:::i;:::-;21708:2;21703:3;21699:12;21692:19;;21351:366;;;:::o;21723:419::-;21889:4;21927:2;21916:9;21912:18;21904:26;;21976:9;21970:4;21966:20;21962:1;21951:9;21947:17;21940:47;22004:131;22130:4;22004:131;:::i;:::-;21996:139;;21723:419;;;:::o;22148:228::-;22288:34;22284:1;22276:6;22272:14;22265:58;22357:11;22352:2;22344:6;22340:15;22333:36;22148:228;:::o;22382:366::-;22524:3;22545:67;22609:2;22604:3;22545:67;:::i;:::-;22538:74;;22621:93;22710:3;22621:93;:::i;:::-;22739:2;22734:3;22730:12;22723:19;;22382:366;;;:::o;22754:419::-;22920:4;22958:2;22947:9;22943:18;22935:26;;23007:9;23001:4;22997:20;22993:1;22982:9;22978:17;22971:47;23035:131;23161:4;23035:131;:::i;:::-;23027:139;;22754:419;;;:::o;23179:182::-;23319:34;23315:1;23307:6;23303:14;23296:58;23179:182;:::o;23367:366::-;23509:3;23530:67;23594:2;23589:3;23530:67;:::i;:::-;23523:74;;23606:93;23695:3;23606:93;:::i;:::-;23724:2;23719:3;23715:12;23708:19;;23367:366;;;:::o;23739:419::-;23905:4;23943:2;23932:9;23928:18;23920:26;;23992:9;23986:4;23982:20;23978:1;23967:9;23963:17;23956:47;24020:131;24146:4;24020:131;:::i;:::-;24012:139;;23739:419;;;:::o;24164:233::-;24203:3;24226:24;24244:5;24226:24;:::i;:::-;24217:33;;24272:66;24265:5;24262:77;24259:103;;24342:18;;:::i;:::-;24259:103;24389:1;24382:5;24378:13;24371:20;;24164:233;;;:::o;24403:175::-;24543:27;24539:1;24531:6;24527:14;24520:51;24403:175;:::o;24584:366::-;24726:3;24747:67;24811:2;24806:3;24747:67;:::i;:::-;24740:74;;24823:93;24912:3;24823:93;:::i;:::-;24941:2;24936:3;24932:12;24925:19;;24584:366;;;:::o;24956:419::-;25122:4;25160:2;25149:9;25145:18;25137:26;;25209:9;25203:4;25199:20;25195:1;25184:9;25180:17;25173:47;25237:131;25363:4;25237:131;:::i;:::-;25229:139;;24956:419;;;:::o;25381:191::-;25421:3;25440:20;25458:1;25440:20;:::i;:::-;25435:25;;25474:20;25492:1;25474:20;:::i;:::-;25469:25;;25517:1;25514;25510:9;25503:16;;25538:3;25535:1;25532:10;25529:36;;;25545:18;;:::i;:::-;25529:36;25381:191;;;;:::o;25578:176::-;25718:28;25714:1;25706:6;25702:14;25695:52;25578:176;:::o;25760:366::-;25902:3;25923:67;25987:2;25982:3;25923:67;:::i;:::-;25916:74;;25999:93;26088:3;25999:93;:::i;:::-;26117:2;26112:3;26108:12;26101:19;;25760:366;;;:::o;26132:419::-;26298:4;26336:2;26325:9;26321:18;26313:26;;26385:9;26379:4;26375:20;26371:1;26360:9;26356:17;26349:47;26413:131;26539:4;26413:131;:::i;:::-;26405:139;;26132:419;;;:::o;26557:165::-;26697:17;26693:1;26685:6;26681:14;26674:41;26557:165;:::o;26728:366::-;26870:3;26891:67;26955:2;26950:3;26891:67;:::i;:::-;26884:74;;26967:93;27056:3;26967:93;:::i;:::-;27085:2;27080:3;27076:12;27069:19;;26728:366;;;:::o;27100:419::-;27266:4;27304:2;27293:9;27289:18;27281:26;;27353:9;27347:4;27343:20;27339:1;27328:9;27324:17;27317:47;27381:131;27507:4;27381:131;:::i;:::-;27373:139;;27100:419;;;:::o;27525:194::-;27565:4;27585:20;27603:1;27585:20;:::i;:::-;27580:25;;27619:20;27637:1;27619:20;:::i;:::-;27614:25;;27663:1;27660;27656:9;27648:17;;27687:1;27681:4;27678:11;27675:37;;;27692:18;;:::i;:::-;27675:37;27525:194;;;;:::o;27725:180::-;27773:77;27770:1;27763:88;27870:4;27867:1;27860:15;27894:4;27891:1;27884:15;27911:185;27951:1;27968:20;27986:1;27968:20;:::i;:::-;27963:25;;28002:20;28020:1;28002:20;:::i;:::-;27997:25;;28041:1;28031:35;;28046:18;;:::i;:::-;28031:35;28088:1;28085;28081:9;28076:14;;27911:185;;;;:::o;28102:220::-;28242:34;28238:1;28230:6;28226:14;28219:58;28311:3;28306:2;28298:6;28294:15;28287:28;28102:220;:::o;28328:366::-;28470:3;28491:67;28555:2;28550:3;28491:67;:::i;:::-;28484:74;;28567:93;28656:3;28567:93;:::i;:::-;28685:2;28680:3;28676:12;28669:19;;28328:366;;;:::o;28700:419::-;28866:4;28904:2;28893:9;28889:18;28881:26;;28953:9;28947:4;28943:20;28939:1;28928:9;28924:17;28917:47;28981:131;29107:4;28981:131;:::i;:::-;28973:139;;28700:419;;;:::o;29125:180::-;29173:77;29170:1;29163:88;29270:4;29267:1;29260:15;29294:4;29291:1;29284:15;29311:180;29359:77;29356:1;29349:88;29456:4;29453:1;29446:15;29480:4;29477:1;29470:15;29497:114;29564:6;29598:5;29592:12;29582:22;;29497:114;;;:::o;29617:184::-;29716:11;29750:6;29745:3;29738:19;29790:4;29785:3;29781:14;29766:29;;29617:184;;;;:::o;29807:132::-;29874:4;29897:3;29889:11;;29927:4;29922:3;29918:14;29910:22;;29807:132;;;:::o;29945:108::-;30022:24;30040:5;30022:24;:::i;:::-;30017:3;30010:37;29945:108;;:::o;30059:179::-;30128:10;30149:46;30191:3;30183:6;30149:46;:::i;:::-;30227:4;30222:3;30218:14;30204:28;;30059:179;;;;:::o;30244:113::-;30314:4;30346;30341:3;30337:14;30329:22;;30244:113;;;:::o;30393:732::-;30512:3;30541:54;30589:5;30541:54;:::i;:::-;30611:86;30690:6;30685:3;30611:86;:::i;:::-;30604:93;;30721:56;30771:5;30721:56;:::i;:::-;30800:7;30831:1;30816:284;30841:6;30838:1;30835:13;30816:284;;;30917:6;30911:13;30944:63;31003:3;30988:13;30944:63;:::i;:::-;30937:70;;31030:60;31083:6;31030:60;:::i;:::-;31020:70;;30876:224;30863:1;30860;30856:9;30851:14;;30816:284;;;30820:14;31116:3;31109:10;;30517:608;;;30393:732;;;;:::o;31131:831::-;31394:4;31432:3;31421:9;31417:19;31409:27;;31446:71;31514:1;31503:9;31499:17;31490:6;31446:71;:::i;:::-;31527:80;31603:2;31592:9;31588:18;31579:6;31527:80;:::i;:::-;31654:9;31648:4;31644:20;31639:2;31628:9;31624:18;31617:48;31682:108;31785:4;31776:6;31682:108;:::i;:::-;31674:116;;31800:72;31868:2;31857:9;31853:18;31844:6;31800:72;:::i;:::-;31882:73;31950:3;31939:9;31935:19;31926:6;31882:73;:::i;:::-;31131:831;;;;;;;;:::o;31968:177::-;32108:29;32104:1;32096:6;32092:14;32085:53;31968:177;:::o;32151:366::-;32293:3;32314:67;32378:2;32373:3;32314:67;:::i;:::-;32307:74;;32390:93;32479:3;32390:93;:::i;:::-;32508:2;32503:3;32499:12;32492:19;;32151:366;;;:::o;32523:419::-;32689:4;32727:2;32716:9;32712:18;32704:26;;32776:9;32770:4;32766:20;32762:1;32751:9;32747:17;32740:47;32804:131;32930:4;32804:131;:::i;:::-;32796:139;;32523:419;;;:::o

Swarm Source

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