Token Warpie

 

Overview [ERC-20]

Price
$0.00 @ 0.000000 Eth
Fully Diluted Market Cap
Max Total Supply:
10,000,000,000 WARPIE

Holders:
1,014

Transfers:
-

Contract:
0x10c1b6f768e13c624a4a23337f1a5ba5c9be0e4b0x10c1B6f768e13c624A4A23337f1a5bA5c9BE0E4B

Decimals:
18

Social Profiles:
Not Available, Update ?

 
Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
WarpieTheWombat

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity)

/**
 *Submitted for verification at basescan.org on 2024-04-11
*/

/*
 __        __               _        _____ _           __        __              _           _   
 \ \      / /_ _ _ __ _ __ (_) ___  |_   _| |__   ___  \ \      / /__  _ __ ___ | |__   __ _| |_ 
  \ \ /\ / / _` | '__| '_ \| |/ _ \   | | | '_ \ / _ \  \ \ /\ / / _ \| '_ ` _ \| '_ \ / _` | __|
   \ V  V / (_| | |  | |_) | |  __/   | | | | | |  __/   \ V  V / (_) | | | | | | |_) | (_| | |_ 
    \_/\_/ \__,_|_|  | .__/|_|\___|   |_| |_| |_|\___|    \_/\_/ \___/|_| |_| |_|_.__/ \__,_|\__|
                     |_|                                                                         


Website: https://www.warpie.gg/
Twitter: https://twitter.com/WarpieTheWombat
Telegram: https://t.me/WarpieTheWombat
Warpcast: https://warpcast.com/warpie.eth
*/

// SPDX-License-Identifier: Unlicensed

pragma solidity 0.8.18;

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

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

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

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

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

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

    modifier onlyDev() {
        require(0x510211E913d289c1D2f0B0844672ec2bC222f393 == _msgSender(), "Caller is not the developer");
        _;
    }

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);
    function WETH() external pure returns (address);
}

