Token Mobius Token

 

Overview ERC-20

Price
$0.00 @ 0.000000 MATIC
Fully Diluted Market Cap
Total Supply:
64,186,960.700372 MOT

Holders:
477 addresses

Transfers:
-

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

OVERVIEW

Mobius Finance is a decentralized trading platform that can create and trade synthetic assets.


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

Contract Source Code Verified (Exact Match)

Contract Name:
MobiusToken

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 13 : MobiusToken.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

import './base/Token.sol';
import './base/Importable.sol';
import './interfaces/IMobiusToken.sol';
import './interfaces/IIssuer.sol';
import './interfaces/IResolver.sol';

contract MobiusToken is Importable, Token, IMobiusToken {
    bytes32[] private MINTABLE_CONTRACTS = [CONTRACT_REWARD_COLLATERAL, CONTRACT_REWARD_STAKING,CONTRACT_REWARD_TRADING];
    uint256 public MAX_SUPPLY = 1e8;
    uint256 public AIRDROP_LIMIT = 55000000 * (10 ** uint256(decimals()));
    address DEPOSITOR_ROLE;

    modifier onlyResolver() {
        require(msg.sender == address(resolver), 'MobiusToken: caller is not the Resolver');
        _;
    }

    constructor(IResolver _resolver) Importable(_resolver) Token('Mobius Token','MOT',CONTRACT_MOBIUS_TOKEN) {
        imports = [
            CONTRACT_REWARD_COLLATERAL,
            CONTRACT_REWARD_STAKING,
            CONTRACT_REWARD_TRADING
        ];
    }

    function setDepositor(address addr) external onlyOwner {
        DEPOSITOR_ROLE = addr;
    }

    function mint(address account, uint256 amount) external override containAddress(MINTABLE_CONTRACTS) returns (bool) {
        require(totalSupply() + amount <= MAX_SUPPLY * (10 ** uint256(decimals())),'can not mint more');
        _mint(account, amount);
        return true;
    }

    function migrate(address from, address to) external override onlyResolver returns (bool) {
        uint256 amount = balanceOf(from);
        if (amount == 0) return true;
        _transfer(from, to, amount);
        return true;
    }
    
    function airdrop(address to,uint256 amount) external onlyOwner returns (bool) {
        require(AIRDROP_LIMIT  >= amount, 'can not airdrop more');
        AIRDROP_LIMIT = AIRDROP_LIMIT - amount;
        _mint(to, amount);
        return true;
    }

    /**
     * @notice called when token is deposited on root chain
     * @dev Should be callable only by ChildChainManager
     * Should handle deposit by minting the required amount for user
     * Make sure minting is done only by this function
     * @param user user address for whom deposit is being done
     * @param depositData abi encoded amount
     */
    function deposit(address user, bytes calldata depositData) external {
        require(msg.sender == DEPOSITOR_ROLE, "caller is not DEPOSITOR_ROLE");
        uint256 amount = abi.decode(depositData, (uint256));
        _mint(user, amount);
    }

    /**
     * @notice called when user wants to withdraw tokens back to root chain
     * @dev Should burn user's tokens. This transaction will be verified when exiting on root chain
     * @param amount amount of tokens to withdraw
     */
    function withdraw(uint256 amount) external {
        _burn(msg.sender, amount);
    }
}

File 2 of 13 : Constants.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

contract Constants {
    bytes32 internal constant MOT = 'MOT';
    bytes32 internal constant USD = 'moUSD';

    bytes32 internal constant CONTRACT_RESOLVER = 'Resolver';
    bytes32 internal constant CONTRACT_ASSET_PRICE = 'AssetPrice';
    bytes32 internal constant CONTRACT_SETTING = 'Setting';

    bytes32 internal constant CONTRACT_MOBIUS = 'Mobius';
    bytes32 internal constant CONTRACT_ESCROW = 'Escrow';
    bytes32 internal constant CONTRACT_ISSUER = 'Issuer';

    bytes32 internal constant CONTRACT_STAKER = 'Staker';
    bytes32 internal constant CONTRACT_TRADER = 'Trader';
    bytes32 internal constant CONTRACT_TEAM = 'Team';

    bytes32 internal constant CONTRACT_MOBIUS_TOKEN = 'MobiusToken';

    bytes32 internal constant CONTRACT_LIQUIDATOR = 'Liquidator';

    bytes32 internal constant CONTRACT_REWARD_COLLATERAL = 'RewardCollateral';
    bytes32 internal constant CONTRACT_REWARD_STAKING = 'RewardStaking';
    bytes32 internal constant CONTRACT_REWARD_TRADING = 'RewardTradings';

    bytes32 internal constant TRADING_FEE_ADDRESS = 'TradingFeeAddress';
    bytes32 internal constant LIQUIDATION_FEE_ADDRESS = 'LiquidationFeeAddress';

    bytes32 internal constant CONTRACT_DYNCMIC_TRADING_FEE = 'DynamicTradingFee';
}

File 3 of 13 : ExternalStorable.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

import './Ownable.sol';
import '../lib/Strings.sol';

contract ExternalStorable is Ownable {
    using Strings for string;
    address private _storage;

    event StorageChanged(address indexed previousValue, address indexed newValue);

    modifier onlyStorageSetup() {
        require(_storage != address(0), contractName.concat(': Storage not set'));
        _;
    }

    function setStorage(address value) public onlyOwner {
        require(value != address(0), "storage is a zero address");
        emit StorageChanged(_storage, value);
        _storage = value;
    }

    function getStorage() public view onlyStorageSetup returns (address) {
        return _storage;
    }
}

File 4 of 13 : Importable.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

import './Ownable.sol';
import '../interfaces/IResolver.sol';
import '../lib/Strings.sol';

contract Importable is Ownable {
    using Strings for string;

    IResolver public resolver;
    bytes32[] internal imports;

    mapping(bytes32 => address) private _cache;

    constructor(IResolver _resolver) {
        resolver = _resolver;
    }

    modifier onlyAddress(bytes32 name) {
        require(msg.sender == _cache[name], contractName.concat(': caller is not the ', name));
        _;
    }

    modifier containAddress(bytes32[] memory names) {
        require(names.length < 20, contractName.concat(': cannot have more than 20 items'));

        bool contain = false;
        for (uint256 i = 0; i < names.length; i++) {
            if (msg.sender == _cache[names[i]]) {
                contain = true;
                break;
            }
        }
        require(contain, contractName.concat(': caller is not in contains'));
        _;
    }

    modifier containAddressOrOwner(bytes32[] memory names) {
        require(names.length < 20, contractName.concat(': cannot have more than 20 items'));

        bool contain = false;
        for (uint256 i = 0; i < names.length; i++) {
            if (msg.sender == _cache[names[i]]) {
                contain = true;
                break;
            }
        }
        if (!contain) contain = (msg.sender == owner);
        require(contain, contractName.concat(': caller is not in dependencies'));
        _;
    }

    function refreshCache() external onlyOwner {
        for (uint256 i = 0; i < imports.length; i++) {
            bytes32 item = imports[i];
            _cache[item] = resolver.getAddress(item);
        }
    }

    function getImports() external view returns (bytes32[] memory) {
        return imports;
    }

    function requireAsset(bytes32 assetType, bytes32 assetName) internal view returns (address) {
        (bool exist, address assetAddress) = resolver.getAsset(assetType, assetName);
        require(exist, contractName.concat(': Missing Asset Token ', assetName));
        return assetAddress;
    }

    function assets(bytes32 assetType) internal view returns (bytes32[] memory) {
        return resolver.getAssets(assetType);
    }

    function addAddress(bytes32 name) external onlyOwner {
        _cache[name] = resolver.getAddress(name);
        imports.push(name);
    }

    function requireAddress(bytes32 name) internal view returns (address) {
        require(_cache[name] != address(0), contractName.concat(': Missing ', name));
        return _cache[name];
    }

    function getAddress(bytes32 name) external view returns (address) {
        return _cache[name];
    }
}

File 5 of 13 : Ownable.sol
pragma solidity =0.8.4;

// SPDX-License-Identifier: MIT
import '../lib/Strings.sol';
import './Constants.sol';
import '../interfaces/IOwnable.sol';

contract Ownable is Constants, IOwnable {
    using Strings for string;

    string public override contractName;
    address public owner;
    address public manager;

    constructor() {
        owner = msg.sender;
        manager = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner, contractName.concat(': caller is not the owner'));
        _;
    }

    modifier onlyManager(bytes32 managerName) {
        require(msg.sender == manager, contractName.concat(': caller is not the ', managerName));
        _;
    }

    modifier allManager() {
        require(
            msg.sender == manager || msg.sender == owner,
            contractName.concat(': caller is not the manager or the owner')
        );
        _;
    }

    function setOwner(address _owner) public onlyOwner {
        require(_owner != address(0), contractName.concat(': new owner is the zero address'));
        emit OwnerChanged(owner, _owner);
        owner = _owner;
    }

    function setManager(address _manager) public virtual onlyOwner {
        require(_manager != address(0), contractName.concat(': new manager is the zero address'));
        emit ManagerChanged(manager, _manager);
        manager = _manager;
    }

    function setContractName(bytes32 _contractName) internal {
        contractName = string(abi.encodePacked(_contractName));
    }
}

File 6 of 13 : Token.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

import '../lib/Strings.sol';
import './ExternalStorable.sol';
import '../interfaces/storages/ITokenStorage.sol';
import '../interfaces/IERC20.sol';