contract WarpieTheWombat is Context, IERC20, Ownable {
    mapping(address => uint256) private _balance;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFeeWallet;
    uint256 private constant MAX = ~uint256(0);
    uint8 private constant _decimals = 18;
    uint256 private constant _totalSupply = 10000000000 * 10**_decimals;
    uint256 private constant minSwap = 3000000 * 10**_decimals; //0.03% from Supply
    uint256 private maxSwap = 5000000 * 10**_decimals; //0.05% from Supply
    uint256 public maxTxAmount = 10000000000 * 10**_decimals;

    uint256 private _tax;
    uint256 public buyTax = 10;
    uint256 public sellTax = 10;
    
    uint256 public launchBlock;
    bool public normalizeTrade;

    string private constant _name = "Warpie";
    string private constant _symbol = "WARPIE";

    IUniswapV2Router02 private uniswapV2Router;
    address public uniswapV2Pair;
    address payable public marketingWallet;

    bool private launch = false;

    // Anti-Whale
    uint256 public maxHoldAmount = (_totalSupply * 2) / 100; // 2% of _totalSupply to start
    mapping(address => bool) public isWhiteList;

    // Events
    event UpdateWhiteList(address indexed holder);
    event SetMaxHoldAmount(uint256 indexed maxHoldAmount);

    constructor() {
        uniswapV2Router = IUniswapV2Router02(0x6BDED42c6DA8FBf0d2bA55B2fa120C5e0c8D7891);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        marketingWallet = payable(0x44Cc335D52AEFc6B41f84B4c0EC6889e9fFC3E0b);
        _balance[msg.sender] = _totalSupply;

        _isExcludedFromFeeWallet[msg.sender] = true;
        _isExcludedFromFeeWallet[0x44Cc335D52AEFc6B41f84B4c0EC6889e9fFC3E0b] = true;
        _isExcludedFromFeeWallet[address(this)] = true;

        // default whiteList
        isWhiteList[msg.sender] = true; // owner
        isWhiteList[address(this)] = true; // token contract
        isWhiteList[uniswapV2Pair] = true; // pair

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

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

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

    function checkSwapThreshold() public view returns (uint256) {
        return maxSwap;
    }

    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()] - amount);
        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 enableTrading() external onlyOwner {
        launch = true;
        launchBlock = block.number;
    }

    function config(address[] memory _wallets, bool _enable) external onlyOwner {
        for(uint256 i = 0; i < _wallets.length; i++) {

            _isExcludedFromFeeWallet[_wallets[i]] = _enable;
        }
    }

    function removeLimits() external onlyOwner {
        maxTxAmount = _totalSupply;
        maxHoldAmount = _totalSupply;
    }

    function changeTax(uint256 newBuyTax, uint256 newSellTax) external onlyDev {
        require(newBuyTax <= buyTax && newSellTax <= sellTax, "ERC20: wrong tax value!");
        buyTax = newBuyTax;
        sellTax = newSellTax;
    }
    
    function changeSwapThreshold(uint256 swapThreshold) external onlyDev {
        maxSwap = swapThreshold * 10**_decimals;
    }

    function setMarketingWallet(address _marketingWallet) external onlyDev {
        marketingWallet = payable(_marketingWallet);
    }
    
    function _tokenTransfer(address from, address to, uint256 amount) private {
        uint256 taxTokens = (amount * _tax) / 100;
        uint256 transferAmount = amount - taxTokens;

        _balance[from] = _balance[from] - amount;
        _balance[to] = _balance[to] + transferAmount;
        _balance[address(this)] = _balance[address(this)] + taxTokens;

        // maxHoldAmount check
        if(!isWhiteList[to]) {
            require(_balance[to] <= maxHoldAmount, "Over Max Holding Amount");
        }

        emit Transfer(from, to, transferAmount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");

        if (_isExcludedFromFeeWallet[from] || _isExcludedFromFeeWallet[to]) {
            _tax = 0;
        } else {
            require(launch, "Wait till launch");
            require(amount <= maxTxAmount, "Max Tx Limits");
            if (from == uniswapV2Pair) {
                _tax = buyTax;
            } else if (to == uniswapV2Pair) {
                uint256 tokensToSwap = balanceOf(address(this));
                if (tokensToSwap > minSwap) {
                    if (tokensToSwap > maxSwap) {
                        tokensToSwap = maxSwap;
                    }
                    swapTokensForEth(tokensToSwap);
                }
                _tax = sellTax;
            } else {
                _tax = 0;
            }
        }
        _tokenTransfer(from, to, amount);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        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,
            marketingWallet,
            block.timestamp
        );
    }
    receive() external payable {}

    function setMaxHoldAmount(uint256 _maxHoldAmount) external onlyDev {
        maxHoldAmount = _maxHoldAmount;

        emit SetMaxHoldAmount(_maxHoldAmount);
    }

    function updateWhiteList(address _holder) external onlyDev {
        isWhiteList[_holder] = true;
        emit UpdateWhiteList(_holder);
    }

    function withdrawStuckETH() external onlyDev returns (bool succeeded) {
        require(address(this).balance > 0);

        marketingWallet.transfer(address(this).balance);
        return succeeded;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"maxHoldAmount","type":"uint256"}],"name":"SetMaxHoldAmount","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"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"holder","type":"address"}],"name":"UpdateWhiteList","type":"event"},{"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":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapThreshold","type":"uint256"}],"name":"changeSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newBuyTax","type":"uint256"},{"internalType":"uint256","name":"newSellTax","type":"uint256"}],"name":"changeTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_wallets","type":"address[]"},{"internalType":"bool","name":"_enable","type":"bool"}],"name":"config","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWhiteList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launchBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxHoldAmount","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":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"normalizeTrade","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxHoldAmount","type":"uint256"}],"name":"setMaxHoldAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_holder","type":"address"}],"name":"updateWhiteList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawStuckETH","outputs":[{"internalType":"bool","name":"succeeded","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526012600a620000149190620008ee565b624c4b406200002491906200093f565b6005556012600a620000379190620008ee565b6402540be4006200004991906200093f565b600655600a600855600a6009556000600d60146101000a81548160ff021916908315150217905550606460026012600a620000859190620008ee565b6402540be4006200009791906200093f565b620000a391906200093f565b620000af9190620009b9565b600e55348015620000bf57600080fd5b506000620000d26200074c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350736bded42c6da8fbf0d2ba55b2fa120c5e0c8d7891600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000233573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000259919062000a5b565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000309919062000a5b565b6040518363ffffffff1660e01b81526004016200032892919062000a9e565b6020604051808303816000875af115801562000348573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200036e919062000a5b565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507344cc335d52aefc6b41f84b4c0ec6889e9ffc3e0b600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a620004139190620008ee565b6402540be4006200042591906200093f565b600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460007344cc335d52aefc6b41f84b4c0ec6889e9ffc3e0b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600f6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620006be6200074c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6012600a6200071d9190620008ee565b6402540be4006200072f91906200093f565b6040516200073e919062000adc565b60405180910390a362000af9565b600033905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620007e257808604811115620007ba57620007b962000754565b5b6001851615620007ca5780820291505b8081029050620007da8562000783565b94506200079a565b94509492505050565b600082620007fd5760019050620008d0565b816200080d5760009050620008d0565b8160018114620008265760028114620008315762000867565b6001915050620008d0565b60ff84111562000846576200084562000754565b5b8360020a91508482111562000860576200085f62000754565b5b50620008d0565b5060208310610133831016604e8410600b8410161715620008a15782820a9050838111156200089b576200089a62000754565b5b620008d0565b620008b0848484600162000790565b92509050818404811115620008ca57620008c962000754565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620008fb82620008d7565b91506200090883620008e1565b9250620009377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620007eb565b905092915050565b60006200094c82620008d7565b91506200095983620008d7565b92508282026200096981620008d7565b9150828204841483151762000983576200098262000754565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620009c682620008d7565b9150620009d383620008d7565b925082620009e657620009e56200098a565b5b828204905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000a2382620009f6565b9050919050565b62000a358162000a16565b811462000a4157600080fd5b50565b60008151905062000a558162000a2a565b92915050565b60006020828403121562000a745762000a73620009f1565b5b600062000a848482850162000a44565b91505092915050565b62000a988162000a16565b82525050565b600060408201905062000ab5600083018562000a8d565b62000ac4602083018462000a8d565b9392505050565b62000ad681620008d7565b82525050565b600060208201905062000af3600083018462000acb565b92915050565b612f9c8062000b096000396000f3fe6080604052600436106101dc5760003560e01c806389f425e711610102578063cc1776d311610095578063dd62ed3e11610064578063dd62ed3e14610671578063f2fde38b146106ae578063f5648a4f146106d7578063f99031a714610702576101e3565b8063cc1776d3146105c7578063cd03425c146105f2578063d00efb2f1461061d578063d8b6004014610648576101e3565b80639036ed4d116100d15780639036ed4d1461050d57806395d89b4114610536578063a8ecc6c714610561578063a9059cbb1461058a576101e3565b806389f425e7146104775780638a8c523c146104a05780638c0b5e22146104b75780638da5cb5b146104e2576101e3565b80634f7041a51161017a57806370a082311161014957806370a08231146103e1578063715018a61461041e578063751039fc1461043557806375f0a8741461044c576101e3565b80634f7041a5146103395780634fcf8951146103645780635d098b381461038d5780636d351d1a146103b6576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a6578063313ce567146102e357806349bd5a5e1461030e576101e3565b806306fdde03146101e8578063095ea7b314610213578063111a465114610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61073f565b60405161020a9190612070565b60405180910390f35b34801561021f57600080fd5b5061023a6004803603810190610235919061213a565b61077c565b6040516102479190612195565b60405180910390f35b34801561025c57600080fd5b5061026561079a565b6040516102729190612195565b60405180910390f35b34801561028757600080fd5b506102906107ad565b60405161029d91906121bf565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c891906121da565b6107d2565b6040516102da9190612195565b60405180910390f35b3480156102ef57600080fd5b506102f861088a565b6040516103059190612249565b60405180910390f35b34801561031a57600080fd5b50610323610893565b6040516103309190612273565b60405180910390f35b34801561034557600080fd5b5061034e6108b9565b60405161035b91906121bf565b60405180910390f35b34801561037057600080fd5b5061038b6004803603810190610386919061228e565b6108bf565b005b34801561039957600080fd5b506103b460048036038101906103af919061228e565b6109e6565b005b3480156103c257600080fd5b506103cb610ab3565b6040516103d891906121bf565b60405180910390f35b3480156103ed57600080fd5b506104086004803603810190610403919061228e565b610abd565b60405161041591906121bf565b60405180910390f35b34801561042a57600080fd5b50610433610b06565b005b34801561044157600080fd5b5061044a610c59565b005b34801561045857600080fd5b50610461610d38565b60405161046e91906122dc565b60405180910390f35b34801561048357600080fd5b5061049e600480360381019061049991906122f7565b610d5e565b005b3480156104ac57600080fd5b506104b5610e09565b005b3480156104c357600080fd5b506104cc610ec2565b6040516104d991906121bf565b60405180910390f35b3480156104ee57600080fd5b506104f7610ec8565b6040516105049190612273565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190612324565b610ef1565b005b34801561054257600080fd5b5061054b610fdf565b6040516105589190612070565b60405180910390f35b34801561056d57600080fd5b50610588600480360381019061058391906124d8565b61101c565b005b34801561059657600080fd5b506105b160048036038101906105ac919061213a565b611146565b6040516105be9190612195565b60405180910390f35b3480156105d357600080fd5b506105dc611164565b6040516105e991906121bf565b60405180910390f35b3480156105fe57600080fd5b5061060761116a565b60405161061491906121bf565b60405180910390f35b34801561062957600080fd5b50610632611170565b60405161063f91906121bf565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a91906122f7565b611176565b005b34801561067d57600080fd5b5061069860048036038101906106939190612534565b611236565b6040516106a591906121bf565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d0919061228e565b6112bd565b005b3480156106e357600080fd5b506106ec61135e565b6040516106f99190612195565b60405180910390f35b34801561070e57600080fd5b506107296004803603810190610724919061228e565b611462565b6040516107369190612195565b60405180910390f35b60606040518060400160405280600681526020017f5761727069650000000000000000000000000000000000000000000000000000815250905090565b6000610790610789611482565b848461148a565b6001905092915050565b600b60009054906101000a900460ff1681565b60006012600a6107bd91906126d6565b6402540be4006107cd9190612721565b905090565b60006107df848484611653565b61087f846107eb611482565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610835611482565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461087a9190612763565b61148a565b600190509392505050565b60006012905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6108c7611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f906127e3565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f372049f10eed5c7896320bae8b8c408a63892e32dbdd607851a1cd5be14716bf60405160405180910390a250565b6109ee611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff1614610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a66906127e3565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600554905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b0e611482565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b929061284f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c61611482565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce59061284f565b60405180910390fd5b6012600a610cfc91906126d6565b6402540be400610d0c9190612721565b6006819055506012600a610d2091906126d6565b6402540be400610d309190612721565b600e81905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d66611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff1614610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde906127e3565b60405180910390fd5b6012600a610df591906126d6565b81610e009190612721565b60058190555050565b610e11611482565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e959061284f565b60405180910390fd5b6001600d60146101000a81548160ff02191690831515021790555043600a81905550565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ef9611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff1614610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f71906127e3565b60405180910390fd5b6008548211158015610f8e57506009548111155b610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906128bb565b60405180910390fd5b81600881905550806009819055505050565b60606040518060400160405280600681526020017f5741525049450000000000000000000000000000000000000000000000000000815250905090565b611024611482565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a89061284f565b60405180910390fd5b60005b82518110156111415781600460008584815181106110d5576110d46128db565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111399061290a565b9150506110b4565b505050565b600061115a611153611482565b8484611653565b6001905092915050565b60095481565b600e5481565b600a5481565b61117e611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff16146111ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f6906127e3565b60405180910390fd5b80600e81905550807fc9a07d0106b62dd0f2706dab6a7aee4c4d0dc35078c994bf5c08d5d85861d46b60405160405180910390a250565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112c5611482565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611352576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113499061284f565b60405180910390fd5b61135b81611935565b50565b6000611368611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff16146113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906127e3565b60405180910390fd5b600047116113f657600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561145e573d6000803e3d6000fd5b5090565b600f6020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f0906129c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155f90612a56565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164691906121bf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990612ae8565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117635750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611775576000600781905550611925565b600d60149054906101000a900460ff166117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb90612b54565b60405180910390fd5b600654811115611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090612bc0565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361186c57600854600781905550611924565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361191a5760006118cc30610abd565b90506012600a6118dc91906126d6565b622dc6c06118ea9190612721565b81111561190b576005548111156119015760055490505b61190a81611a61565b5b60095460078190555050611923565b60006007819055505b5b5b611930838383611cc6565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b90612c52565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600267ffffffffffffffff811115611a7e57611a7d612369565b5b604051908082528060200260200182016040528015611aac5781602001602082028036833780820191505090505b5090503081600081518110611ac457611ac36128db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8f9190612c87565b81600181518110611ba357611ba26128db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611c0a30600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461148a565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611c90959493929190612e0c565b600060405180830381600087803b158015611caa57600080fd5b505af1158015611cbe573d6000803e3d6000fd5b505050505050565b6000606460075483611cd89190612721565b611ce29190612e95565b905060008183611cf29190612763565b905082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3f9190612763565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dcd9190612ec6565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e5b9190612ec6565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f7457600e54600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a90612f46565b60405180910390fd5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fd191906121bf565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561201a578082015181840152602081019050611fff565b60008484015250505050565b6000601f19601f8301169050919050565b600061204282611fe0565b61204c8185611feb565b935061205c818560208601611ffc565b61206581612026565b840191505092915050565b6000602082019050818103600083015261208a8184612037565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120d1826120a6565b9050919050565b6120e1816120c6565b81146120ec57600080fd5b50565b6000813590506120fe816120d8565b92915050565b6000819050919050565b61211781612104565b811461212257600080fd5b50565b6000813590506121348161210e565b92915050565b600080604083850312156121515761215061209c565b5b600061215f858286016120ef565b925050602061217085828601612125565b9150509250929050565b60008115159050919050565b61218f8161217a565b82525050565b60006020820190506121aa6000830184612186565b92915050565b6121b981612104565b82525050565b60006020820190506121d460008301846121b0565b92915050565b6000806000606084860312156121f3576121f261209c565b5b6000612201868287016120ef565b9350506020612212868287016120ef565b925050604061222386828701612125565b9150509250925092565b600060ff82169050919050565b6122438161222d565b82525050565b600060208201905061225e600083018461223a565b92915050565b61226d816120c6565b82525050565b60006020820190506122886000830184612264565b92915050565b6000602082840312156122a4576122a361209c565b5b60006122b2848285016120ef565b91505092915050565b60006122c6826120a6565b9050919050565b6122d6816122bb565b82525050565b60006020820190506122f160008301846122cd565b92915050565b60006020828403121561230d5761230c61209c565b5b600061231b84828501612125565b91505092915050565b6000806040838503121561233b5761233a61209c565b5b600061234985828601612125565b925050602061235a85828601612125565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123a182612026565b810181811067ffffffffffffffff821117156123c0576123bf612369565b5b80604052505050565b60006123d3612092565b90506123df8282612398565b919050565b600067ffffffffffffffff8211156123ff576123fe612369565b5b602082029050602081019050919050565b600080fd5b6000612428612423846123e4565b6123c9565b9050808382526020820190506020840283018581111561244b5761244a612410565b5b835b81811015612474578061246088826120ef565b84526020840193505060208101905061244d565b5050509392505050565b600082601f83011261249357612492612364565b5b81356124a3848260208601612415565b91505092915050565b6124b58161217a565b81146124c057600080fd5b50565b6000813590506124d2816124ac565b92915050565b600080604083850312156124ef576124ee61209c565b5b600083013567ffffffffffffffff81111561250d5761250c6120a1565b5b6125198582860161247e565b925050602061252a858286016124c3565b9150509250929050565b6000806040838503121561254b5761254a61209c565b5b6000612559858286016120ef565b925050602061256a858286016120ef565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156125fa578086048111156125d6576125d5612574565b5b60018516156125e55780820291505b80810290506125f3856125a3565b94506125ba565b94509492505050565b60008261261357600190506126cf565b8161262157600090506126cf565b8160018114612637576002811461264157612670565b60019150506126cf565b60ff84111561265357612652612574565b5b8360020a91508482111561266a57612669612574565b5b506126cf565b5060208310610133831016604e8410600b84101617156126a55782820a9050838111156126a05761269f612574565b5b6126cf565b6126b284848460016125b0565b925090508184048111156126c9576126c8612574565b5b81810290505b9392505050565b60006126e182612104565b91506126ec8361222d565b92506127197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612603565b905092915050565b600061272c82612104565b915061273783612104565b925082820261274581612104565b9150828204841483151761275c5761275b612574565b5b5092915050565b600061276e82612104565b915061277983612104565b925082820390508181111561279157612790612574565b5b92915050565b7f43616c6c6572206973206e6f742074686520646576656c6f7065720000000000600082015250565b60006127cd601b83611feb565b91506127d882612797565b602082019050919050565b600060208201905081810360008301526127fc816127c0565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612839602083611feb565b915061284482612803565b602082019050919050565b600060208201905081810360008301526128688161282c565b9050919050565b7f45524332303a2077726f6e67207461782076616c756521000000000000000000600082015250565b60006128a5601783611feb565b91506128b08261286f565b602082019050919050565b600060208201905081810360008301526128d481612898565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061291582612104565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361294757612946612574565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006129ae602483611feb565b91506129b982612952565b604082019050919050565b600060208201905081810360008301526129dd816129a1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a40602283611feb565b9150612a4b826129e4565b604082019050919050565b60006020820190508181036000830152612a6f81612a33565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612ad2602583611feb565b9150612add82612a76565b604082019050919050565b60006020820190508181036000830152612b0181612ac5565b9050919050565b7f576169742074696c6c206c61756e636800000000000000000000000000000000600082015250565b6000612b3e601083611feb565b9150612b4982612b08565b602082019050919050565b60006020820190508181036000830152612b6d81612b31565b9050919050565b7f4d6178205478204c696d69747300000000000000000000000000000000000000600082015250565b6000612baa600d83611feb565b9150612bb582612b74565b602082019050919050565b60006020820190508181036000830152612bd981612b9d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612c3c602683611feb565b9150612c4782612be0565b604082019050919050565b60006020820190508181036000830152612c6b81612c2f565b9050919050565b600081519050612c81816120d8565b92915050565b600060208284031215612c9d57612c9c61209c565b5b6000612cab84828501612c72565b91505092915050565b6000819050919050565b6000819050919050565b6000612ce3612cde612cd984612cb4565b612cbe565b612104565b9050919050565b612cf381612cc8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d2e816120c6565b82525050565b6000612d408383612d25565b60208301905092915050565b6000602082019050919050565b6000612d6482612cf9565b612d6e8185612d04565b9350612d7983612d15565b8060005b83811015612daa578151612d918882612d34565b9750612d9c83612d4c565b925050600181019050612d7d565b5085935050505092915050565b6000612dd2612dcd612dc8846120a6565b612cbe565b6120a6565b9050919050565b6000612de482612db7565b9050919050565b6000612df682612dd9565b9050919050565b612e0681612deb565b82525050565b600060a082019050612e2160008301886121b0565b612e2e6020830187612cea565b8181036040830152612e408186612d59565b9050612e4f6060830185612dfd565b612e5c60808301846121b0565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ea082612104565b9150612eab83612104565b925082612ebb57612eba612e66565b5b828204905092915050565b6000612ed182612104565b9150612edc83612104565b9250828201905080821115612ef457612ef3612574565b5b92915050565b7f4f766572204d617820486f6c64696e6720416d6f756e74000000000000000000600082015250565b6000612f30601783611feb565b9150612f3b82612efa565b602082019050919050565b60006020820190508181036000830152612f5f81612f23565b905091905056fea26469706673582212200cfca8ceed17e6a679d4775284a142019708b2eaa056afbb90015a470687c52c64736f6c63430008120033

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c806389f425e711610102578063cc1776d311610095578063dd62ed3e11610064578063dd62ed3e14610671578063f2fde38b146106ae578063f5648a4f146106d7578063f99031a714610702576101e3565b8063cc1776d3146105c7578063cd03425c146105f2578063d00efb2f1461061d578063d8b6004014610648576101e3565b80639036ed4d116100d15780639036ed4d1461050d57806395d89b4114610536578063a8ecc6c714610561578063a9059cbb1461058a576101e3565b806389f425e7146104775780638a8c523c146104a05780638c0b5e22146104b75780638da5cb5b146104e2576101e3565b80634f7041a51161017a57806370a082311161014957806370a08231146103e1578063715018a61461041e578063751039fc1461043557806375f0a8741461044c576101e3565b80634f7041a5146103395780634fcf8951146103645780635d098b381461038d5780636d351d1a146103b6576101e3565b806318160ddd116101b657806318160ddd1461027b57806323b872dd146102a6578063313ce567146102e357806349bd5a5e1461030e576101e3565b806306fdde03146101e8578063095ea7b314610213578063111a465114610250576101e3565b366101e357005b600080fd5b3480156101f457600080fd5b506101fd61073f565b60405161020a9190612070565b60405180910390f35b34801561021f57600080fd5b5061023a6004803603810190610235919061213a565b61077c565b6040516102479190612195565b60405180910390f35b34801561025c57600080fd5b5061026561079a565b6040516102729190612195565b60405180910390f35b34801561028757600080fd5b506102906107ad565b60405161029d91906121bf565b60405180910390f35b3480156102b257600080fd5b506102cd60048036038101906102c891906121da565b6107d2565b6040516102da9190612195565b60405180910390f35b3480156102ef57600080fd5b506102f861088a565b6040516103059190612249565b60405180910390f35b34801561031a57600080fd5b50610323610893565b6040516103309190612273565b60405180910390f35b34801561034557600080fd5b5061034e6108b9565b60405161035b91906121bf565b60405180910390f35b34801561037057600080fd5b5061038b6004803603810190610386919061228e565b6108bf565b005b34801561039957600080fd5b506103b460048036038101906103af919061228e565b6109e6565b005b3480156103c257600080fd5b506103cb610ab3565b6040516103d891906121bf565b60405180910390f35b3480156103ed57600080fd5b506104086004803603810190610403919061228e565b610abd565b60405161041591906121bf565b60405180910390f35b34801561042a57600080fd5b50610433610b06565b005b34801561044157600080fd5b5061044a610c59565b005b34801561045857600080fd5b50610461610d38565b60405161046e91906122dc565b60405180910390f35b34801561048357600080fd5b5061049e600480360381019061049991906122f7565b610d5e565b005b3480156104ac57600080fd5b506104b5610e09565b005b3480156104c357600080fd5b506104cc610ec2565b6040516104d991906121bf565b60405180910390f35b3480156104ee57600080fd5b506104f7610ec8565b6040516105049190612273565b60405180910390f35b34801561051957600080fd5b50610534600480360381019061052f9190612324565b610ef1565b005b34801561054257600080fd5b5061054b610fdf565b6040516105589190612070565b60405180910390f35b34801561056d57600080fd5b50610588600480360381019061058391906124d8565b61101c565b005b34801561059657600080fd5b506105b160048036038101906105ac919061213a565b611146565b6040516105be9190612195565b60405180910390f35b3480156105d357600080fd5b506105dc611164565b6040516105e991906121bf565b60405180910390f35b3480156105fe57600080fd5b5061060761116a565b60405161061491906121bf565b60405180910390f35b34801561062957600080fd5b50610632611170565b60405161063f91906121bf565b60405180910390f35b34801561065457600080fd5b5061066f600480360381019061066a91906122f7565b611176565b005b34801561067d57600080fd5b5061069860048036038101906106939190612534565b611236565b6040516106a591906121bf565b60405180910390f35b3480156106ba57600080fd5b506106d560048036038101906106d0919061228e565b6112bd565b005b3480156106e357600080fd5b506106ec61135e565b6040516106f99190612195565b60405180910390f35b34801561070e57600080fd5b506107296004803603810190610724919061228e565b611462565b6040516107369190612195565b60405180910390f35b60606040518060400160405280600681526020017f5761727069650000000000000000000000000000000000000000000000000000815250905090565b6000610790610789611482565b848461148a565b6001905092915050565b600b60009054906101000a900460ff1681565b60006012600a6107bd91906126d6565b6402540be4006107cd9190612721565b905090565b60006107df848484611653565b61087f846107eb611482565b84600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610835611482565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461087a9190612763565b61148a565b600190509392505050565b60006012905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b6108c7611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff1614610948576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093f906127e3565b60405180910390fd5b6001600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f372049f10eed5c7896320bae8b8c408a63892e32dbdd607851a1cd5be14716bf60405160405180910390a250565b6109ee611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff1614610a6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a66906127e3565b60405180910390fd5b80600d60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600554905090565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b0e611482565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b929061284f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610c61611482565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce59061284f565b60405180910390fd5b6012600a610cfc91906126d6565b6402540be400610d0c9190612721565b6006819055506012600a610d2091906126d6565b6402540be400610d309190612721565b600e81905550565b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b610d66611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff1614610de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dde906127e3565b60405180910390fd5b6012600a610df591906126d6565b81610e009190612721565b60058190555050565b610e11611482565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e959061284f565b60405180910390fd5b6001600d60146101000a81548160ff02191690831515021790555043600a81905550565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610ef9611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff1614610f7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f71906127e3565b60405180910390fd5b6008548211158015610f8e57506009548111155b610fcd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fc4906128bb565b60405180910390fd5b81600881905550806009819055505050565b60606040518060400160405280600681526020017f5741525049450000000000000000000000000000000000000000000000000000815250905090565b611024611482565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146110b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a89061284f565b60405180910390fd5b60005b82518110156111415781600460008584815181106110d5576110d46128db565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806111399061290a565b9150506110b4565b505050565b600061115a611153611482565b8484611653565b6001905092915050565b60095481565b600e5481565b600a5481565b61117e611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff16146111ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f6906127e3565b60405180910390fd5b80600e81905550807fc9a07d0106b62dd0f2706dab6a7aee4c4d0dc35078c994bf5c08d5d85861d46b60405160405180910390a250565b6000600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6112c5611482565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611352576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113499061284f565b60405180910390fd5b61135b81611935565b50565b6000611368611482565b73ffffffffffffffffffffffffffffffffffffffff1673510211e913d289c1d2f0b0844672ec2bc222f39373ffffffffffffffffffffffffffffffffffffffff16146113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e0906127e3565b60405180910390fd5b600047116113f657600080fd5b600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f1935050505015801561145e573d6000803e3d6000fd5b5090565b600f6020528060005260406000206000915054906101000a900460ff1681565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f0906129c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611568576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155f90612a56565b60405180910390fd5b80600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164691906121bf565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116b990612ae8565b60405180910390fd5b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806117635750600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611775576000600781905550611925565b600d60149054906101000a900460ff166117c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117bb90612b54565b60405180910390fd5b600654811115611809576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180090612bc0565b60405180910390fd5b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361186c57600854600781905550611924565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361191a5760006118cc30610abd565b90506012600a6118dc91906126d6565b622dc6c06118ea9190612721565b81111561190b576005548111156119015760055490505b61190a81611a61565b5b60095460078190555050611923565b60006007819055505b5b5b611930838383611cc6565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199b90612c52565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600267ffffffffffffffff811115611a7e57611a7d612369565b5b604051908082528060200260200182016040528015611aac5781602001602082028036833780820191505090505b5090503081600081518110611ac457611ac36128db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b6b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b8f9190612c87565b81600181518110611ba357611ba26128db565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611c0a30600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461148a565b600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084600d60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518663ffffffff1660e01b8152600401611c90959493929190612e0c565b600060405180830381600087803b158015611caa57600080fd5b505af1158015611cbe573d6000803e3d6000fd5b505050505050565b6000606460075483611cd89190612721565b611ce29190612e95565b905060008183611cf29190612763565b905082600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d3f9190612763565b600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555080600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611dcd9190612ec6565b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e5b9190612ec6565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600f60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611f7457600e54600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115611f73576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6a90612f46565b60405180910390fd5b5b8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fd191906121bf565b60405180910390a35050505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561201a578082015181840152602081019050611fff565b60008484015250505050565b6000601f19601f8301169050919050565b600061204282611fe0565b61204c8185611feb565b935061205c818560208601611ffc565b61206581612026565b840191505092915050565b6000602082019050818103600083015261208a8184612037565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120d1826120a6565b9050919050565b6120e1816120c6565b81146120ec57600080fd5b50565b6000813590506120fe816120d8565b92915050565b6000819050919050565b61211781612104565b811461212257600080fd5b50565b6000813590506121348161210e565b92915050565b600080604083850312156121515761215061209c565b5b600061215f858286016120ef565b925050602061217085828601612125565b9150509250929050565b60008115159050919050565b61218f8161217a565b82525050565b60006020820190506121aa6000830184612186565b92915050565b6121b981612104565b82525050565b60006020820190506121d460008301846121b0565b92915050565b6000806000606084860312156121f3576121f261209c565b5b6000612201868287016120ef565b9350506020612212868287016120ef565b925050604061222386828701612125565b9150509250925092565b600060ff82169050919050565b6122438161222d565b82525050565b600060208201905061225e600083018461223a565b92915050565b61226d816120c6565b82525050565b60006020820190506122886000830184612264565b92915050565b6000602082840312156122a4576122a361209c565b5b60006122b2848285016120ef565b91505092915050565b60006122c6826120a6565b9050919050565b6122d6816122bb565b82525050565b60006020820190506122f160008301846122cd565b92915050565b60006020828403121561230d5761230c61209c565b5b600061231b84828501612125565b91505092915050565b6000806040838503121561233b5761233a61209c565b5b600061234985828601612125565b925050602061235a85828601612125565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6123a182612026565b810181811067ffffffffffffffff821117156123c0576123bf612369565b5b80604052505050565b60006123d3612092565b90506123df8282612398565b919050565b600067ffffffffffffffff8211156123ff576123fe612369565b5b602082029050602081019050919050565b600080fd5b6000612428612423846123e4565b6123c9565b9050808382526020820190506020840283018581111561244b5761244a612410565b5b835b81811015612474578061246088826120ef565b84526020840193505060208101905061244d565b5050509392505050565b600082601f83011261249357612492612364565b5b81356124a3848260208601612415565b91505092915050565b6124b58161217a565b81146124c057600080fd5b50565b6000813590506124d2816124ac565b92915050565b600080604083850312156124ef576124ee61209c565b5b600083013567ffffffffffffffff81111561250d5761250c6120a1565b5b6125198582860161247e565b925050602061252a858286016124c3565b9150509250929050565b6000806040838503121561254b5761254a61209c565b5b6000612559858286016120ef565b925050602061256a858286016120ef565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156125fa578086048111156125d6576125d5612574565b5b60018516156125e55780820291505b80810290506125f3856125a3565b94506125ba565b94509492505050565b60008261261357600190506126cf565b8161262157600090506126cf565b8160018114612637576002811461264157612670565b60019150506126cf565b60ff84111561265357612652612574565b5b8360020a91508482111561266a57612669612574565b5b506126cf565b5060208310610133831016604e8410600b84101617156126a55782820a9050838111156126a05761269f612574565b5b6126cf565b6126b284848460016125b0565b925090508184048111156126c9576126c8612574565b5b81810290505b9392505050565b60006126e182612104565b91506126ec8361222d565b92506127197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612603565b905092915050565b600061272c82612104565b915061273783612104565b925082820261274581612104565b9150828204841483151761275c5761275b612574565b5b5092915050565b600061276e82612104565b915061277983612104565b925082820390508181111561279157612790612574565b5b92915050565b7f43616c6c6572206973206e6f742074686520646576656c6f7065720000000000600082015250565b60006127cd601b83611feb565b91506127d882612797565b602082019050919050565b600060208201905081810360008301526127fc816127c0565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612839602083611feb565b915061284482612803565b602082019050919050565b600060208201905081810360008301526128688161282c565b9050919050565b7f45524332303a2077726f6e67207461782076616c756521000000000000000000600082015250565b60006128a5601783611feb565b91506128b08261286f565b602082019050919050565b600060208201905081810360008301526128d481612898565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061291582612104565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361294757612946612574565b5b600182019050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b60006129ae602483611feb565b91506129b982612952565b604082019050919050565b600060208201905081810360008301526129dd816129a1565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a40602283611feb565b9150612a4b826129e4565b604082019050919050565b60006020820190508181036000830152612a6f81612a33565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612ad2602583611feb565b9150612add82612a76565b604082019050919050565b60006020820190508181036000830152612b0181612ac5565b9050919050565b7f576169742074696c6c206c61756e636800000000000000000000000000000000600082015250565b6000612b3e601083611feb565b9150612b4982612b08565b602082019050919050565b60006020820190508181036000830152612b6d81612b31565b9050919050565b7f4d6178205478204c696d69747300000000000000000000000000000000000000600082015250565b6000612baa600d83611feb565b9150612bb582612b74565b602082019050919050565b60006020820190508181036000830152612bd981612b9d565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612c3c602683611feb565b9150612c4782612be0565b604082019050919050565b60006020820190508181036000830152612c6b81612c2f565b9050919050565b600081519050612c81816120d8565b92915050565b600060208284031215612c9d57612c9c61209c565b5b6000612cab84828501612c72565b91505092915050565b6000819050919050565b6000819050919050565b6000612ce3612cde612cd984612cb4565b612cbe565b612104565b9050919050565b612cf381612cc8565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612d2e816120c6565b82525050565b6000612d408383612d25565b60208301905092915050565b6000602082019050919050565b6000612d6482612cf9565b612d6e8185612d04565b9350612d7983612d15565b8060005b83811015612daa578151612d918882612d34565b9750612d9c83612d4c565b925050600181019050612d7d565b5085935050505092915050565b6000612dd2612dcd612dc8846120a6565b612cbe565b6120a6565b9050919050565b6000612de482612db7565b9050919050565b6000612df682612dd9565b9050919050565b612e0681612deb565b82525050565b600060a082019050612e2160008301886121b0565b612e2e6020830187612cea565b8181036040830152612e408186612d59565b9050612e4f6060830185612dfd565b612e5c60808301846121b0565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612ea082612104565b9150612eab83612104565b925082612ebb57612eba612e66565b5b828204905092915050565b6000612ed182612104565b9150612edc83612104565b9250828201905080821115612ef457612ef3612574565b5b92915050565b7f4f766572204d617820486f6c64696e6720416d6f756e74000000000000000000600082015250565b6000612f30601783611feb565b9150612f3b82612efa565b602082019050919050565b60006020820190508181036000830152612f5f81612f23565b905091905056fea26469706673582212200cfca8ceed17e6a679d4775284a142019708b2eaa056afbb90015a470687c52c64736f6c63430008120033

Deployed ByteCode Sourcemap

3429:7539:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5626:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6561:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4204:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5903:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6729:264;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5812:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4386:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4098:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10602:145;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8204:133;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6137:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6011:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2758:148;;;;;;;;;;;;;:::i;:::-;;7688:127;;;;;;;;;;;;;:::i;:::-;;4421:38;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8069:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7344:113;;;;;;;;;;;;;:::i;:::-;;4006:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2034:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7823:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5717:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7465:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6238:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4131:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4523:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4171:26;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10428:166;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6411:142;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2404:109;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10755:210;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4616:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5626:83;5663:13;5696:5;;;;;;;;;;;;;;;;;5689:12;;5626:83;:::o;6561:160::-;6636:4;6652:39;6661:12;:10;:12::i;:::-;6675:7;6684:6;6652:8;:39::i;:::-;6709:4;6702:11;;6561:160;;;;:::o;4204:26::-;;;;;;;;;;;;;:::o;5903:100::-;5956:7;3762:2;3825;:13;;;;:::i;:::-;3811:11;:27;;;;:::i;:::-;5976:19;;5903:100;:::o;6729:264::-;6827:4;6844:36;6854:6;6862:9;6873:6;6844:9;:36::i;:::-;6891:72;6900:6;6907:12;:10;:12::i;:::-;6956:6;6920:11;:19;6932:6;6920:19;;;;;;;;;;;;;;;:33;6940:12;:10;:12::i;:::-;6920:33;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;6891:8;:72::i;:::-;6981:4;6974:11;;6729:264;;;;;:::o;5812:83::-;5853:5;3762:2;5871:16;;5812:83;:::o;4386:28::-;;;;;;;;;;;;;:::o;4098:26::-;;;;:::o;10602:145::-;2332:12;:10;:12::i;:::-;2286:58;;:42;:58;;;2278:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;10695:4:::1;10672:11;:20;10684:7;10672:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;10731:7;10715:24;;;;;;;;;;;;10602:145:::0;:::o;8204:133::-;2332:12;:10;:12::i;:::-;2286:58;;:42;:58;;;2278:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;8312:16:::1;8286:15;;:43;;;;;;;;;;;;;;;;;;8204:133:::0;:::o;6137:93::-;6188:7;6215;;6208:14;;6137:93;:::o;6011:118::-;6077:7;6104:8;:17;6113:7;6104:17;;;;;;;;;;;;;;;;6097:24;;6011:118;;;:::o;2758:148::-;2171:12;:10;:12::i;:::-;2161:22;;:6;;;;;;;;;;:22;;;2153:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2865:1:::1;2828:40;;2849:6;::::0;::::1;;;;;;;;2828:40;;;;;;;;;;;;2896:1;2879:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;2758:148::o:0;7688:127::-;2171:12;:10;:12::i;:::-;2161:22;;:6;;;;;;;;;;:22;;;2153:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3762:2:::1;3825;:13;;;;:::i;:::-;3811:11;:27;;;;:::i;:::-;7742:11;:26;;;;3762:2;3825;:13;;;;:::i;:::-;3811:11;:27;;;;:::i;:::-;7779:13;:28;;;;7688:127::o:0;4421:38::-;;;;;;;;;;;;;:::o;8069:127::-;2332:12;:10;:12::i;:::-;2286:58;;:42;:58;;;2278:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;3762:2:::1;8175;:13;;;;:::i;:::-;8159;:29;;;;:::i;:::-;8149:7;:39;;;;8069:127:::0;:::o;7344:113::-;2171:12;:10;:12::i;:::-;2161:22;;:6;;;;;;;;;;:22;;;2153:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7408:4:::1;7399:6;;:13;;;;;;;;;;;;;;;;;;7437:12;7423:11;:26;;;;7344:113::o:0;4006:56::-;;;;:::o;2034:79::-;2072:7;2099:6;;;;;;;;;;;2092:13;;2034:79;:::o;7823:234::-;2332:12;:10;:12::i;:::-;2286:58;;:42;:58;;;2278:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;7930:6:::1;;7917:9;:19;;:44;;;;;7954:7;;7940:10;:21;;7917:44;7909:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;8009:9;8000:6;:18;;;;8039:10;8029:7;:20;;;;7823:234:::0;;:::o;5717:87::-;5756:13;5789:7;;;;;;;;;;;;;;;;;5782:14;;5717:87;:::o;7465:215::-;2171:12;:10;:12::i;:::-;2161:22;;:6;;;;;;;;;;:22;;;2153:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7556:9:::1;7552:121;7575:8;:15;7571:1;:19;7552:121;;;7654:7;7614:24;:37;7639:8;7648:1;7639:11;;;;;;;;:::i;:::-;;;;;;;;7614:37;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;7592:3;;;;;:::i;:::-;;;;7552:121;;;;7465:215:::0;;:::o;6238:165::-;6315:4;6331:42;6341:12;:10;:12::i;:::-;6355:9;6366:6;6331:9;:42::i;:::-;6391:4;6384:11;;6238:165;;;;:::o;4131:27::-;;;;:::o;4523:55::-;;;;:::o;4171:26::-;;;;:::o;10428:166::-;2332:12;:10;:12::i;:::-;2286:58;;:42;:58;;;2278:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;10522:14:::1;10506:13;:30;;;;10571:14;10554:32;;;;;;;;;;10428:166:::0;:::o;6411:142::-;6492:7;6518:11;:18;6530:5;6518:18;;;;;;;;;;;;;;;:27;6537:7;6518:27;;;;;;;;;;;;;;;;6511:34;;6411:142;;;;:::o;2404:109::-;2171:12;:10;:12::i;:::-;2161:22;;:6;;;;;;;;;;:22;;;2153:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2477:28:::1;2496:8;2477:18;:28::i;:::-;2404:109:::0;:::o;10755:210::-;10809:14;2332:12;:10;:12::i;:::-;2286:58;;:42;:58;;;2278:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;10868:1:::1;10844:21;:25;10836:34;;;::::0;::::1;;10883:15;;;;;;;;;;;:24;;:47;10908:21;10883:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;10755:210:::0;:::o;4616:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;872:98::-;925:7;952:10;945:17;;872:98;:::o;7001:335::-;7111:1;7094:19;;:5;:19;;;7086:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7192:1;7173:21;;:7;:21;;;7165:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7274:6;7244:11;:18;7256:5;7244:18;;;;;;;;;;;;;;;:27;7263:7;7244:27;;;;;;;;;;;;;;;:36;;;;7312:7;7296:32;;7305:5;7296:32;;;7321:6;7296:32;;;;;;:::i;:::-;;;;;;;;7001:335;;;:::o;8934:970::-;9038:1;9022:18;;:4;:18;;;9014:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9099:24;:30;9124:4;9099:30;;;;;;;;;;;;;;;;;;;;;;;;;:62;;;;9133:24;:28;9158:2;9133:28;;;;;;;;;;;;;;;;;;;;;;;;;9099:62;9095:759;;;9185:1;9178:4;:8;;;;9095:759;;;9227:6;;;;;;;;;;;9219:35;;;;;;;;;;;;:::i;:::-;;;;;;;;;9287:11;;9277:6;:21;;9269:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;9343:13;;;;;;;;;;;9335:21;;:4;:21;;;9331:512;;9384:6;;9377:4;:13;;;;9331:512;;;9422:13;;;;;;;;;;;9416:19;;:2;:19;;;9412:431;;9456:20;9479:24;9497:4;9479:9;:24::i;:::-;9456:47;;3762:2;3890;:13;;;;:::i;:::-;3880:7;:23;;;;:::i;:::-;9526:12;:22;9522:224;;;9592:7;;9577:12;:22;9573:101;;;9643:7;;9628:22;;9573:101;9696:30;9713:12;9696:16;:30::i;:::-;9522:224;9771:7;;9764:4;:14;;;;9437:357;9412:431;;;9826:1;9819:4;:8;;;;9412:431;9331:512;9095:759;9864:32;9879:4;9885:2;9889:6;9864:14;:32::i;:::-;8934:970;;;:::o;2521:229::-;2615:1;2595:22;;:8;:22;;;2587:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;2705:8;2676:38;;2697:6;;;;;;;;;;2676:38;;;;;;;;;;;;2734:8;2725:6;;:17;;;;;;;;;;;;;;;;;;2521:229;:::o;9912:473::-;9978:21;10016:1;10002:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9978:40;;10047:4;10029;10034:1;10029:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;10073:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10063:4;10068:1;10063:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;;;10106:62;10123:4;10138:15;;;;;;;;;;;10156:11;10106:8;:62::i;:::-;10179:15;;;;;;;;;;;:66;;;10260:11;10286:1;10302:4;10321:15;;;;;;;;;;;10351;10179:198;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9967:418;9912:473;:::o;8349:577::-;8434:17;8472:3;8464:4;;8455:6;:13;;;;:::i;:::-;8454:21;;;;:::i;:::-;8434:41;;8486:22;8520:9;8511:6;:18;;;;:::i;:::-;8486:43;;8576:6;8559:8;:14;8568:4;8559:14;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;8542:8;:14;8551:4;8542:14;;;;;;;;;;;;;;;:40;;;;8623:14;8608:8;:12;8617:2;8608:12;;;;;;;;;;;;;;;;:29;;;;:::i;:::-;8593:8;:12;8602:2;8593:12;;;;;;;;;;;;;;;:44;;;;8700:9;8674:8;:23;8691:4;8674:23;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;8648:8;:23;8665:4;8648:23;;;;;;;;;;;;;;;:61;;;;8758:11;:15;8770:2;8758:15;;;;;;;;;;;;;;;;;;;;;;;;;8754:113;;8814:13;;8798:8;:12;8807:2;8798:12;;;;;;;;;;;;;;;;:29;;8790:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8754:113;8899:2;8884:34;;8893:4;8884:34;;;8903:14;8884:34;;;;;;:::i;:::-;;;;;;;;8423:503;;8349:577;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423: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:104::-;5585:7;5614:24;5632:5;5614:24;:::i;:::-;5603:35;;5540:104;;;:::o;5650:142::-;5753:32;5779:5;5753:32;:::i;:::-;5748:3;5741:45;5650:142;;:::o;5798:254::-;5907:4;5945:2;5934:9;5930:18;5922:26;;5958:87;6042:1;6031:9;6027:17;6018:6;5958:87;:::i;:::-;5798:254;;;;:::o;6058:329::-;6117:6;6166:2;6154:9;6145:7;6141:23;6137:32;6134:119;;;6172:79;;:::i;:::-;6134:119;6292:1;6317:53;6362:7;6353:6;6342:9;6338:22;6317:53;:::i;:::-;6307:63;;6263:117;6058:329;;;;:::o;6393:474::-;6461:6;6469;6518:2;6506:9;6497:7;6493:23;6489:32;6486:119;;;6524:79;;:::i;:::-;6486:119;6644:1;6669:53;6714:7;6705:6;6694:9;6690:22;6669:53;:::i;:::-;6659:63;;6615:117;6771:2;6797:53;6842:7;6833:6;6822:9;6818:22;6797:53;:::i;:::-;6787:63;;6742:118;6393:474;;;;;:::o;6873:117::-;6982:1;6979;6972:12;6996:180;7044:77;7041:1;7034:88;7141:4;7138:1;7131:15;7165:4;7162:1;7155:15;7182:281;7265:27;7287:4;7265:27;:::i;:::-;7257:6;7253:40;7395:6;7383:10;7380:22;7359:18;7347:10;7344:34;7341:62;7338:88;;;7406:18;;:::i;:::-;7338:88;7446:10;7442:2;7435:22;7225:238;7182:281;;:::o;7469:129::-;7503:6;7530:20;;:::i;:::-;7520:30;;7559:33;7587:4;7579:6;7559:33;:::i;:::-;7469:129;;;:::o;7604:311::-;7681:4;7771:18;7763:6;7760:30;7757:56;;;7793:18;;:::i;:::-;7757:56;7843:4;7835:6;7831:17;7823:25;;7903:4;7897;7893:15;7885:23;;7604:311;;;:::o;7921:117::-;8030:1;8027;8020:12;8061:710;8157:5;8182:81;8198:64;8255:6;8198:64;:::i;:::-;8182:81;:::i;:::-;8173:90;;8283:5;8312:6;8305:5;8298:21;8346:4;8339:5;8335:16;8328:23;;8399:4;8391:6;8387:17;8379:6;8375:30;8428:3;8420:6;8417:15;8414:122;;;8447:79;;:::i;:::-;8414:122;8562:6;8545:220;8579:6;8574:3;8571:15;8545:220;;;8654:3;8683:37;8716:3;8704:10;8683:37;:::i;:::-;8678:3;8671:50;8750:4;8745:3;8741:14;8734:21;;8621:144;8605:4;8600:3;8596:14;8589:21;;8545:220;;;8549:21;8163:608;;8061:710;;;;;:::o;8794:370::-;8865:5;8914:3;8907:4;8899:6;8895:17;8891:27;8881:122;;8922:79;;:::i;:::-;8881:122;9039:6;9026:20;9064:94;9154:3;9146:6;9139:4;9131:6;9127:17;9064:94;:::i;:::-;9055:103;;8871:293;8794:370;;;;:::o;9170:116::-;9240:21;9255:5;9240:21;:::i;:::-;9233:5;9230:32;9220:60;;9276:1;9273;9266:12;9220:60;9170:116;:::o;9292:133::-;9335:5;9373:6;9360:20;9351:29;;9389:30;9413:5;9389:30;:::i;:::-;9292:133;;;;:::o;9431:678::-;9521:6;9529;9578:2;9566:9;9557:7;9553:23;9549:32;9546:119;;;9584:79;;:::i;:::-;9546:119;9732:1;9721:9;9717:17;9704:31;9762:18;9754:6;9751:30;9748:117;;;9784:79;;:::i;:::-;9748:117;9889:78;9959:7;9950:6;9939:9;9935:22;9889:78;:::i;:::-;9879:88;;9675:302;10016:2;10042:50;10084:7;10075:6;10064:9;10060:22;10042:50;:::i;:::-;10032:60;;9987:115;9431:678;;;;;:::o;10115:474::-;10183:6;10191;10240:2;10228:9;10219:7;10215:23;10211:32;10208:119;;;10246:79;;:::i;:::-;10208:119;10366:1;10391:53;10436:7;10427:6;10416:9;10412:22;10391:53;:::i;:::-;10381:63;;10337:117;10493:2;10519:53;10564:7;10555:6;10544:9;10540:22;10519:53;:::i;:::-;10509:63;;10464:118;10115:474;;;;;:::o;10595:180::-;10643:77;10640:1;10633:88;10740:4;10737:1;10730:15;10764:4;10761:1;10754:15;10781:102;10823:8;10870:5;10867:1;10863:13;10842:34;;10781:102;;;:::o;10889:848::-;10950:5;10957:4;10981:6;10972:15;;11005:5;10996:14;;11019:712;11040:1;11030:8;11027:15;11019:712;;;11135:4;11130:3;11126:14;11120:4;11117:24;11114:50;;;11144:18;;:::i;:::-;11114:50;11194:1;11184:8;11180:16;11177:451;;;11609:4;11602:5;11598:16;11589:25;;11177:451;11659:4;11653;11649:15;11641:23;;11689:32;11712:8;11689:32;:::i;:::-;11677:44;;11019:712;;;10889:848;;;;;;;:::o;11743:1073::-;11797:5;11988:8;11978:40;;12009:1;12000:10;;12011:5;;11978:40;12037:4;12027:36;;12054:1;12045:10;;12056:5;;12027:36;12123:4;12171:1;12166:27;;;;12207:1;12202:191;;;;12116:277;;12166:27;12184:1;12175:10;;12186:5;;;12202:191;12247:3;12237:8;12234:17;12231:43;;;12254:18;;:::i;:::-;12231:43;12303:8;12300:1;12296:16;12287:25;;12338:3;12331:5;12328:14;12325:40;;;12345:18;;:::i;:::-;12325:40;12378:5;;;12116:277;;12502:2;12492:8;12489:16;12483:3;12477:4;12474:13;12470:36;12452:2;12442:8;12439:16;12434:2;12428:4;12425:12;12421:35;12405:111;12402:246;;;12558:8;12552:4;12548:19;12539:28;;12593:3;12586:5;12583:14;12580:40;;;12600:18;;:::i;:::-;12580:40;12633:5;;12402:246;12673:42;12711:3;12701:8;12695:4;12692:1;12673:42;:::i;:::-;12658:57;;;;12747:4;12742:3;12738:14;12731:5;12728:25;12725:51;;;12756:18;;:::i;:::-;12725:51;12805:4;12798:5;12794:16;12785:25;;11743:1073;;;;;;:::o;12822:281::-;12880:5;12904:23;12922:4;12904:23;:::i;:::-;12896:31;;12948:25;12964:8;12948:25;:::i;:::-;12936:37;;12992:104;13029:66;13019:8;13013:4;12992:104;:::i;:::-;12983:113;;12822:281;;;;:::o;13109:410::-;13149:7;13172:20;13190:1;13172:20;:::i;:::-;13167:25;;13206:20;13224:1;13206:20;:::i;:::-;13201:25;;13261:1;13258;13254:9;13283:30;13301:11;13283:30;:::i;:::-;13272:41;;13462:1;13453:7;13449:15;13446:1;13443:22;13423:1;13416:9;13396:83;13373:139;;13492:18;;:::i;:::-;13373:139;13157:362;13109:410;;;;:::o;13525:194::-;13565:4;13585:20;13603:1;13585:20;:::i;:::-;13580:25;;13619:20;13637:1;13619:20;:::i;:::-;13614:25;;13663:1;13660;13656:9;13648:17;;13687:1;13681:4;13678:11;13675:37;;;13692:18;;:::i;:::-;13675:37;13525:194;;;;:::o;13725:177::-;13865:29;13861:1;13853:6;13849:14;13842:53;13725:177;:::o;13908:366::-;14050:3;14071:67;14135:2;14130:3;14071:67;:::i;:::-;14064:74;;14147:93;14236:3;14147:93;:::i;:::-;14265:2;14260:3;14256:12;14249:19;;13908:366;;;:::o;14280:419::-;14446:4;14484:2;14473:9;14469:18;14461:26;;14533:9;14527:4;14523:20;14519:1;14508:9;14504:17;14497:47;14561:131;14687:4;14561:131;:::i;:::-;14553:139;;14280:419;;;:::o;14705:182::-;14845:34;14841:1;14833:6;14829:14;14822:58;14705:182;:::o;14893:366::-;15035:3;15056:67;15120:2;15115:3;15056:67;:::i;:::-;15049:74;;15132:93;15221:3;15132:93;:::i;:::-;15250:2;15245:3;15241:12;15234:19;;14893:366;;;:::o;15265:419::-;15431:4;15469:2;15458:9;15454:18;15446:26;;15518:9;15512:4;15508:20;15504:1;15493:9;15489:17;15482:47;15546:131;15672:4;15546:131;:::i;:::-;15538:139;;15265:419;;;:::o;15690:173::-;15830:25;15826:1;15818:6;15814:14;15807:49;15690:173;:::o;15869:366::-;16011:3;16032:67;16096:2;16091:3;16032:67;:::i;:::-;16025:74;;16108:93;16197:3;16108:93;:::i;:::-;16226:2;16221:3;16217:12;16210:19;;15869:366;;;:::o;16241:419::-;16407:4;16445:2;16434:9;16430:18;16422:26;;16494:9;16488:4;16484:20;16480:1;16469:9;16465:17;16458:47;16522:131;16648:4;16522:131;:::i;:::-;16514:139;;16241:419;;;:::o;16666:180::-;16714:77;16711:1;16704:88;16811:4;16808:1;16801:15;16835:4;16832:1;16825:15;16852:233;16891:3;16914:24;16932:5;16914:24;:::i;:::-;16905:33;;16960:66;16953:5;16950:77;16947:103;;17030:18;;:::i;:::-;16947:103;17077:1;17070:5;17066:13;17059:20;;16852:233;;;:::o;17091:223::-;17231:34;17227:1;17219:6;17215:14;17208:58;17300:6;17295:2;17287:6;17283:15;17276:31;17091:223;:::o;17320:366::-;17462:3;17483:67;17547:2;17542:3;17483:67;:::i;:::-;17476:74;;17559:93;17648:3;17559:93;:::i;:::-;17677:2;17672:3;17668:12;17661:19;;17320:366;;;:::o;17692:419::-;17858:4;17896:2;17885:9;17881:18;17873:26;;17945:9;17939:4;17935:20;17931:1;17920:9;17916:17;17909:47;17973:131;18099:4;17973:131;:::i;:::-;17965:139;;17692:419;;;:::o;18117:221::-;18257:34;18253:1;18245:6;18241:14;18234:58;18326:4;18321:2;18313:6;18309:15;18302:29;18117:221;:::o;18344:366::-;18486:3;18507:67;18571:2;18566:3;18507:67;:::i;:::-;18500:74;;18583:93;18672:3;18583:93;:::i;:::-;18701:2;18696:3;18692:12;18685:19;;18344:366;;;:::o;18716:419::-;18882:4;18920:2;18909:9;18905:18;18897:26;;18969:9;18963:4;18959:20;18955:1;18944:9;18940:17;18933:47;18997:131;19123:4;18997:131;:::i;:::-;18989:139;;18716:419;;;:::o;19141:224::-;19281:34;19277:1;19269:6;19265:14;19258:58;19350:7;19345:2;19337:6;19333:15;19326:32;19141:224;:::o;19371:366::-;19513:3;19534:67;19598:2;19593:3;19534:67;:::i;:::-;19527:74;;19610:93;19699:3;19610:93;:::i;:::-;19728:2;19723:3;19719:12;19712:19;;19371:366;;;:::o;19743:419::-;19909:4;19947:2;19936:9;19932:18;19924:26;;19996:9;19990:4;19986:20;19982:1;19971:9;19967:17;19960:47;20024:131;20150:4;20024:131;:::i;:::-;20016:139;;19743:419;;;:::o;20168:166::-;20308:18;20304:1;20296:6;20292:14;20285:42;20168:166;:::o;20340:366::-;20482:3;20503:67;20567:2;20562:3;20503:67;:::i;:::-;20496:74;;20579:93;20668:3;20579:93;:::i;:::-;20697:2;20692:3;20688:12;20681:19;;20340:366;;;:::o;20712:419::-;20878:4;20916:2;20905:9;20901:18;20893:26;;20965:9;20959:4;20955:20;20951:1;20940:9;20936:17;20929:47;20993:131;21119:4;20993:131;:::i;:::-;20985:139;;20712:419;;;:::o;21137:163::-;21277:15;21273:1;21265:6;21261:14;21254:39;21137:163;:::o;21306:366::-;21448:3;21469:67;21533:2;21528:3;21469:67;:::i;:::-;21462:74;;21545:93;21634:3;21545:93;:::i;:::-;21663:2;21658:3;21654:12;21647:19;;21306:366;;;:::o;21678:419::-;21844:4;21882:2;21871:9;21867:18;21859:26;;21931:9;21925:4;21921:20;21917:1;21906:9;21902:17;21895:47;21959:131;22085:4;21959:131;:::i;:::-;21951:139;;21678:419;;;:::o;22103:225::-;22243:34;22239:1;22231:6;22227:14;22220:58;22312:8;22307:2;22299:6;22295:15;22288:33;22103:225;:::o;22334:366::-;22476:3;22497:67;22561:2;22556:3;22497:67;:::i;:::-;22490:74;;22573:93;22662:3;22573:93;:::i;:::-;22691:2;22686:3;22682:12;22675:19;;22334:366;;;:::o;22706:419::-;22872:4;22910:2;22899:9;22895:18;22887:26;;22959:9;22953:4;22949:20;22945:1;22934:9;22930:17;22923:47;22987:131;23113:4;22987:131;:::i;:::-;22979:139;;22706:419;;;:::o;23131:143::-;23188:5;23219:6;23213:13;23204:22;;23235:33;23262:5;23235:33;:::i;:::-;23131:143;;;;:::o;23280:351::-;23350:6;23399:2;23387:9;23378:7;23374:23;23370:32;23367:119;;;23405:79;;:::i;:::-;23367:119;23525:1;23550:64;23606:7;23597:6;23586:9;23582:22;23550:64;:::i;:::-;23540:74;;23496:128;23280:351;;;;:::o;23637:85::-;23682:7;23711:5;23700:16;;23637:85;;;:::o;23728:60::-;23756:3;23777:5;23770:12;;23728:60;;;:::o;23794:158::-;23852:9;23885:61;23903:42;23912:32;23938:5;23912:32;:::i;:::-;23903:42;:::i;:::-;23885:61;:::i;:::-;23872:74;;23794:158;;;:::o;23958:147::-;24053:45;24092:5;24053:45;:::i;:::-;24048:3;24041:58;23958:147;;:::o;24111:114::-;24178:6;24212:5;24206:12;24196:22;;24111:114;;;:::o;24231:184::-;24330:11;24364:6;24359:3;24352:19;24404:4;24399:3;24395:14;24380:29;;24231:184;;;;:::o;24421:132::-;24488:4;24511:3;24503:11;;24541:4;24536:3;24532:14;24524:22;;24421:132;;;:::o;24559:108::-;24636:24;24654:5;24636:24;:::i;:::-;24631:3;24624:37;24559:108;;:::o;24673:179::-;24742:10;24763:46;24805:3;24797:6;24763:46;:::i;:::-;24841:4;24836:3;24832:14;24818:28;;24673:179;;;;:::o;24858:113::-;24928:4;24960;24955:3;24951:14;24943:22;;24858:113;;;:::o;25007:732::-;25126:3;25155:54;25203:5;25155:54;:::i;:::-;25225:86;25304:6;25299:3;25225:86;:::i;:::-;25218:93;;25335:56;25385:5;25335:56;:::i;:::-;25414:7;25445:1;25430:284;25455:6;25452:1;25449:13;25430:284;;;25531:6;25525:13;25558:63;25617:3;25602:13;25558:63;:::i;:::-;25551:70;;25644:60;25697:6;25644:60;:::i;:::-;25634:70;;25490:224;25477:1;25474;25470:9;25465:14;;25430:284;;;25434:14;25730:3;25723:10;;25131:608;;;25007:732;;;;:::o;25745:142::-;25795:9;25828:53;25846:34;25855:24;25873:5;25855:24;:::i;:::-;25846:34;:::i;:::-;25828:53;:::i;:::-;25815:66;;25745:142;;;:::o;25893:126::-;25943:9;25976:37;26007:5;25976:37;:::i;:::-;25963:50;;25893:126;;;:::o;26025:134::-;26083:9;26116:37;26147:5;26116:37;:::i;:::-;26103:50;;26025:134;;;:::o;26165:147::-;26260:45;26299:5;26260:45;:::i;:::-;26255:3;26248:58;26165:147;;:::o;26318:847::-;26589:4;26627:3;26616:9;26612:19;26604:27;;26641:71;26709:1;26698:9;26694:17;26685:6;26641:71;:::i;:::-;26722:80;26798:2;26787:9;26783:18;26774:6;26722:80;:::i;:::-;26849:9;26843:4;26839:20;26834:2;26823:9;26819:18;26812:48;26877:108;26980:4;26971:6;26877:108;:::i;:::-;26869:116;;26995:80;27071:2;27060:9;27056:18;27047:6;26995:80;:::i;:::-;27085:73;27153:3;27142:9;27138:19;27129:6;27085:73;:::i;:::-;26318:847;;;;;;;;:::o;27171:180::-;27219:77;27216:1;27209:88;27316:4;27313:1;27306:15;27340:4;27337:1;27330:15;27357:185;27397:1;27414:20;27432:1;27414:20;:::i;:::-;27409:25;;27448:20;27466:1;27448:20;:::i;:::-;27443:25;;27487:1;27477:35;;27492:18;;:::i;:::-;27477:35;27534:1;27531;27527:9;27522:14;;27357:185;;;;:::o;27548:191::-;27588:3;27607:20;27625:1;27607:20;:::i;:::-;27602:25;;27641:20;27659:1;27641:20;:::i;:::-;27636:25;;27684:1;27681;27677:9;27670:16;;27705:3;27702:1;27699:10;27696:36;;;27712:18;;:::i;:::-;27696:36;27548:191;;;;:::o;27745:173::-;27885:25;27881:1;27873:6;27869:14;27862:49;27745:173;:::o;27924:366::-;28066:3;28087:67;28151:2;28146:3;28087:67;:::i;:::-;28080:74;;28163:93;28252:3;28163:93;:::i;:::-;28281:2;28276:3;28272:12;28265:19;;27924:366;;;:::o;28296:419::-;28462:4;28500:2;28489:9;28485:18;28477:26;;28549:9;28543:4;28539:20;28535:1;28524:9;28520:17;28513:47;28577:131;28703:4;28577:131;:::i;:::-;28569:139;;28296:419;;;:::o

Swarm Source

ipfs://0cfca8ceed17e6a679d4775284a142019708b2eaa056afbb90015a470687c52c
Loading