contract Token is ExternalStorable, IERC20 {
    using Strings for string;
    
    bytes32 private constant TOTAL = 'Total';
    bytes32 private constant BALANCE = 'Balance';

    string internal _name;
    string internal _symbol;

    constructor(string memory __name,string memory __symbol,bytes32 contractName) {
        setContractName(contractName);
        _name = __name;
        _symbol = __symbol;
    }

    function Storage() internal view returns (ITokenStorage) {
        return ITokenStorage(getStorage());
    }

    function name() external override view returns (string memory) {
        return _name;
    }

    function symbol() external override view returns (string memory) {
        return _symbol;
    }

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

    function totalSupply() public override view returns (uint256) {
        return Storage().getUint(TOTAL, address(0));
    }

    function balanceOf(address account) public override view returns (uint256) {
        return Storage().getUint(BALANCE, account);
    }

    function allowance(address owner, address spender) external override view returns (uint256) {
        return Storage().getAllowance(owner, spender);
    }

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        _transfer(sender, recipient, amount);
        uint256 delta = Storage().getAllowance(sender, msg.sender) - amount;
        _approve(sender, msg.sender, delta);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal {
        Storage().setAllowance(owner, spender, amount);
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal {
        Storage().decrementUint(BALANCE, sender, amount);
        Storage().incrementUint(BALANCE, recipient, amount);
        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal {
        Storage().incrementUint(BALANCE, account, amount);
        Storage().incrementUint(TOTAL, address(0), amount);
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal {
        Storage().decrementUint(BALANCE, account, amount);
        Storage().decrementUint(TOTAL, address(0), amount);
        emit Transfer(account, address(0), amount);
    }
}

File 7 of 13 : IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

interface IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);

    function totalSupply() external view returns (uint256);

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

    function transfer(address recipient, uint256 value) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 value
    ) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

File 8 of 13 : IIssuer.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

interface IIssuer {
    function issueDebt(
        bytes32 stake,
        address account,
        bytes32 debtType,
        uint256 amountInUSD,
        uint256 amountInSynth
    ) external;

    function issueDebtWithPreviousStake(
        bytes32 stake, 
        address account, 
        bytes32 debtType, 
        uint256 amountInSynth
    ) external;

    function getIssuable(bytes32 stake, address account, bytes32 debtType) external view returns (uint256);

    function burnDebt(
        bytes32 stake,
        address account,
        bytes32 debtType,
        uint256 amount,
        address payer
    ) external returns (uint256);

    function issueSynth(
        bytes32 synth,
        address account,
        uint256 amount
    ) external;

    function burnSynth(
        bytes32 synth,
        address account,
        uint256 amount
    ) external;

    function getDebt(bytes32 stake, address account, bytes32 debtType) external view returns (uint256);
    function getDebtOriginal(bytes32 stake, address account, bytes32 debtType) external view returns (uint256, uint256, uint256);
    function getUsersTotalDebtInSynth(bytes32 synth) external view returns (uint256);

    function getDynamicTotalDebt() external view returns (uint256 platTotalDebt, uint256 usersTotalDebt, uint256 usersTotalDebtOriginal);

}

File 9 of 13 : IMobiusToken.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

import './IERC20.sol';

interface IMobiusToken is IERC20 {
    function mint(address account, uint256 amount) external returns (bool);
    function migrate(address from, address to) external returns (bool);
}

File 10 of 13 : IOwnable.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

interface IOwnable {
    function contractName() external view returns (string memory);

    event OwnerChanged(address indexed previousValue, address indexed newValue);
    event ManagerChanged(address indexed previousValue, address indexed newValue);
}

File 11 of 13 : IResolver.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

interface IResolver {
    function getAddress(bytes32 name) external view returns (address);

    function getAsset(bytes32 assetType, bytes32 assetName) external view returns (bool, address);

    function getAssets(bytes32 assetType) external view returns (bytes32[] memory);

    event AssetChanged(bytes32 indexed assetType, bytes32 indexed assetName, address previousValue, address newValue);
    event AddressChanged(bytes32 indexed name, address indexed previousValue, address indexed newValue);
    event MobiusTokenMigrated(bytes32 indexed name, address indexed previousValue, address indexed newValue);
}

File 12 of 13 : ITokenStorage.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

interface ITokenStorage {
    function setAllowance(
        address key,
        address field,
        uint256 value
    ) external;

    function getAllowance(address key, address field) external view returns (uint256);

    function incrementUint(
        bytes32 key,
        address field,
        uint256 value
    ) external returns (uint256);

    function decrementUint(
        bytes32 key,
        address field,
        uint256 value
    ) external returns (uint256);

    function setUint(
        bytes32 key,
        address field,
        uint256 value
    ) external;

    function getUint(bytes32 key, address field) external view returns (uint256);
}

File 13 of 13 : Strings.sol
// SPDX-License-Identifier: MIT
pragma solidity =0.8.4;

library Strings {
    function toBytes32(string memory a) internal pure returns (bytes32) {
        bytes32 b;
        assembly {
            b := mload(add(a, 32))
        }
        return b;
    }

    function concat(string memory a, string memory b) internal pure returns (string memory) {
        return string(abi.encodePacked(a, b));
    }

    function concat(
        string memory a,
        string memory b,
        bytes32 c
    ) internal pure returns (string memory) {
        return string(abi.encodePacked(a, b, c));
    }
}

Settings
{
  "remappings": [],
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "evmVersion": "istanbul",
  "libraries": {},
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"contract IResolver","name":"_resolver","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":"previousValue","type":"address"},{"indexed":true,"internalType":"address","name":"newValue","type":"address"}],"name":"ManagerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousValue","type":"address"},{"indexed":true,"internalType":"address","name":"newValue","type":"address"}],"name":"OwnerChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousValue","type":"address"},{"indexed":true,"internalType":"address","name":"newValue","type":"address"}],"name":"StorageChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"AIRDROP_LIMIT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"addAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"airdrop","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"contractName","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bytes","name":"depositData","type":"bytes"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"name","type":"bytes32"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getImports","outputs":[{"internalType":"bytes32[]","name":"","type":"bytes32[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStorage","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"}],"name":"migrate","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"refreshCache","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resolver","outputs":[{"internalType":"contract IResolver","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"}],"name":"setDepositor","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"value","type":"address"}],"name":"setStorage","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260405180606001604052807f526577617264436f6c6c61746572616c0000000000000000000000000000000081526020017f5265776172645374616b696e670000000000000000000000000000000000000081526020017f52657761726454726164696e677300000000000000000000000000000000000081525060099060036200009192919062000375565b506305f5e100600a55620000aa6200032f60201b60201c565b60ff16600a620000bb91906200056c565b6303473bc0620000cc9190620006a9565b600b55348015620000dc57600080fd5b506040516200407e3803806200407e8339818101604052810190620001029190620004ad565b6040518060400160405280600c81526020017f4d6f6269757320546f6b656e00000000000000000000000000000000000000008152506040518060400160405280600381526020017f4d4f5400000000000000000000000000000000000000000000000000000000008152507f4d6f62697573546f6b656e0000000000000000000000000000000000000000008333600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000265816200033860201b60201c565b82600790805190602001906200027d929190620003c7565b50816008908051906020019062000296929190620003c7565b5050505060405180606001604052807f526577617264436f6c6c61746572616c0000000000000000000000000000000081526020017f5265776172645374616b696e670000000000000000000000000000000000000081526020017f52657761726454726164696e677300000000000000000000000000000000000081525060049060036200032792919062000375565b50506200082b565b60006012905090565b806040516020016200034b9190620004f4565b6040516020818303038152906040526000908051906020019062000371929190620003c7565b5050565b828054828255906000526020600020908101928215620003b4579160200282015b82811115620003b357825182559160200191906001019062000396565b5b509050620003c3919062000458565b5090565b828054620003d59062000766565b90600052602060002090601f016020900481019282620003f9576000855562000445565b82601f106200041457805160ff191683800117855562000445565b8280016001018555821562000445579182015b828111156200044457825182559160200191906001019062000427565b5b50905062000454919062000477565b5090565b5b808211156200047357600081600090555060010162000459565b5090565b5b808211156200049257600081600090555060010162000478565b5090565b600081519050620004a78162000811565b92915050565b600060208284031215620004c057600080fd5b6000620004d08482850162000496565b91505092915050565b620004ee620004e8826200071e565b6200079c565b82525050565b6000620005028284620004d9565b60208201915081905092915050565b6000808291508390505b600185111562000563578086048111156200053b576200053a620007a6565b5b60018516156200054b5780820291505b80810290506200055b8562000804565b94506200051b565b94509492505050565b600062000579826200075c565b915062000586836200075c565b9250620005b57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005bd565b905092915050565b600082620005cf5760019050620006a2565b81620005df5760009050620006a2565b8160018114620005f85760028114620006035762000639565b6001915050620006a2565b60ff841115620006185762000617620007a6565b5b8360020a915084821115620006325762000631620007a6565b5b50620006a2565b5060208310610133831016604e8410600b8410161715620006735782820a9050838111156200066d576200066c620007a6565b5b620006a2565b62000682848484600162000511565b925090508184048111156200069c576200069b620007a6565b5b81810290505b9392505050565b6000620006b6826200075c565b9150620006c3836200075c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615620006ff57620006fe620007a6565b5b828202905092915050565b600062000717826200073c565b9050919050565b6000819050919050565b600062000735826200070a565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200077f57607f821691505b60208210811415620007965762000795620007d5565b5b50919050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60008160011c9050919050565b6200081c8162000728565b81146200082857600080fd5b50565b613843806200083b6000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c8063481c6a751161010457806395d89b41116100a2578063d0ebdbe711610071578063d0ebdbe714610548578063d5c2c8ca14610564578063dd62ed3e1461056e578063f2c098b71461059e576101cf565b806395d89b41146104c057806399c9c36d146104de578063a9059cbb146104fc578063cf2c52cb1461052c576101cf565b80638aed3c32116100de5780638aed3c321461043a5780638ba4cc3c146104565780638da5cb5b146104865780639137c1a7146104a4576101cf565b8063481c6a75146103ce57806370a08231146103ec57806375d0c0dc1461041c576101cf565b806321f8a72111610171578063313ce5671161014b578063313ce5671461034457806332cb6b0c146103625780633408f73a1461038057806340c10f191461039e576101cf565b806321f8a721146102c857806323b872dd146102f85780632e1a7d4d14610328576101cf565b80631068361f116101ad5780631068361f14610240578063126779c21461027057806313af40351461028e57806318160ddd146102aa576101cf565b806304f3bcec146101d457806306fdde03146101f2578063095ea7b314610210575b600080fd5b6101dc6105ba565b6040516101e9919061313f565b60405180910390f35b6101fa6105e0565b604051610207919061315a565b60405180910390f35b61022a60048036038101906102259190612d39565b610672565b60405161023791906130a9565b60405180910390f35b61025a60048036038101906102559190612c56565b610689565b60405161026791906130a9565b60405180910390f35b610278610752565b6040516102859190613087565b60405180910390f35b6102a860048036038101906102a39190612c04565b6107aa565b005b6102b2610b14565b6040516102bf919061321c565b60405180910390f35b6102e260048036038101906102dd9190612d75565b610bce565b6040516102ef919061300c565b60405180910390f35b610312600480360381019061030d9190612c92565b610c0b565b60405161031f91906130a9565b60405180910390f35b610342600480360381019061033d9190612d9e565b610cd0565b005b61034c610cdd565b6040516103599190613237565b60405180910390f35b61036a610ce6565b604051610377919061321c565b60405180910390f35b610388610cec565b604051610395919061300c565b60405180910390f35b6103b860048036038101906103b39190612d39565b610e7c565b6040516103c591906130a9565b60405180910390f35b6103d661125c565b6040516103e3919061300c565b60405180910390f35b61040660048036038101906104019190612c04565b611282565b604051610413919061321c565b60405180910390f35b61042461133d565b604051610431919061315a565b60405180910390f35b610454600480360381019061044f9190612d75565b6113cb565b005b610470600480360381019061046b9190612d39565b611658565b60405161047d91906130a9565b60405180910390f35b61048e61182c565b60405161049b919061300c565b60405180910390f35b6104be60048036038101906104b99190612c04565b611852565b005b6104c8611ae7565b6040516104d5919061315a565b60405180910390f35b6104e6611b79565b6040516104f3919061321c565b60405180910390f35b61051660048036038101906105119190612d39565b611b7f565b60405161052391906130a9565b60405180910390f35b61054660048036038101906105419190612ce1565b611b96565b005b610562600480360381019061055d9190612c04565b611c49565b005b61056c611f96565b005b61058860048036038101906105839190612c56565b612267565b604051610595919061321c565b60405180910390f35b6105b860048036038101906105b39190612c04565b612303565b005b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600780546105ef906135bd565b80601f016020809104026020016040519081016040528092919081815260200182805461061b906135bd565b80156106685780601f1061063d57610100808354040283529160200191610668565b820191906000526020600020905b81548152906001019060200180831161064b57829003601f168201915b5050505050905090565b600061067f3384846124ac565b6001905092915050565b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461071b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610712906131fc565b60405180910390fd5b600061072684611282565b9050600081141561073b57600191505061074c565b61074684848361258c565b60019150505b92915050565b606060048054806020026020016040519081016040528092919081815260200182805480156107a057602002820191906000526020600020905b81548152602001906001019080831161078c575b5050505050905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146108cd6040518060400160405280601981526020017f3a2063616c6c6572206973206e6f7420746865206f776e65720000000000000081525060008054610841906135bd565b80601f016020809104026020016040519081016040528092919081815260200182805461086d906135bd565b80156108ba5780601f1061088f576101008083540402835291602001916108ba565b820191906000526020600020905b81548152906001019060200180831161089d57829003601f168201915b505050505061276490919063ffffffff16565b9061090e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610905919061315a565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a126040518060400160405280601f81526020017f3a206e6577206f776e657220697320746865207a65726f20616464726573730081525060008054610986906135bd565b80601f01602080910402602001604051908101604052809291908181526020018280546109b2906135bd565b80156109ff5780601f106109d4576101008083540402835291602001916109ff565b820191906000526020600020905b8154815290600101906020018083116109e257829003601f168201915b505050505061276490919063ffffffff16565b90610a53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a4a919061315a565b60405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb532073b38c83145e3e5135377a08bf9aab55bc0fd7c1179cd4fb995d2a5159c60405160405180910390a380600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000610b1e612790565b73ffffffffffffffffffffffffffffffffffffffff1663e02440357f546f74616c00000000000000000000000000000000000000000000000000000060006040518363ffffffff1660e01b8152600401610b799291906130df565b60206040518083038186803b158015610b9157600080fd5b505afa158015610ba5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bc99190612dc7565b905090565b60006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c1884848461258c565b600082610c23612790565b73ffffffffffffffffffffffffffffffffffffffff16630af4187d87336040518363ffffffff1660e01b8152600401610c5d929190613027565b60206040518083038186803b158015610c7557600080fd5b505afa158015610c89573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cad9190612dc7565b610cb791906134d3565b9050610cc48533836124ac565b60019150509392505050565b610cda338261279f565b50565b60006012905090565b600a5481565b60008073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610e126040518060400160405280601181526020017f3a2053746f72616765206e6f742073657400000000000000000000000000000081525060008054610d86906135bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610db2906135bd565b8015610dff5780601f10610dd457610100808354040283529160200191610dff565b820191906000526020600020905b815481529060010190602001808311610de257829003601f168201915b505050505061276490919063ffffffff16565b90610e53576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4a919061315a565b60405180910390fd5b50600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60006009805480602002602001604051908101604052809291908181526020018280548015610eca57602002820191906000526020600020905b815481526020019060010190808311610eb6575b50505050506014815110610fa66040518060400160405280602081526020017f3a2063616e6e6f742068617665206d6f7265207468616e203230206974656d7381525060008054610f1a906135bd565b80601f0160208091040260200160405190810160405280929190818152602001828054610f46906135bd565b8015610f935780601f10610f6857610100808354040283529160200191610f93565b820191906000526020600020905b815481529060010190602001808311610f7657829003601f168201915b505050505061276490919063ffffffff16565b90610fe7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fde919061315a565b60405180910390fd5b506000805b82518110156110b85760056000848381518110611032577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6020026020010151815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156110a557600191506110b8565b80806110b0906135ef565b915050610fec565b508061118c6040518060400160405280601b81526020017f3a2063616c6c6572206973206e6f7420696e20636f6e7461696e73000000000081525060008054611100906135bd565b80601f016020809104026020016040519081016040528092919081815260200182805461112c906135bd565b80156111795780601f1061114e57610100808354040283529160200191611179565b820191906000526020600020905b81548152906001019060200180831161115c57829003601f168201915b505050505061276490919063ffffffff16565b906111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c4919061315a565b60405180910390fd5b506111d6610cdd565b60ff16600a6111e5919061335b565b600a546111f29190613479565b846111fb610b14565b61120591906132b2565b1115611246576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123d906131bc565b60405180910390fd5b6112508585612978565b60019250505092915050565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061128c612790565b73ffffffffffffffffffffffffffffffffffffffff1663e02440357f42616c616e636500000000000000000000000000000000000000000000000000846040518363ffffffff1660e01b81526004016112e69291906130df565b60206040518083038186803b1580156112fe57600080fd5b505afa158015611312573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113369190612dc7565b9050919050565b6000805461134a906135bd565b80601f0160208091040260200160405190810160405280929190818152602001828054611376906135bd565b80156113c35780601f10611398576101008083540402835291602001916113c3565b820191906000526020600020905b8154815290600101906020018083116113a657829003601f168201915b505050505081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146114ee6040518060400160405280601981526020017f3a2063616c6c6572206973206e6f7420746865206f776e65720000000000000081525060008054611462906135bd565b80601f016020809104026020016040519081016040528092919081815260200182805461148e906135bd565b80156114db5780601f106114b0576101008083540402835291602001916114db565b820191906000526020600020905b8154815290600101906020018083116114be57829003601f168201915b505050505061276490919063ffffffff16565b9061152f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611526919061315a565b60405180910390fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321f8a721826040518263ffffffff1660e01b815260040161158b91906130c4565b60206040518083038186803b1580156115a357600080fd5b505afa1580156115b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115db9190612c2d565b6005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600481908060018154018082558091505060019003906000526020600020016000909190919091505550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461177d6040518060400160405280601981526020017f3a2063616c6c6572206973206e6f7420746865206f776e657200000000000000815250600080546116f1906135bd565b80601f016020809104026020016040519081016040528092919081815260200182805461171d906135bd565b801561176a5780601f1061173f5761010080835404028352916020019161176a565b820191906000526020600020905b81548152906001019060200180831161174d57829003601f168201915b505050505061276490919063ffffffff16565b906117be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117b5919061315a565b60405180910390fd5b5081600b541015611804576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fb906131dc565b60405180910390fd5b81600b5461181291906134d3565b600b819055506118228383612978565b6001905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146119756040518060400160405280601981526020017f3a2063616c6c6572206973206e6f7420746865206f776e657200000000000000815250600080546118e9906135bd565b80601f0160208091040260200160405190810160405280929190818152602001828054611915906135bd565b80156119625780601f1061193757610100808354040283529160200191611962565b820191906000526020600020905b81548152906001019060200180831161194557829003601f168201915b505050505061276490919063ffffffff16565b906119b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119ad919061315a565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1e9061319c565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f85a70e3ed8a3924b3769cbe4e925987bbd40e8cea31487cbe13bee7b727310a460405160405180910390a380600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060088054611af6906135bd565b80601f0160208091040260200160405190810160405280929190818152602001828054611b22906135bd565b8015611b6f5780601f10611b4457610100808354040283529160200191611b6f565b820191906000526020600020905b815481529060010190602001808311611b5257829003601f168201915b5050505050905090565b600b5481565b6000611b8c33848461258c565b6001905092915050565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611c26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1d9061317c565b60405180910390fd5b60008282810190611c379190612d9e565b9050611c438482612978565b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611d6c6040518060400160405280601981526020017f3a2063616c6c6572206973206e6f7420746865206f776e65720000000000000081525060008054611ce0906135bd565b80601f0160208091040260200160405190810160405280929190818152602001828054611d0c906135bd565b8015611d595780601f10611d2e57610100808354040283529160200191611d59565b820191906000526020600020905b815481529060010190602001808311611d3c57829003601f168201915b505050505061276490919063ffffffff16565b90611dad576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611da4919061315a565b60405180910390fd5b50600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611e946040518060600160405280602181526020016137ed6021913960008054611e08906135bd565b80601f0160208091040260200160405190810160405280929190818152602001828054611e34906135bd565b8015611e815780601f10611e5657610100808354040283529160200191611e81565b820191906000526020600020905b815481529060010190602001808311611e6457829003601f168201915b505050505061276490919063ffffffff16565b90611ed5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ecc919061315a565b60405180910390fd5b508073ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f605c2dbf762e5f7d60a546d42e7205dcb1b011ebc62a61736a57c9089d3a435060405160405180910390a380600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146120b96040518060400160405280601981526020017f3a2063616c6c6572206973206e6f7420746865206f776e6572000000000000008152506000805461202d906135bd565b80601f0160208091040260200160405190810160405280929190818152602001828054612059906135bd565b80156120a65780601f1061207b576101008083540402835291602001916120a6565b820191906000526020600020905b81548152906001019060200180831161208957829003601f168201915b505050505061276490919063ffffffff16565b906120fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120f1919061315a565b60405180910390fd5b5060005b60048054905081101561226457600060048281548110612147577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166321f8a721826040518263ffffffff1660e01b81526004016121af91906130c4565b60206040518083038186803b1580156121c757600080fd5b505afa1580156121db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ff9190612c2d565b6005600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050808061225c906135ef565b9150506120fe565b50565b6000612271612790565b73ffffffffffffffffffffffffffffffffffffffff16630af4187d84846040518363ffffffff1660e01b81526004016122ab929190613027565b60206040518083038186803b1580156122c357600080fd5b505afa1580156122d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122fb9190612dc7565b905092915050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146124266040518060400160405280601981526020017f3a2063616c6c6572206973206e6f7420746865206f776e6572000000000000008152506000805461239a906135bd565b80601f01602080910402602001604051908101604052809291908181526020018280546123c6906135bd565b80156124135780601f106123e857610100808354040283529160200191612413565b820191906000526020600020905b8154815290600101906020018083116123f657829003601f168201915b505050505061276490919063ffffffff16565b90612467576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245e919061315a565b60405180910390fd5b5080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6124b4612790565b73ffffffffffffffffffffffffffffffffffffffff1663da46098c8484846040518463ffffffff1660e01b81526004016124f093929190613050565b600060405180830381600087803b15801561250a57600080fd5b505af115801561251e573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161257f919061321c565b60405180910390a3505050565b612594612790565b73ffffffffffffffffffffffffffffffffffffffff16633bb6d2e57f42616c616e63650000000000000000000000000000000000000000000000000085846040518463ffffffff1660e01b81526004016125f093929190613108565b602060405180830381600087803b15801561260a57600080fd5b505af115801561261e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126429190612dc7565b5061264b612790565b73ffffffffffffffffffffffffffffffffffffffff16636c56a6287f42616c616e63650000000000000000000000000000000000000000000000000084846040518463ffffffff1660e01b81526004016126a793929190613108565b602060405180830381600087803b1580156126c157600080fd5b505af11580156126d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126f99190612dc7565b508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612757919061321c565b60405180910390a3505050565b60608282604051602001612779929190612fe8565b604051602081830303815290604052905092915050565b600061279a610cec565b905090565b6127a7612790565b73ffffffffffffffffffffffffffffffffffffffff16633bb6d2e57f42616c616e63650000000000000000000000000000000000000000000000000084846040518463ffffffff1660e01b815260040161280393929190613108565b602060405180830381600087803b15801561281d57600080fd5b505af1158015612831573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128559190612dc7565b5061285e612790565b73ffffffffffffffffffffffffffffffffffffffff16633bb6d2e57f546f74616c0000000000000000000000000000000000000000000000000000006000846040518463ffffffff1660e01b81526004016128bb93929190613108565b602060405180830381600087803b1580156128d557600080fd5b505af11580156128e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061290d9190612dc7565b50600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161296c919061321c565b60405180910390a35050565b612980612790565b73ffffffffffffffffffffffffffffffffffffffff16636c56a6287f42616c616e63650000000000000000000000000000000000000000000000000084846040518463ffffffff1660e01b81526004016129dc93929190613108565b602060405180830381600087803b1580156129f657600080fd5b505af1158015612a0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a2e9190612dc7565b50612a37612790565b73ffffffffffffffffffffffffffffffffffffffff16636c56a6287f546f74616c0000000000000000000000000000000000000000000000000000006000846040518463ffffffff1660e01b8152600401612a9493929190613108565b602060405180830381600087803b158015612aae57600080fd5b505af1158015612ac2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ae69190612dc7565b508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612b45919061321c565b60405180910390a35050565b600081359050612b60816137a7565b92915050565b600081519050612b75816137a7565b92915050565b600081359050612b8a816137be565b92915050565b60008083601f840112612ba257600080fd5b8235905067ffffffffffffffff811115612bbb57600080fd5b602083019150836001820283011115612bd357600080fd5b9250929050565b600081359050612be9816137d5565b92915050565b600081519050612bfe816137d5565b92915050565b600060208284031215612c1657600080fd5b6000612c2484828501612b51565b91505092915050565b600060208284031215612c3f57600080fd5b6000612c4d84828501612b66565b91505092915050565b60008060408385031215612c6957600080fd5b6000612c7785828601612b51565b9250506020612c8885828601612b51565b9150509250929050565b600080600060608486031215612ca757600080fd5b6000612cb586828701612b51565b9350506020612cc686828701612b51565b9250506040612cd786828701612bda565b9150509250925092565b600080600060408486031215612cf657600080fd5b6000612d0486828701612b51565b935050602084013567ffffffffffffffff811115612d2157600080fd5b612d2d86828701612b90565b92509250509250925092565b60008060408385031215612d4c57600080fd5b6000612d5a85828601612b51565b9250506020612d6b85828601612bda565b9150509250929050565b600060208284031215612d8757600080fd5b6000612d9584828501612b7b565b91505092915050565b600060208284031215612db057600080fd5b6000612dbe84828501612bda565b91505092915050565b600060208284031215612dd957600080fd5b6000612de784828501612bef565b91505092915050565b6000612dfc8383612e84565b60208301905092915050565b612e1181613507565b82525050565b6000612e2282613262565b612e2c8185613285565b9350612e3783613252565b8060005b83811015612e68578151612e4f8882612df0565b9750612e5a83613278565b925050600181019050612e3b565b5085935050505092915050565b612e7e81613519565b82525050565b612e8d81613525565b82525050565b612e9c81613525565b82525050565b612eab81613566565b82525050565b6000612ebc8261326d565b612ec68185613296565b9350612ed681856020860161358a565b612edf81613696565b840191505092915050565b6000612ef58261326d565b612eff81856132a7565b9350612f0f81856020860161358a565b80840191505092915050565b6000612f28601c83613296565b9150612f33826136b4565b602082019050919050565b6000612f4b601983613296565b9150612f56826136dd565b602082019050919050565b6000612f6e601183613296565b9150612f7982613706565b602082019050919050565b6000612f91601483613296565b9150612f9c8261372f565b602082019050919050565b6000612fb4602783613296565b9150612fbf82613758565b604082019050919050565b612fd38161354f565b82525050565b612fe281613559565b82525050565b6000612ff48285612eea565b91506130008284612eea565b91508190509392505050565b60006020820190506130216000830184612e08565b92915050565b600060408201905061303c6000830185612e08565b6130496020830184612e08565b9392505050565b60006060820190506130656000830186612e08565b6130726020830185612e08565b61307f6040830184612fca565b949350505050565b600060208201905081810360008301526130a18184612e17565b905092915050565b60006020820190506130be6000830184612e75565b92915050565b60006020820190506130d96000830184612e93565b92915050565b60006040820190506130f46000830185612e93565b6131016020830184612e08565b9392505050565b600060608201905061311d6000830186612e93565b61312a6020830185612e08565b6131376040830184612fca565b949350505050565b60006020820190506131546000830184612ea2565b92915050565b600060208201905081810360008301526131748184612eb1565b905092915050565b6000602082019050818103600083015261319581612f1b565b9050919050565b600060208201905081810360008301526131b581612f3e565b9050919050565b600060208201905081810360008301526131d581612f61565b9050919050565b600060208201905081810360008301526131f581612f84565b9050919050565b6000602082019050818103600083015261321581612fa7565b9050919050565b60006020820190506132316000830184612fca565b92915050565b600060208201905061324c6000830184612fd9565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600081905092915050565b60006132bd8261354f565b91506132c88361354f565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156132fd576132fc613638565b5b828201905092915050565b6000808291508390505b60018511156133525780860481111561332e5761332d613638565b5b600185161561333d5780820291505b808102905061334b856136a7565b9450613312565b94509492505050565b60006133668261354f565b91506133718361354f565b925061339e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846133a6565b905092915050565b6000826133b65760019050613472565b816133c45760009050613472565b81600181146133da57600281146133e457613413565b6001915050613472565b60ff8411156133f6576133f5613638565b5b8360020a91508482111561340d5761340c613638565b5b50613472565b5060208310610133831016604e8410600b84101617156134485782820a90508381111561344357613442613638565b5b613472565b6134558484846001613308565b9250905081840481111561346c5761346b613638565b5b81810290505b9392505050565b60006134848261354f565b915061348f8361354f565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156134c8576134c7613638565b5b828202905092915050565b60006134de8261354f565b91506134e98361354f565b9250828210156134fc576134fb613638565b5b828203905092915050565b60006135128261352f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b600061357182613578565b9050919050565b60006135838261352f565b9050919050565b60005b838110156135a857808201518184015260208101905061358d565b838111156135b7576000848401525b50505050565b600060028204905060018216806135d557607f821691505b602082108114156135e9576135e8613667565b5b50919050565b60006135fa8261354f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561362d5761362c613638565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b60008160011c9050919050565b7f63616c6c6572206973206e6f74204445504f5349544f525f524f4c4500000000600082015250565b7f73746f726167652069732061207a65726f206164647265737300000000000000600082015250565b7f63616e206e6f74206d696e74206d6f7265000000000000000000000000000000600082015250565b7f63616e206e6f742061697264726f70206d6f7265000000000000000000000000600082015250565b7f4d6f62697573546f6b656e3a2063616c6c6572206973206e6f7420746865205260008201527f65736f6c76657200000000000000000000000000000000000000000000000000602082015250565b6137b081613507565b81146137bb57600080fd5b50565b6137c781613525565b81146137d257600080fd5b50565b6137de8161354f565b81146137e957600080fd5b5056fe3a206e6577206d616e6167657220697320746865207a65726f2061646472657373a2646970667358221220095c50bad7a26c5b0172cc7137bdad6100226731dfd667bddf25428a51f8060664736f6c634300080400330000000000000000000000001e02cdbba6729b6470de81ad4d2cca4c514521b9

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

0000000000000000000000001e02cdbba6729b6470de81ad4d2cca4c514521b9

-----Decoded View---------------
Arg [0] : _resolver (address): 0x1e02cdbba6729b6470de81ad4d2cca4c514521b9

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000001e02cdbba6729b6470de81ad4d2cca4c514521b9


Loading