Contract 0x1f7216fdb338247512ec99715587bb97bbf96eae 3

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x01a1772a0f08d562987eb5430fcb58db35ad168df161dab954354cfdc46d9144Approve354539472022-04-07 10:38:48180 days 19 hrs ago0x6c977e71d82baf2ab07aa1c8009fed0497c75bd6 IN  Anyswap: bBADGER Token0 FTM0.024627631307
0xc7c9ecaa4e7f956a24b9a90983d93d69c3a8f5b3437d0ed4a033a9cc918c5f4fApprove246664422021-12-11 16:46:38297 days 13 hrs ago0x9e3781496917f5fedab2d4ecd5c7b1047c8de1bc IN  Anyswap: bBADGER Token0 FTM0.00433247
0x0a7ab916b455fc0ff4ba8a250024cf92e5bf43b848ef4ce1a0cec75c8cfece64Swapout209982632021-11-04 1:33:56335 days 4 hrs ago0x40ed6defe5df6ac428dc027b2723e0f623e8384a IN  Anyswap: bBADGER Token0 FTM0.004598687772
0xdb81cd9b1450528931d858552719095a456c406091ce7870da94f0a43f414a18Swapin209965822021-11-04 1:08:50335 days 4 hrs ago0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe IN  Anyswap: bBADGER Token0 FTM0.008310807698
0x836bab61a2e0c228ad53d56b309aeac77990cfabf25c5c6a47ad35e44f80c594Swapout188653912021-10-11 21:58:39358 days 7 hrs ago0xb0f4b88d29667607e88198a12e6b19700b08abf1 IN  Anyswap: bBADGER Token0 FTM0.0076264033
0x089e8d360ee4e32c85232843b3acba534ecc0e5d653b65e4a7633eb46a67edf3Swapin188650322021-10-11 21:53:56358 days 7 hrs ago0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe IN  Anyswap: bBADGER Token0 FTM0.019986611286
0xbd664a144ce88ec80c32b508fa19535efbe7e81a60eb614f00da9b6e3045c785Approve165612782021-09-07 1:22:01393 days 4 hrs ago0x9e3781496917f5fedab2d4ecd5c7b1047c8de1bc IN  Anyswap: bBADGER Token0 FTM0.00147938
0xbba7a95f2b25bc869596601c04001f3985c451ea33bb28fa25ff5f54a2c6ec17Swapout146591872021-08-15 13:39:19415 days 16 hrs ago0x3c5aac016ef2f178e8699d6208796a2d67557fe2 IN  Anyswap: bBADGER Token0 FTM0.001265055
0x3b6b633a0b35f4cd1f90df359e531a923bec9a868ea2e872bd10b272acb83212Swapin146587652021-08-15 13:31:10415 days 16 hrs ago0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe IN  Anyswap: bBADGER Token0 FTM0.002275126
0x2cada23496585f88ab5a9044f55380741c2fa3b3b5861e4c67c546557a6d90abApprove146579992021-08-15 13:17:08415 days 16 hrs ago0x3c5aac016ef2f178e8699d6208796a2d67557fe2 IN  Anyswap: bBADGER Token0 FTM0.0027457992
0x165fe79092a4d0a3c24b619d7ed911a9d8679a70db782c2a8bd4b273c8f38cdfSwapout131259172021-07-28 4:25:57434 days 1 hr ago0x2e1d9b8056bb083c0aaf3f53af81b7fda8a570aa IN  Anyswap: bBADGER Token0 FTM0.0019844
0x1c3cd10b2cb8d855e1b13b10c56ef714768fe4cd3aafad4b4aa3bac7718a9734Swapin131236452021-07-28 3:50:37434 days 2 hrs ago0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe IN  Anyswap: bBADGER Token0 FTM0.012789414393
0x8798ae4c6a8599d9ea54ec9d7d7d70c058402b28a672fd8dfea2a653a7f547b7Swapout102064622021-06-20 21:35:22471 days 8 hrs ago0xb71d05cf5cdf7a9b15b20b9aab5e91332c271c96 IN  Anyswap: bBADGER Token0 FTM0.0019844
0x2557b152324bc4ea522089fbe44ace1bb7252bc7d620d5ebe3a67357ef7705f0Approve91655332021-06-08 3:22:45484 days 2 hrs ago0x9e3781496917f5fedab2d4ecd5c7b1047c8de1bc IN  Anyswap: bBADGER Token0 FTM0.002627531898
0xc225ed89f64c53d22054c894b41f757e7233a1361905ebec40e62a71858b3bd1Approve84608772021-06-01 4:12:06491 days 1 hr ago0x91634880fa425ba8ed3767228e18f8c2b933e0ad IN  Anyswap: bBADGER Token0 FTM0.00974685
0xb06bf2178979c08a4dd863b5964e41d5299ecdd74649d281b76f247813fe6d2fApprove84608382021-06-01 4:11:40491 days 1 hr ago0x3c5aac016ef2f178e8699d6208796a2d67557fe2 IN  Anyswap: bBADGER Token0 FTM0.002961156
0x09b7463aa97832da37a48115ab27f1f188b6fb0d4efad08275d7fa77471e46dbSwapin82352852021-05-30 9:20:17492 days 20 hrs ago0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe IN  Anyswap: bBADGER Token0 FTM0.00390380958
0x9e365e2be3f835c310e1188262f3ccc035bc2bc6153afb952f7c9933e9b016aaSwapin75249902021-05-24 18:52:08498 days 11 hrs ago0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe IN  Anyswap: bBADGER Token0 FTM0.00715955064
0x60ace14febbd1dae19f53c283deac3586b64cd5bd80069b8eaf236c8bbe6e8b0Swapout57467532021-05-09 3:30:10514 days 2 hrs ago0x48888db73eb818dec38fed2c8d4d08252177de0d IN  Anyswap: bBADGER Token0 FTM0.00535788
0xcd3b2b0619c316709fa99102ba95a31182a8834f9f81a6f2e87a9bff48245deeSwapin57466932021-05-09 3:29:31514 days 2 hrs ago0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe IN  Anyswap: bBADGER Token0 FTM0.000062128332
0xe68887353f57fa9402d6ca30275c290611bf940d0a30fcc89762d51a6e299ac6Swapout57461552021-05-09 3:22:58514 days 2 hrs ago0x48888db73eb818dec38fed2c8d4d08252177de0d IN  Anyswap: bBADGER Token0 FTM0.005333075
0x47f457442f14c87fbc563d4defc94821aafb75bbace2354b9981a6bd5f0e97b5Swapin57459832021-05-09 3:20:39514 days 2 hrs ago0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe IN  Anyswap: bBADGER Token0 FTM0.000062116666
0x85465da3da39137a206b71e6fa9a68f734582e496da4fe24bbc0c6cdb2d0ff53Swapout55883592021-05-07 20:47:58515 days 9 hrs ago0xe5f008411335787f4d92213a1c3d854b08df3e4f IN  Anyswap: bBADGER Token0 FTM0.001462728
0x8ed03f5e12777f0856bd2d6c85f403a71aa3838eab1c53bbd63fc7464e3c800cSwapout55346132021-05-07 9:57:21515 days 19 hrs ago0x3a4d68994f741be298f802d0ed77948f04190bbc IN  Anyswap: bBADGER Token0 FTM0.001116225
0x20c44d0b2cf05b0798a669a929b2b43ca371b94f2f3d6aaca312697f68ddfe4eSwapin55332912021-05-07 9:40:47515 days 20 hrs ago0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe IN  Anyswap: bBADGER Token0 FTM0.000062128332
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x2211cd0d60f91463a572656c86529ca173a150a19668cc0cd6b80fe45d2a2cdf26328802021-03-08 5:24:45576 days 28 mins ago Anyswap: Deployer  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnyswapV3ERC20

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, GNU LGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2021-03-08
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.8.2;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
    function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @dev Interface of the ERC2612 standard as defined in the EIP.
 *
 * Adds the {permit} method, which can be used to change one's
 * {IERC20-allowance} without having to send a transaction, by signing a
 * message. This allows users to spend tokens without having to hold Ether.
 *
 * See https://eips.ethereum.org/EIPS/eip-2612.
 */
interface IERC2612 {

    /**
     * @dev Returns the current ERC2612 nonce for `owner`. This value must be
     * included whenever a signature is generated for {permit}.
     *
     * Every successful call to {permit} increases ``owner``'s nonce by one. This
     * prevents a signature from being used multiple times.
     */
    function nonces(address owner) external view returns (uint256);
}

/// @dev Wrapped ERC-20 v10 (AnyswapV3ERC20) is an ERC-20 ERC-20 wrapper. You can `deposit` ERC-20 and obtain an AnyswapV3ERC20 balance which can then be operated as an ERC-20 token. You can
/// `withdraw` ERC-20 from AnyswapV3ERC20, which will then burn AnyswapV3ERC20 token in your wallet. The amount of AnyswapV3ERC20 token in any wallet is always identical to the
/// balance of ERC-20 deposited minus the ERC-20 withdrawn with that specific wallet.
interface IAnyswapV3ERC20 is IERC20, IERC2612 {

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token,
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);

    /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`),
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// A transfer to `address(0)` triggers an ERC-20 withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV3ERC20 token.
    /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function transferAndCall(address to, uint value, bytes calldata data) external returns (bool);
}

interface ITransferReceiver {
    function onTokenTransfer(address, uint, bytes calldata) external returns (bool);
}

interface IApprovalReceiver {
    function onTokenApproval(address, uint, bytes calldata) external returns (bool);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract AnyswapV3ERC20 is IAnyswapV3ERC20 {
    using SafeERC20 for IERC20;
    string public name;
    string public symbol;
    uint8  public immutable override decimals;

    address public immutable underlying;

    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant TRANSFER_TYPEHASH = keccak256("Transfer(address owner,address to,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public immutable DOMAIN_SEPARATOR;

    /// @dev Records amount of AnyswapV3ERC20 token owned by account.
    mapping (address => uint256) public override balanceOf;
    uint256 private _totalSupply;

    address private _oldVault;
    address private _newVault;
    uint256 private _newVaultEffectiveTime;


    modifier onlyVault() {
        require(msg.sender == vault(), "AnyswapV3ERC20: FORBIDDEN");
        _;
    }

    function vault() public view returns (address) {
        if (block.timestamp >= _newVaultEffectiveTime) {
            return _newVault;
        }
        return _oldVault;
    }

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


    function changeVault(address newVault) external onlyVault returns (bool) {
        require(newVault != address(0), "AnyswapV3ERC20: address(0x0)");
        _oldVault = vault();
        _newVault = newVault;
        _newVaultEffectiveTime = block.timestamp + 2*24*3600;
        emit LogChangeVault(_oldVault, _newVault, _newVaultEffectiveTime);
        return true;
    }

    function changeMPCOwner(address newVault) public onlyVault returns (bool) {
        require(newVault != address(0), "AnyswapV3ERC20: address(0x0)");
        _oldVault = vault();
        _newVault = newVault;
        _newVaultEffectiveTime = block.timestamp + 2*24*3600;
        emit LogChangeMPCOwner(_oldVault, _newVault, _newVaultEffectiveTime);
        return true;
    }

    function mint(address to, uint256 amount) external onlyVault returns (bool) {
        _mint(to, amount);
        return true;
    }

    function burn(address from, uint256 amount) external onlyVault returns (bool) {
        require(from != address(0), "AnyswapV3ERC20: address(0x0)");
        _burn(from, amount);
        return true;
    }

    function Swapin(bytes32 txhash, address account, uint256 amount) public onlyVault returns (bool) {
        _mint(account, amount);
        emit LogSwapin(txhash, account, amount);
        return true;
    }

    function Swapout(uint256 amount, address bindaddr) public returns (bool) {
        require(bindaddr != address(0), "AnyswapV3ERC20: address(0x0)");
        _burn(msg.sender, amount);
        emit LogSwapout(msg.sender, bindaddr, amount);
        return true;
    }

    /// @dev Records current ERC2612 nonce for account. This value must be included whenever signature is generated for {permit}.
    /// Every successful call to {permit} increases account's nonce by one. This prevents signature from being used multiple times.
    mapping (address => uint256) public override nonces;

    /// @dev Records number of AnyswapV3ERC20 token that account (second) will be allowed to spend on behalf of another account (first) through {transferFrom}.
    mapping (address => mapping (address => uint256)) public override allowance;

    event LogChangeVault(address indexed oldVault, address indexed newVault, uint indexed effectiveTime);
    event LogChangeMPCOwner(address indexed oldOwner, address indexed newOwner, uint indexed effectiveHeight);
    event LogSwapin(bytes32 indexed txhash, address indexed account, uint amount);
    event LogSwapout(address indexed account, address indexed bindaddr, uint amount);

    constructor(string memory _name, string memory _symbol, uint8 _decimals, address _underlying, address _vault) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        underlying = _underlying;
        if (_underlying != address(0x0)) {
            require(_decimals == IERC20(_underlying).decimals());
        }

        _newVault = _vault;
        _newVaultEffectiveTime = block.timestamp;

        uint256 chainId;
        assembly {chainId := chainid()}
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                keccak256(bytes(name)),
                keccak256(bytes("1")),
                chainId,
                address(this)));
    }

    /// @dev Returns the total supply of AnyswapV3ERC20 token as the ETH held in this contract.
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function depositWithPermit(address target, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s, address to) external returns (uint) {
        IERC20(underlying).permit(target, address(this), value, deadline, v, r, s);
        IERC20(underlying).safeTransferFrom(target, address(this), value);
        return _deposit(value, to);
    }

    function depositWithTransferPermit(address target, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s, address to) external returns (uint) {
        IERC20(underlying).transferWithPermit(target, address(this), value, deadline, v, r, s);
        return _deposit(value, to);
    }

    function deposit() external returns (uint) {
        uint _amount = IERC20(underlying).balanceOf(msg.sender);
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), _amount);
        return _deposit(_amount, msg.sender);
    }

    function deposit(uint amount) external returns (uint) {
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        return _deposit(amount, msg.sender);
    }

    function deposit(uint amount, address to) external returns (uint) {
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        return _deposit(amount, to);
    }

    function depositVault(uint amount, address to) external onlyVault returns (uint) {
        return _deposit(amount, to);
    }

    function _deposit(uint amount, address to) internal returns (uint) {
        require(underlying != address(0x0));
        _mint(to, amount);
        return amount;
    }

    function withdraw() external returns (uint) {
        return _withdraw(msg.sender, balanceOf[msg.sender], msg.sender);
    }

    function withdraw(uint amount) external returns (uint) {
        return _withdraw(msg.sender, amount, msg.sender);
    }

    function withdraw(uint amount, address to) external returns (uint) {
        return _withdraw(msg.sender, amount, to);
    }

    function withdrawVault(address from, uint amount, address to) external onlyVault returns (uint) {
        return _withdraw(from, amount, to);
    }

    function _withdraw(address from, uint amount, address to) internal returns (uint) {
        _burn(from, amount);
        IERC20(underlying).safeTransfer(to, amount);
        return amount;
    }

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply += amount;
        balanceOf[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: burn from the zero address");

        balanceOf[account] -= amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    function approve(address spender, uint256 value) external override returns (bool) {
        // _approve(msg.sender, spender, value);
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);

        return true;
    }

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token,
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function approveAndCall(address spender, uint256 value, bytes calldata data) external override returns (bool) {
        // _approve(msg.sender, spender, value);
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);

        return IApprovalReceiver(spender).onTokenApproval(msg.sender, value, data);
    }

    /// @dev Sets `value` as allowance of `spender` account over `owner` account's AnyswapV3ERC20 token, given `owner` account's signed approval.
    /// Emits {Approval} event.
    /// Requirements:
    ///   - `deadline` must be timestamp in future.
    ///   - `v`, `r` and `s` must be valid `secp256k1` signature from `owner` account over EIP712-formatted function arguments.
    ///   - the signature must use `owner` account's current nonce (see {nonces}).
    ///   - the signer cannot be zero address and must be `owner` account.
    /// For more information on signature format, see https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].
    /// AnyswapV3ERC20 token implementation adapted from https://github.com/albertocuestacanada/ERC20Permit/blob/master/contracts/ERC20Permit.sol.
    function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override {
        require(block.timestamp <= deadline, "AnyswapV3ERC20: Expired permit");

        bytes32 hashStruct = keccak256(
            abi.encode(
                PERMIT_TYPEHASH,
                target,
                spender,
                value,
                nonces[target]++,
                deadline));

        require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s));

        // _approve(owner, spender, value);
        allowance[target][spender] = value;
        emit Approval(target, spender, value);
    }

    function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override returns (bool) {
        require(block.timestamp <= deadline, "AnyswapV3ERC20: Expired permit");

        bytes32 hashStruct = keccak256(
            abi.encode(
                TRANSFER_TYPEHASH,
                target,
                to,
                value,
                nonces[target]++,
                deadline));

        require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s));

        require(to != address(0) || to != address(this));

        uint256 balance = balanceOf[target];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[target] = balance - value;
        balanceOf[to] += value;
        emit Transfer(target, to, value);

        return true;
    }

    function verifyEIP712(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal view returns (bool) {
        bytes32 hash = keccak256(
            abi.encodePacked(
                "\x19\x01",
                DOMAIN_SEPARATOR,
                hashStruct));
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }

    function verifyPersonalSign(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal pure returns (bool) {
        bytes32 hash = prefixed(hashStruct);
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }

    // Builds a prefixed hash to mimic the behavior of eth_sign.
    function prefixed(bytes32 hash) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash));
    }

    /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`).
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV3ERC20 token.
    function transfer(address to, uint256 value) external override returns (bool) {
        require(to != address(0) || to != address(this));
        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[msg.sender] = balance - value;
        balanceOf[to] += value;
        emit Transfer(msg.sender, to, value);

        return true;
    }

    /// @dev Moves `value` AnyswapV3ERC20 token from account (`from`) to account (`to`) using allowance mechanism.
    /// `value` is then deducted from caller account's allowance, unless set to `type(uint256).max`.
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Approval} event to reflect reduced allowance `value` for caller account to spend from account (`from`),
    /// unless allowance is set to `type(uint256).max`
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - `from` account must have at least `value` balance of AnyswapV3ERC20 token.
    ///   - `from` account must have approved caller to spend at least `value` of AnyswapV3ERC20 token, unless `from` and caller are the same account.
    function transferFrom(address from, address to, uint256 value) external override returns (bool) {
        require(to != address(0) || to != address(this));
        if (from != msg.sender) {
            // _decreaseAllowance(from, msg.sender, value);
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "AnyswapV3ERC20: request exceeds allowance");
                uint256 reduced = allowed - value;
                allowance[from][msg.sender] = reduced;
                emit Approval(from, msg.sender, reduced);
            }
        }

        uint256 balance = balanceOf[from];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[from] = balance - value;
        balanceOf[to] += value;
        emit Transfer(from, to, value);

        return true;
    }

    /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`),
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV3ERC20 token.
    /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function transferAndCall(address to, uint value, bytes calldata data) external override returns (bool) {
        require(to != address(0) || to != address(this));

        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[msg.sender] = balance - value;
        balanceOf[to] += value;
        emit Transfer(msg.sender, to, value);

        return ITransferReceiver(to).onTokenTransfer(msg.sender, value, data);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"address","name":"_vault","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":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveHeight","type":"uint256"}],"name":"LogChangeMPCOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldVault","type":"address"},{"indexed":true,"internalType":"address","name":"newVault","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"}],"name":"LogChangeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":true,"internalType":"address","name":"bindaddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapout","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":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txhash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swapin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"bindaddr","type":"address"}],"name":"Swapout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TRANSFER_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeMPCOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"depositVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithTransferPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","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":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","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":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","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":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"transferWithPermit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

60e06040523480156200001157600080fd5b50604051620028223803806200282283398101604081905262000034916200039a565b84516200004990600090602088019062000212565b5083516200005f90600190602087019062000212565b507fff0000000000000000000000000000000000000000000000000000000000000060f884901b166080526001600160601b0319606083901b1660a0526001600160a01b038216156200013357816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620000e657600080fd5b505afa158015620000fb573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000121919062000439565b60ff168360ff16146200013357600080fd5b600580546001600160a01b0319166001600160a01b0383161790554260065560405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f9062000187906000906200045d565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f19818403018152919052805160209091012060c0525062000553945050505050565b828054620002209062000500565b90600052602060002090601f0160209004810192826200024457600085556200028f565b82601f106200025f57805160ff19168380011785556200028f565b828001600101855582156200028f579182015b828111156200028f57825182559160200191906001019062000272565b506200029d929150620002a1565b5090565b5b808211156200029d5760008155600101620002a2565b80516001600160a01b0381168114620002d057600080fd5b919050565b600082601f830112620002e6578081fd5b81516001600160401b03808211156200030357620003036200053d565b604051601f8301601f19908116603f011681019082821181831017156200032e576200032e6200053d565b816040528381526020925086838588010111156200034a578485fd5b8491505b838210156200036d57858201830151818301840152908201906200034e565b838211156200037e57848385830101525b9695505050505050565b805160ff81168114620002d057600080fd5b600080600080600060a08688031215620003b2578081fd5b85516001600160401b0380821115620003c9578283fd5b620003d789838a01620002d5565b96506020880151915080821115620003ed578283fd5b50620003fc88828901620002d5565b9450506200040d6040870162000388565b92506200041d60608701620002b8565b91506200042d60808701620002b8565b90509295509295909350565b6000602082840312156200044b578081fd5b620004568262000388565b9392505050565b81546000908190600281046001808316806200047a57607f831692505b60208084108214156200049b57634e487b7160e01b87526022600452602487fd5b818015620004b25760018114620004c457620004f2565b60ff19861689528489019650620004f2565b60008a815260209020885b86811015620004ea5781548b820152908501908301620004cf565b505084890196505b509498975050505050505050565b6002810460018216806200051557607f821691505b602082108114156200053757634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160f81c60a05160601c60c051612253620005cf6000396000818161034901526117930152600081816103fd01528181610efd01528181610f4901528181610fc90152818161116f015281816112d901528181611362015281816115a2015281816116860152611a4f0152600061031001526122536000f3fe608060405234801561001057600080fd5b50600436106102195760003560e01c80636e553f6511610125578063b6b55f25116100ad578063d505accf1161007c578063d505accf14610501578063dd62ed3e14610516578063ec126c7714610541578063f954734e14610554578063fbfa77cf1461056757610219565b8063b6b55f25146104c0578063bebbf4d0146104d3578063cae9ca51146104e6578063d0e30db0146104f957610219565b806381a37c18116100f457806381a37c18146104775780638da5cb5b1461048a57806395d89b41146104925780639dc29fac1461049a578063a9059cbb146104ad57610219565b80636e553f65146103e55780636f307dc3146103f857806370a08231146104375780637ecebe001461045757610219565b8063313ce567116101a857806340c10f191161017757806340c10f19146103865780635f9b105d14610399578063605629d6146103ac57806360e232a9146103bf578063628d6cba146103d257610219565b8063313ce5671461030b5780633644e515146103445780633ccfd60b1461036b5780634000aea01461037357610219565b8063095ea7b3116101ef578063095ea7b31461029357806318160ddd146102b657806323b872dd146102be5780632e1a7d4d146102d157806330adf81f146102e457610219565b806239d6ec1461021e578062bf26f414610244578062f714ce1461026b57806306fdde031461027e575b600080fd5b61023161022c366004611dc5565b61056f565b6040519081526020015b60405180910390f35b6102317f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b610231610279366004611f5f565b6105c5565b6102866105d9565b60405161023b9190612026565b6102a66102a1366004611d9c565b610667565b604051901515815260200161023b565b6102316106c1565b6102a66102cc366004611cf8565b6106c8565b6102316102df366004611f2f565b6108b3565b6102317f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103327f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff909116815260200161023b565b6102317f000000000000000000000000000000000000000000000000000000000000000081565b6102316108c8565b6102a6610381366004611e00565b6108e9565b6102a6610394366004611d9c565b610a42565b6102a66103a7366004611cac565b610a8f565b6102a66103ba366004611d33565b610b7f565b6102a66103cd366004611cac565b610d8f565b6102a66103e0366004611f5f565b610e7f565b6102316103f3366004611f5f565b610eee565b61041f7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161023b565b610231610445366004611cac565b60026020526000908152604090205481565b610231610465366004611cac565b60076020526000908152604090205481565b610231610485366004611e82565b610f2f565b61041f611009565b610286611013565b6102a66104a8366004611d9c565b611020565b6102a66104bb366004611d9c565b61108a565b6102316104ce366004611f2f565b611160565b6102316104e1366004611f5f565b6111a1565b6102a66104f4366004611e00565b6111db565b6102316112b7565b61051461050f366004611d33565b61139a565b005b610231610524366004611cc6565b600860209081526000928352604080842090915290825290205481565b6102a661054f366004611f0b565b611508565b610231610562366004611e82565b611588565b61041f611640565b6000610579611640565b6001600160a01b0316336001600160a01b0316146105b25760405162461bcd60e51b81526004016105a990612059565b60405180910390fd5b6105bd84848461166d565b949350505050565b60006105d233848461166d565b9392505050565b600080546105e690612171565b80601f016020809104026020016040519081016040528092919081815260200182805461061290612171565b801561065f5780601f106106345761010080835404028352916020019161065f565b820191906000526020600020905b81548152906001019060200180831161064257829003601f168201915b505050505081565b3360008181526008602090815260408083206001600160a01b038716808552925280832085905551919290916000805160206121fe833981519152906106b09086815260200190565b60405180910390a350600192915050565b6003545b90565b60006001600160a01b0383161515806106ea57506001600160a01b0383163014155b6106f357600080fd5b6001600160a01b03841633146107ed576001600160a01b038416600090815260086020908152604080832033845290915290205460001981146107eb57828110156107925760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563345524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016105a9565b600061079e848361212e565b6001600160a01b038716600081815260086020908152604080832033808552908352928190208590555184815293945090926000805160206121fe833981519152910160405180910390a3505b505b6001600160a01b038416600090815260026020526040902054828110156108265760405162461bcd60e51b81526004016105a9906120c7565b610830838261212e565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610866908490612116565b92505081905550836001600160a01b0316856001600160a01b03166000805160206121de833981519152856040516108a091815260200190565b60405180910390a3506001949350505050565b60006108c033833361166d565b90505b919050565b3360008181526002602052604081205490916108e4918161166d565b905090565b60006001600160a01b03851615158061090b57506001600160a01b0385163014155b61091457600080fd5b33600090815260026020526040902054848110156109445760405162461bcd60e51b81526004016105a9906120c7565b61094e858261212e565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610981908490612116565b90915550506040518581526001600160a01b0387169033906000805160206121de8339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed36906109e6903390899089908990600401611fde565b602060405180830381600087803b158015610a0057600080fd5b505af1158015610a14573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a389190611eeb565b9695505050505050565b6000610a4c611640565b6001600160a01b0316336001600160a01b031614610a7c5760405162461bcd60e51b81526004016105a990612059565b610a8683836116b5565b50600192915050565b6000610a99611640565b6001600160a01b0316336001600160a01b031614610ac95760405162461bcd60e51b81526004016105a990612059565b6001600160a01b038216610aef5760405162461bcd60e51b81526004016105a990612090565b610af7611640565b600480546001600160a01b03199081166001600160a01b039384161790915560058054909116918416919091179055610b33426202a300612116565b60068190556005546004546040516001600160a01b0392831692909116907f1d065115f314fb9bad9557bd5460b9e3c66f7223b1dd04e73e828f0bb5afe89f90600090a4506001919050565b600084421115610bd15760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016105a9565b6001600160a01b038816600090815260076020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610c1e836121ac565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001209050610c7f8982878787611783565b80610c925750610c928982878787611873565b610c9b57600080fd5b6001600160a01b038816151580610cbb57506001600160a01b0388163014155b610cc457600080fd5b6001600160a01b03891660009081526002602052604090205487811015610cfd5760405162461bcd60e51b81526004016105a9906120c7565b610d07888261212e565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a9290610d3d908490612116565b92505081905550886001600160a01b03168a6001600160a01b03166000805160206121de8339815191528a604051610d7791815260200190565b60405180910390a35060019998505050505050505050565b6000610d99611640565b6001600160a01b0316336001600160a01b031614610dc95760405162461bcd60e51b81526004016105a990612059565b6001600160a01b038216610def5760405162461bcd60e51b81526004016105a990612090565b610df7611640565b600480546001600160a01b03199081166001600160a01b039384161790915560058054909116918416919091179055610e33426202a300612116565b60068190556005546004546040516001600160a01b0392831692909116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a4506001919050565b60006001600160a01b038216610ea75760405162461bcd60e51b81526004016105a990612090565b610eb13384611908565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c888906020016106b0565b6000610f256001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330866119da565b6105d28383611a4b565b60405163d505accf60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d505accf90610f8a908b9030908c908c908c908c908c90600401611f9d565b600060405180830381600087803b158015610fa457600080fd5b505af1158015610fb8573d6000803e3d6000fd5b50610ff39250506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016905089308a6119da565b610ffd8783611a4b565b98975050505050505050565b60006108e4611640565b600180546105e690612171565b600061102a611640565b6001600160a01b0316336001600160a01b03161461105a5760405162461bcd60e51b81526004016105a990612059565b6001600160a01b0383166110805760405162461bcd60e51b81526004016105a990612090565b610a868383611908565b60006001600160a01b0383161515806110ac57506001600160a01b0383163014155b6110b557600080fd5b33600090815260026020526040902054828110156110e55760405162461bcd60e51b81526004016105a9906120c7565b6110ef838261212e565b33600090815260026020526040808220929092556001600160a01b03861681529081208054859290611122908490612116565b90915550506040518381526001600160a01b0385169033906000805160206121de833981519152906020015b60405180910390a35060019392505050565b60006111976001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330856119da565b6108c08233611a4b565b60006111ab611640565b6001600160a01b0316336001600160a01b031614610f255760405162461bcd60e51b81526004016105a990612059565b3360008181526008602090815260408083206001600160a01b038916808552925280832087905551919290916000805160206121fe833981519152906112249088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f9061125c903390889088908890600401611fde565b602060405180830381600087803b15801561127657600080fd5b505af115801561128a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112ae9190611eeb565b95945050505050565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561131b57600080fd5b505afa15801561132f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113539190611f47565b905061138a6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163330846119da565b6113948133611a4b565b91505090565b834211156113ea5760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016105a9565b6001600160a01b038716600090815260076020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a919086611437836121ac565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506114988882868686611783565b806114ab57506114ab8882868686611873565b6114b457600080fd5b6001600160a01b038881166000818152600860209081526040808320948c16808452948252918290208a905590518981526000805160206121fe833981519152910160405180910390a35050505050505050565b6000611512611640565b6001600160a01b0316336001600160a01b0316146115425760405162461bcd60e51b81526004016105a990612059565b61154c83836116b5565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161114e91815260200190565b60405163302b14eb60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063605629d6906115e3908b9030908c908c908c908c908c90600401611f9d565b602060405180830381600087803b1580156115fd57600080fd5b505af1158015611611573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116359190611eeb565b50610ffd8783611a4b565b6000600654421061165d57506005546001600160a01b03166106c5565b506004546001600160a01b031690565b60006116798484611908565b6116ad6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385611a91565b509092915050565b6001600160a01b03821661170b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016105a9565b806003600082825461171d9190612116565b90915550506001600160a01b0382166000908152600260205260408120805483929061174a908490612116565b90915550506040518181526001600160a01b038316906000906000805160206121de833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f0000000000000000000000000000000000000000000000000000000000000000602282015260428101859052600090819060620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0015b6020604051602081039080840390855afa158015611832573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590610ffd5750876001600160a01b0316816001600160a01b03161498975050505050505050565b6000806118cd866040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b6040805160008082526020820180845284905260ff89169282019290925260608101879052608081018690529192509060019060a001611810565b6001600160a01b0382166119685760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016105a9565b6001600160a01b0382166000908152600260205260408120805483929061199090849061212e565b9250508190555080600360008282546119a9919061212e565b90915550506040518181526000906001600160a01b038416906000805160206121de83398151915290602001611777565b6040516001600160a01b0380851660248301528316604482015260648101829052611a459085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ac6565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611a8057600080fd5b611a8a82846116b5565b5090919050565b6040516001600160a01b038316602482015260448101829052611ac190849063a9059cbb60e01b90606401611a0e565b505050565b611ad8826001600160a01b0316611c4d565b611b245760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016105a9565b600080836001600160a01b031683604051611b3f9190611f81565b6000604051808303816000865af19150503d8060008114611b7c576040519150601f19603f3d011682016040523d82523d6000602084013e611b81565b606091505b509150915081611bd35760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016105a9565b805115611a455780806020019051810190611bee9190611eeb565b611a455760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016105a9565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906105bd5750141592915050565b80356001600160a01b03811681146108c357600080fd5b803560ff811681146108c357600080fd5b600060208284031215611cbd578081fd5b6105d282611c84565b60008060408385031215611cd8578081fd5b611ce183611c84565b9150611cef60208401611c84565b90509250929050565b600080600060608486031215611d0c578081fd5b611d1584611c84565b9250611d2360208501611c84565b9150604084013590509250925092565b600080600080600080600060e0888a031215611d4d578283fd5b611d5688611c84565b9650611d6460208901611c84565b95506040880135945060608801359350611d8060808901611c9b565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215611dae578182fd5b611db783611c84565b946020939093013593505050565b600080600060608486031215611dd9578283fd5b611de284611c84565b925060208401359150611df760408501611c84565b90509250925092565b60008060008060608587031215611e15578384fd5b611e1e85611c84565b935060208501359250604085013567ffffffffffffffff80821115611e41578384fd5b818701915087601f830112611e54578384fd5b813581811115611e62578485fd5b886020828501011115611e73578485fd5b95989497505060200194505050565b600080600080600080600060e0888a031215611e9c578283fd5b611ea588611c84565b96506020880135955060408801359450611ec160608901611c9b565b93506080880135925060a08801359150611edd60c08901611c84565b905092959891949750929550565b600060208284031215611efc578081fd5b815180151581146105d2578182fd5b600080600060608486031215611f1f578283fd5b83359250611d2360208501611c84565b600060208284031215611f40578081fd5b5035919050565b600060208284031215611f58578081fd5b5051919050565b60008060408385031215611f71578182fd5b82359150611cef60208401611c84565b60008251611f93818460208701612145565b9190910192915050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6000602082528251806020840152612045816040850160208701612145565b601f01601f19169190910160400192915050565b60208082526019908201527f416e7973776170563345524332303a20464f5242494444454e00000000000000604082015260600190565b6020808252601c908201527f416e7973776170563345524332303a2061646472657373283078302900000000604082015260600190565b6020808252602f908201527f416e7973776170563345524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b60008219821115612129576121296121c7565b500190565b600082821015612140576121406121c7565b500390565b60005b83811015612160578181015183820152602001612148565b83811115611a455750506000910152565b60028104600182168061218557607f821691505b602082108114156121a657634e487b7160e01b600052602260045260246000fd5b50919050565b60006000198214156121c0576121c06121c7565b5060010190565b634e487b7160e01b600052601160045260246000fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a26469706673582212208a5b66e296c8b8e24743e27b5fa5bc732fc729cee795c2b410e8e104d5de7d4964736f6c6343000802003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe0000000000000000000000000000000000000000000000000000000000000012426164676572205365747420426164676572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076242414447455200000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe0000000000000000000000000000000000000000000000000000000000000012426164676572205365747420426164676572000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000076242414447455200000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Badger Sett Badger
Arg [1] : _symbol (string): bBADGER
Arg [2] : _decimals (uint8): 18
Arg [3] : _underlying (address): 0x0000000000000000000000000000000000000000
Arg [4] : _vault (address): 0xc564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000c564ee9f21ed8a2d8e7e76c085740d5e4c5fafbe
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [6] : 4261646765722053657474204261646765720000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [8] : 6242414447455200000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

5728:16926:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12628:149;;;;;;:::i;:::-;;:::i;:::-;;;8624:25:1;;;8612:2;8597:18;12628:149:0;;;;;;;;6101:136;;6145:92;6101:136;;12494:126;;;;;;:::i;:::-;;:::i;5811:18::-;;;:::i;:::-;;;;;;;:::i;14351:265::-;;;;;;:::i;:::-;;:::i;:::-;;;8451:14:1;;8444:22;8426:41;;8414:2;8399:18;14351:265:0;8381:92:1;10494:102:0;;;:::i;20574:927::-;;;;;;:::i;:::-;;:::i;12364:122::-;;;;;;:::i;:::-;;:::i;5957:137::-;;5999:95;5957:137;;5863:41;;;;;;;;14191:4:1;14179:17;;;14161:36;;14149:2;14134:18;5863:41:0;14116:87:1;6244:41:0;;;;;12230:126;;;:::i;22128:523::-;;;;;;:::i;:::-;;:::i;7749:134::-;;;;;;:::i;:::-;;:::i;7360:381::-;;;;;;:::i;:::-;;:::i;16949:938::-;;;;;;:::i;:::-;;:::i;6975:377::-;;;;;;:::i;:::-;;:::i;8325:269::-;;;;;;:::i;:::-;;:::i;11713:193::-;;;;;;:::i;:::-;;:::i;5913:35::-;;;;;;;;-1:-1:-1;;;;;6341:32:1;;;6323:51;;6311:2;6296:18;5913:35:0;6278:102:1;6365:54:0;;;;;;:::i;:::-;;;;;;;;;;;;;;8866:51;;;;;;:::i;:::-;;;;;;;;;;;;;;10604:349;;;;;;:::i;:::-;;:::i;6885:80::-;;;:::i;5836:20::-;;;:::i;7891:208::-;;;;;;:::i;:::-;;:::i;19247:438::-;;;;;;:::i;:::-;;:::i;11516:189::-;;;;;;:::i;:::-;;:::i;11914:127::-;;;;;;:::i;:::-;;:::i;15037:356::-;;;;;;:::i;:::-;;:::i;11262:246::-;;;:::i;16226:715::-;;;;;;:::i;:::-;;:::i;:::-;;9087:75;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;8107:210;;;;;;:::i;:::-;;:::i;10961:293::-;;;;;;:::i;:::-;;:::i;6695:182::-;;;:::i;12628:149::-;12718:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;;;;;;;;;12742:27:::1;12752:4;12758:6;12766:2;12742:9;:27::i;:::-;12735:34:::0;12628:149;-1:-1:-1;;;;12628:149:0:o;12494:126::-;12555:4;12579:33;12589:10;12601:6;12609:2;12579:9;:33::i;:::-;12572:40;12494:126;-1:-1:-1;;;12494:126:0:o;5811:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14351:265::-;14504:10;14427:4;14494:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;14494:30:0;;;;;;;;;;:38;;;14548:36;14427:4;;14494:30;;-1:-1:-1;;;;;;;;;;;14548:36:0;;;14527:5;8624:25:1;;8612:2;8597:18;;8579:76;14548:36:0;;;;;;;;-1:-1:-1;14604:4:0;14351:265;;;;:::o;10494:102::-;10576:12;;10494:102;;:::o;20574:927::-;20664:4;-1:-1:-1;;;;;20689:16:0;;;;;:39;;-1:-1:-1;;;;;;20709:19:0;;20723:4;20709:19;;20689:39;20681:48;;;;;;-1:-1:-1;;;;;20744:18:0;;20752:10;20744:18;20740:477;;-1:-1:-1;;;;;20858:15:0;;20840;20858;;;:9;:15;;;;;;;;20874:10;20858:27;;;;;;;;-1:-1:-1;;20904:28:0;;20900:306;;20972:5;20961:7;:16;;20953:70;;;;-1:-1:-1;;;20953:70:0;;12498:2:1;20953:70:0;;;12480:21:1;12537:2;12517:18;;;12510:30;12576:34;12556:18;;;12549:62;-1:-1:-1;;;12627:18:1;;;12620:39;12676:19;;20953:70:0;12470:231:1;20953:70:0;21042:15;21060;21070:5;21060:7;:15;:::i;:::-;-1:-1:-1;;;;;21094:15:0;;;;;;:9;:15;;;;;;;;21110:10;21094:27;;;;;;;;;;:37;;;21155:35;8624:25:1;;;21094:37:0;;-1:-1:-1;21110:10:0;;-1:-1:-1;;;;;;;;;;;21155:35:0;8597:18:1;21155:35:0;;;;;;;20900:306;;20740:477;;-1:-1:-1;;;;;21247:15:0;;21229;21247;;;:9;:15;;;;;;21281:16;;;;21273:76;;;;-1:-1:-1;;;21273:76:0;;;;;;;:::i;:::-;21380:15;21390:5;21380:7;:15;:::i;:::-;-1:-1:-1;;;;;21362:15:0;;;;;;;:9;:15;;;;;;:33;;;;21406:13;;;;;;;;:22;;21423:5;;21362:15;21406:22;;21423:5;;21406:22;:::i;:::-;;;;;;;;21459:2;-1:-1:-1;;;;;21444:25:0;21453:4;-1:-1:-1;;;;;21444:25:0;-1:-1:-1;;;;;;;;;;;21463:5:0;21444:25;;;;8624::1;;8612:2;8597:18;;8579:76;21444:25:0;;;;;;;;-1:-1:-1;21489:4:0;;20574:927;-1:-1:-1;;;;20574:927:0:o;12364:122::-;12413:4;12437:41;12447:10;12459:6;12467:10;12437:9;:41::i;:::-;12430:48;;12364:122;;;;:::o;12230:126::-;12302:10;12268:4;12314:21;;;:9;:21;;;;;;12268:4;;12292:56;;12302:10;12292:9;:56::i;:::-;12285:63;;12230:126;:::o;22128:523::-;22225:4;-1:-1:-1;;;;;22250:16:0;;;;;:39;;-1:-1:-1;;;;;;22270:19:0;;22284:4;22270:19;;22250:39;22242:48;;;;;;22331:10;22303:15;22321:21;;;:9;:21;;;;;;22361:16;;;;22353:76;;;;-1:-1:-1;;;22353:76:0;;;;;;;:::i;:::-;22466:15;22476:5;22466:7;:15;:::i;:::-;22452:10;22442:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;22492:13:0;;;;;;;:22;;22509:5;;22442:21;22492:22;;22509:5;;22492:22;:::i;:::-;;;;-1:-1:-1;;22530:31:0;;8624:25:1;;;-1:-1:-1;;;;;22530:31:0;;;22539:10;;-1:-1:-1;;;;;;;;;;;22530:31:0;8612:2:1;8597:18;22530:31:0;;;;;;;22581:62;;-1:-1:-1;;;22581:62:0;;-1:-1:-1;;;;;22581:37:0;;;;;:62;;22619:10;;22631:5;;22638:4;;;;22581:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22574:69;22128:523;-1:-1:-1;;;;;;22128:523:0:o;7749:134::-;7819:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;7836:17:::1;7842:2;7846:6;7836:5;:17::i;:::-;-1:-1:-1::0;7871:4:0::1;7749:134:::0;;;;:::o;7360:381::-;7428:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7453:22:0;::::1;7445:63;;;;-1:-1:-1::0;;;7445:63:0::1;;;;;;;:::i;:::-;7531:7;:5;:7::i;:::-;7519:9;:19:::0;;-1:-1:-1;;;;;;7519:19:0;;::::1;-1:-1:-1::0;;;;;7519:19:0;;::::1;;::::0;;;7549:9:::1;:20:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;7605:27:::1;:15;7623:9;7605:27;:::i;:::-;7580:22;:52:::0;;;7677:9:::1;::::0;7666::::1;::::0;7648:63:::1;::::0;-1:-1:-1;;;;;7677:9:0;;::::1;::::0;7666;;::::1;::::0;7648:63:::1;::::0;7677:9:::1;::::0;7648:63:::1;-1:-1:-1::0;7729:4:0::1;7360:381:::0;;;:::o;16949:938::-;17096:4;17140:8;17121:15;:27;;17113:70;;;;-1:-1:-1;;;17113:70:0;;11737:2:1;17113:70:0;;;11719:21:1;11776:2;11756:18;;;11749:30;11815:32;11795:18;;;11788:60;11865:18;;17113:70:0;11709:180:1;17113:70:0;-1:-1:-1;;;;;17376:14:0;;17196:18;17376:14;;;:6;:14;;;;;:16;;6145:92;;17306:6;;17331:2;;17352:5;;17376:16;17196:18;17376:16;;;:::i;:::-;;;;-1:-1:-1;17241:179:0;;;;;;8947:25:1;;;;-1:-1:-1;;;;;9046:15:1;;;9026:18;;;9019:43;9098:15;;;;9078:18;;;9071:43;9130:18;;;9123:34;9173:19;;;9166:35;9217:19;;;9210:35;;;8919:19;;17241:179:0;;;;;;;;;;;;17217:204;;;;;;17196:225;;17442:41;17455:6;17463:10;17475:1;17478;17481;17442:12;:41::i;:::-;:92;;;;17487:47;17506:6;17514:10;17526:1;17529;17532;17487:18;:47::i;:::-;17434:101;;;;;;-1:-1:-1;;;;;17556:16:0;;;;;:39;;-1:-1:-1;;;;;;17576:19:0;;17590:4;17576:19;;17556:39;17548:48;;;;;;-1:-1:-1;;;;;17627:17:0;;17609:15;17627:17;;;:9;:17;;;;;;17663:16;;;;17655:76;;;;-1:-1:-1;;;17655:76:0;;;;;;;:::i;:::-;17764:15;17774:5;17764:7;:15;:::i;:::-;-1:-1:-1;;;;;17744:17:0;;;;;;;:9;:17;;;;;;:35;;;;17790:13;;;;;;;;:22;;17807:5;;17744:17;17790:22;;17807:5;;17790:22;:::i;:::-;;;;;;;;17845:2;-1:-1:-1;;;;;17828:27:0;17837:6;-1:-1:-1;;;;;17828:27:0;-1:-1:-1;;;;;;;;;;;17849:5:0;17828:27;;;;8624:25:1;;8612:2;8597:18;;8579:76;17828:27:0;;;;;;;;-1:-1:-1;17875:4:0;;16949:938;-1:-1:-1;;;;;;;;;16949:938:0:o;6975:377::-;7042:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7067:22:0;::::1;7059:63;;;;-1:-1:-1::0;;;7059:63:0::1;;;;;;;:::i;:::-;7145:7;:5;:7::i;:::-;7133:9;:19:::0;;-1:-1:-1;;;;;;7133:19:0;;::::1;-1:-1:-1::0;;;;;7133:19:0;;::::1;;::::0;;;7163:9:::1;:20:::0;;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;7219:27:::1;:15;7237:9;7219:27;:::i;:::-;7194:22;:52:::0;;;7288:9:::1;::::0;7277::::1;::::0;7262:60:::1;::::0;-1:-1:-1;;;;;7288:9:0;;::::1;::::0;7277;;::::1;::::0;7262:60:::1;::::0;7288:9:::1;::::0;7262:60:::1;-1:-1:-1::0;7340:4:0::1;6975:377:::0;;;:::o;8325:269::-;8392:4;-1:-1:-1;;;;;8417:22:0;;8409:63;;;;-1:-1:-1;;;8409:63:0;;;;;;;:::i;:::-;8483:25;8489:10;8501:6;8483:5;:25::i;:::-;8524:40;;8624:25:1;;;-1:-1:-1;;;;;8524:40:0;;;8535:10;;8524:40;;8612:2:1;8597:18;8524:40:0;8579:76:1;11713:193:0;11773:4;11790:70;-1:-1:-1;;;;;11797:10:0;11790:35;11826:10;11846:4;11853:6;11790:35;:70::i;:::-;11878:20;11887:6;11895:2;11878:8;:20::i;10604:349::-;10758:74;;-1:-1:-1;;;10758:74:0;;10741:4;;-1:-1:-1;;;;;10765:10:0;10758:25;;;;:74;;10784:6;;10800:4;;10807:5;;10814:8;;10824:1;;10827;;10830;;10758:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10843:65:0;;-1:-1:-1;;;;;;;10850:10:0;10843:35;;-1:-1:-1;10879:6:0;10895:4;10902:5;10843:35;:65::i;:::-;10926:19;10935:5;10942:2;10926:8;:19::i;:::-;10919:26;10604:349;-1:-1:-1;;;;;;;;10604:349:0:o;6885:80::-;6923:7;6950;:5;:7::i;5836:20::-;;;;;;;:::i;7891:208::-;7963:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;7988:18:0;::::1;7980:59;;;;-1:-1:-1::0;;;7980:59:0::1;;;;;;;:::i;:::-;8050:19;8056:4;8062:6;8050:5;:19::i;19247:438::-:0;19319:4;-1:-1:-1;;;;;19344:16:0;;;;;:39;;-1:-1:-1;;;;;;19364:19:0;;19378:4;19364:19;;19344:39;19336:48;;;;;;19423:10;19395:15;19413:21;;;:9;:21;;;;;;19453:16;;;;19445:76;;;;-1:-1:-1;;;19445:76:0;;;;;;;:::i;:::-;19558:15;19568:5;19558:7;:15;:::i;:::-;19544:10;19534:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;19584:13:0;;;;;;;:22;;19601:5;;19534:21;19584:22;;19601:5;;19584:22;:::i;:::-;;;;-1:-1:-1;;19622:31:0;;8624:25:1;;;-1:-1:-1;;;;;19622:31:0;;;19631:10;;-1:-1:-1;;;;;;;;;;;19622:31:0;8612:2:1;8597:18;19622:31:0;;;;;;;;-1:-1:-1;19673:4:0;;19247:438;-1:-1:-1;;;19247:438:0:o;11516:189::-;11564:4;11581:70;-1:-1:-1;;;;;11588:10:0;11581:35;11617:10;11637:4;11644:6;11581:35;:70::i;:::-;11669:28;11678:6;11686:10;11669:8;:28::i;11914:127::-;11989:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;15037:356::-;15218:10;15141:4;15208:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15208:30:0;;;;;;;;;;:38;;;15262:36;15141:4;;15208:30;;-1:-1:-1;;;;;;;;;;;15262:36:0;;;15241:5;8624:25:1;;8612:2;8597:18;;8579:76;15262:36:0;;;;;;;;15318:67;;-1:-1:-1;;;15318:67:0;;-1:-1:-1;;;;;15318:42:0;;;;;:67;;15361:10;;15373:5;;15380:4;;;;15318:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15311:74;15037:356;-1:-1:-1;;;;;15037:356:0:o;11262:246::-;11331:40;;-1:-1:-1;;;11331:40:0;;11360:10;11331:40;;;6323:51:1;11299:4:0;;;;-1:-1:-1;;;;;11338:10:0;11331:28;;;;6296:18:1;;11331:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11316:55;-1:-1:-1;11382:71:0;-1:-1:-1;;;;;11389:10:0;11382:35;11418:10;11438:4;11316:55;11382:35;:71::i;:::-;11471:29;11480:7;11489:10;11471:8;:29::i;:::-;11464:36;;;11262:246;:::o;16226:715::-;16395:8;16376:15;:27;;16368:70;;;;-1:-1:-1;;;16368:70:0;;11737:2:1;16368:70:0;;;11719:21:1;11776:2;11756:18;;;11749:30;11815:32;11795:18;;;11788:60;11865:18;;16368:70:0;11709:180:1;16368:70:0;-1:-1:-1;;;;;16634:14:0;;16451:18;16634:14;;;:6;:14;;;;;:16;;5999:95;;16559:6;;16584:7;;16610:5;;16634:16;16451:18;16634:16;;;:::i;:::-;;;;-1:-1:-1;16496:182:0;;;;;;8947:25:1;;;;-1:-1:-1;;;;;9046:15:1;;;9026:18;;;9019:43;9098:15;;;;9078:18;;;9071:43;9130:18;;;9123:34;9173:19;;;9166:35;9217:19;;;9210:35;;;8919:19;;16496:182:0;;;;;;;;;;;;16472:207;;;;;;16451:228;;16700:41;16713:6;16721:10;16733:1;16736;16739;16700:12;:41::i;:::-;:92;;;;16745:47;16764:6;16772:10;16784:1;16787;16790;16745:18;:47::i;:::-;16692:101;;;;;;-1:-1:-1;;;;;16851:17:0;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;:34;;;16901:32;;8624:25:1;;;-1:-1:-1;;;;;;;;;;;16901:32:0;8597:18:1;16901:32:0;;;;;;;16226:715;;;;;;;;:::o;8107:210::-;8198:4;6630:7;:5;:7::i;:::-;-1:-1:-1;;;;;6616:21:0;:10;-1:-1:-1;;;;;6616:21:0;;6608:59;;;;-1:-1:-1;;;6608:59:0;;;;;;;:::i;:::-;8215:22:::1;8221:7;8230:6;8215:5;:22::i;:::-;8271:7;-1:-1:-1::0;;;;;8253:34:0::1;8263:6;8253:34;8280:6;8253:34;;;;8624:25:1::0;;8612:2;8597:18;;8579:76;10961:293:0;11123:86;;-1:-1:-1;;;11123:86:0;;11106:4;;-1:-1:-1;;;;;11130:10:0;11123:37;;;;:86;;11161:6;;11177:4;;11184:5;;11191:8;;11201:1;;11204;;11207;;11123:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11227:19;11236:5;11243:2;11227:8;:19::i;6695:182::-;6733:7;6776:22;;6757:15;:41;6753:90;;-1:-1:-1;6822:9:0;;-1:-1:-1;;;;;6822:9:0;6815:16;;6753:90;-1:-1:-1;6860:9:0;;-1:-1:-1;;;;;6860:9:0;6695:182;:::o;12785:198::-;12861:4;12878:19;12884:4;12890:6;12878:5;:19::i;:::-;12908:43;-1:-1:-1;;;;;12915:10:0;12908:31;12940:2;12944:6;12908:31;:43::i;:::-;-1:-1:-1;12969:6:0;;12785:198;-1:-1:-1;;12785:198:0:o;13264:268::-;-1:-1:-1;;;;;13340:21:0;;13332:65;;;;-1:-1:-1;;;13332:65:0;;13679:2:1;13332:65:0;;;13661:21:1;13718:2;13698:18;;;13691:30;13757:33;13737:18;;;13730:61;13808:18;;13332:65:0;13651:181:1;13332:65:0;13426:6;13410:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;13443:18:0;;;;;;:9;:18;;;;;:28;;13465:6;;13443:18;:28;;13465:6;;13443:28;:::i;:::-;;;;-1:-1:-1;;13487:37:0;;8624:25:1;;;-1:-1:-1;;;;;13487:37:0;;;13504:1;;-1:-1:-1;;;;;;;;;;;13487:37:0;8612:2:1;8597:18;13487:37:0;;;;;;;;13264:268;;:::o;17895:399::-;18063:110;;-1:-1:-1;;;18063:110:0;;;6038:27:1;18127:16:0;6081:11:1;;;6074:27;6117:12;;;6110:28;;;18007:4:0;;;;6154:12:1;;18063:110:0;;;-1:-1:-1;;18063:110:0;;;;;;;;;18039:135;;18063:110;18039:135;;;;18185:14;18202:24;;;;;;;;;9483:25:1;;;9556:4;9544:17;;9524:18;;;9517:45;;;;9578:18;;;9571:34;;;9621:18;;;9614:34;;;18039:135:0;;-1:-1:-1;18185:14:0;18202:24;;9455:19:1;;18202:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;18202:24:0;;-1:-1:-1;;18202:24:0;;;-1:-1:-1;;;;;;;18245:20:0;;;;;;:40;;;18279:6;-1:-1:-1;;;;;18269:16:0;:6;-1:-1:-1;;;;;18269:16:0;;18237:49;17895:399;-1:-1:-1;;;;;;;;17895:399:0:o;18302:290::-;18420:4;18437:12;18452:20;18461:10;18758:58;;5637:66:1;18758:58:0;;;5625:79:1;5720:12;;;5713:28;;;18721:7:0;;5757:12:1;;18758:58:0;;;;;;;;;;;;18748:69;;;;;;18741:76;;18666:159;;;;18452:20;18500:24;;;18483:14;18500:24;;;;;;;;;9483:25:1;;;9556:4;9544:17;;9524:18;;;9517:45;;;;9578:18;;;9571:34;;;9621:18;;;9614:34;;;18437:35:0;;-1:-1:-1;18483:14:0;18500:24;;9455:19:1;;18500:24:0;9437:217:1;13864:270:0;-1:-1:-1;;;;;13940:21:0;;13932:67;;;;-1:-1:-1;;;13932:67:0;;12096:2:1;13932:67:0;;;12078:21:1;12135:2;12115:18;;;12108:30;12174:34;12154:18;;;12147:62;-1:-1:-1;;;12225:18:1;;;12218:31;12266:19;;13932:67:0;12068:223:1;13932:67:0;-1:-1:-1;;;;;14012:18:0;;;;;;:9;:18;;;;;:28;;14034:6;;14012:18;:28;;14034:6;;14012:28;:::i;:::-;;;;;;;;14067:6;14051:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;14089:37:0;;8624:25:1;;;14115:1:0;;-1:-1:-1;;;;;14089:37:0;;;-1:-1:-1;;;;;;;;;;;14089:37:0;8612:2:1;8597:18;14089:37:0;8579:76:1;4564:201:0;4688:68;;-1:-1:-1;;;;;6643:15:1;;;4688:68:0;;;6625:34:1;6695:15;;6675:18;;;6668:43;6727:18;;;6720:34;;;4662:95:0;;4681:5;;-1:-1:-1;;;4711:27:0;6560:18:1;;4688:68:0;;;;-1:-1:-1;;4688:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;4688:68:0;-1:-1:-1;;;;;;4688:68:0;;;;;;;;;;4662:18;:95::i;:::-;4564:201;;;;:::o;12049:173::-;12110:4;12135:10;-1:-1:-1;;;;;12135:26:0;12127:35;;;;;;12173:17;12179:2;12183:6;12173:5;:17::i;:::-;-1:-1:-1;12208:6:0;;12049:173;-1:-1:-1;12049:173:0:o;4383:::-;4489:58;;-1:-1:-1;;;;;7632:32:1;;4489:58:0;;;7614:51:1;7681:18;;;7674:34;;;4463:85:0;;4482:5;;-1:-1:-1;;;4512:23:0;7587:18:1;;4489:58:0;7569:145:1;4463:85:0;4383:173;;;:::o;5123:598::-;5211:27;5219:5;-1:-1:-1;;;;;5211:25:0;;:27::i;:::-;5203:71;;;;-1:-1:-1;;;5203:71:0;;13319:2:1;5203:71:0;;;13301:21:1;13358:2;13338:18;;;13331:30;13397:33;13377:18;;;13370:61;13448:18;;5203:71:0;13291:181:1;5203:71:0;5348:12;5362:23;5397:5;-1:-1:-1;;;;;5389:19:0;5409:4;5389:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5347:67;;;;5433:7;5425:52;;;;-1:-1:-1;;;5425:52:0;;10960:2:1;5425:52:0;;;10942:21:1;;;10979:18;;;10972:30;11038:34;11018:18;;;11011:62;11090:18;;5425:52:0;10932:182:1;5425:52:0;5494:17;;:21;5490:224;;5636:10;5625:30;;;;;;;;;;;;:::i;:::-;5617:85;;;;-1:-1:-1;;;5617:85:0;;12908:2:1;5617:85:0;;;12890:21:1;12947:2;12927:18;;;12920:30;12986:34;12966:18;;;12959:62;-1:-1:-1;;;13037:18:1;;;13030:40;13087:19;;5617:85:0;12880:232:1;3943:374:0;4003:4;4226:20;;4069:66;4266:15;;;;;:42;;-1:-1:-1;4285:23:0;;;4258:51;-1:-1:-1;;3943:374:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:156;258:20;;318:4;307:16;;297:27;;287:2;;338:1;335;328:12;353:196;;465:2;453:9;444:7;440:23;436:32;433:2;;;486:6;478;471:22;433:2;514:29;533:9;514:29;:::i;554:270::-;;;683:2;671:9;662:7;658:23;654:32;651:2;;;704:6;696;689:22;651:2;732:29;751:9;732:29;:::i;:::-;722:39;;780:38;814:2;803:9;799:18;780:38;:::i;:::-;770:48;;641:183;;;;;:::o;829:338::-;;;;975:2;963:9;954:7;950:23;946:32;943:2;;;996:6;988;981:22;943:2;1024:29;1043:9;1024:29;:::i;:::-;1014:39;;1072:38;1106:2;1095:9;1091:18;1072:38;:::i;:::-;1062:48;;1157:2;1146:9;1142:18;1129:32;1119:42;;933:234;;;;;:::o;1172:616::-;;;;;;;;1384:3;1372:9;1363:7;1359:23;1355:33;1352:2;;;1406:6;1398;1391:22;1352:2;1434:29;1453:9;1434:29;:::i;:::-;1424:39;;1482:38;1516:2;1505:9;1501:18;1482:38;:::i;:::-;1472:48;;1567:2;1556:9;1552:18;1539:32;1529:42;;1618:2;1607:9;1603:18;1590:32;1580:42;;1641:37;1673:3;1662:9;1658:19;1641:37;:::i;:::-;1631:47;;1725:3;1714:9;1710:19;1697:33;1687:43;;1777:3;1766:9;1762:19;1749:33;1739:43;;1342:446;;;;;;;;;;:::o;1793:264::-;;;1922:2;1910:9;1901:7;1897:23;1893:32;1890:2;;;1943:6;1935;1928:22;1890:2;1971:29;1990:9;1971:29;:::i;:::-;1961:39;2047:2;2032:18;;;;2019:32;;-1:-1:-1;;;1880:177:1:o;2062:338::-;;;;2208:2;2196:9;2187:7;2183:23;2179:32;2176:2;;;2229:6;2221;2214:22;2176:2;2257:29;2276:9;2257:29;:::i;:::-;2247:39;;2333:2;2322:9;2318:18;2305:32;2295:42;;2356:38;2390:2;2379:9;2375:18;2356:38;:::i;:::-;2346:48;;2166:234;;;;;:::o;2405:783::-;;;;;2570:2;2558:9;2549:7;2545:23;2541:32;2538:2;;;2591:6;2583;2576:22;2538:2;2619:29;2638:9;2619:29;:::i;:::-;2609:39;;2695:2;2684:9;2680:18;2667:32;2657:42;;2750:2;2739:9;2735:18;2722:32;2773:18;2814:2;2806:6;2803:14;2800:2;;;2835:6;2827;2820:22;2800:2;2878:6;2867:9;2863:22;2853:32;;2923:7;2916:4;2912:2;2908:13;2904:27;2894:2;;2950:6;2942;2935:22;2894:2;2995;2982:16;3021:2;3013:6;3010:14;3007:2;;;3042:6;3034;3027:22;3007:2;3092:7;3087:2;3078:6;3074:2;3070:15;3066:24;3063:37;3060:2;;;3118:6;3110;3103:22;3060:2;2528:660;;;;-1:-1:-1;;3154:2:1;3146:11;;-1:-1:-1;;;2528:660:1:o;3193:616::-;;;;;;;;3405:3;3393:9;3384:7;3380:23;3376:33;3373:2;;;3427:6;3419;3412:22;3373:2;3455:29;3474:9;3455:29;:::i;:::-;3445:39;;3531:2;3520:9;3516:18;3503:32;3493:42;;3582:2;3571:9;3567:18;3554:32;3544:42;;3605:36;3637:2;3626:9;3622:18;3605:36;:::i;:::-;3595:46;;3688:3;3677:9;3673:19;3660:33;3650:43;;3740:3;3729:9;3725:19;3712:33;3702:43;;3764:39;3798:3;3787:9;3783:19;3764:39;:::i;:::-;3754:49;;3363:446;;;;;;;;;;:::o;3814:297::-;;3934:2;3922:9;3913:7;3909:23;3905:32;3902:2;;;3955:6;3947;3940:22;3902:2;3992:9;3986:16;4045:5;4038:13;4031:21;4024:5;4021:32;4011:2;;4072:6;4064;4057:22;4116:332;;;;4262:2;4250:9;4241:7;4237:23;4233:32;4230:2;;;4283:6;4275;4268:22;4230:2;4324:9;4311:23;4301:33;;4353:38;4387:2;4376:9;4372:18;4353:38;:::i;4453:190::-;;4565:2;4553:9;4544:7;4540:23;4536:32;4533:2;;;4586:6;4578;4571:22;4533:2;-1:-1:-1;4614:23:1;;4523:120;-1:-1:-1;4523:120:1:o;4648:194::-;;4771:2;4759:9;4750:7;4746:23;4742:32;4739:2;;;4792:6;4784;4777:22;4739:2;-1:-1:-1;4820:16:1;;4729:113;-1:-1:-1;4729:113:1:o;4847:264::-;;;4976:2;4964:9;4955:7;4951:23;4947:32;4944:2;;;4997:6;4989;4982:22;4944:2;5038:9;5025:23;5015:33;;5067:38;5101:2;5090:9;5086:18;5067:38;:::i;5116:274::-;;5283:6;5277:13;5299:53;5345:6;5340:3;5333:4;5325:6;5321:17;5299:53;:::i;:::-;5368:16;;;;;5253:137;-1:-1:-1;;5253:137:1:o;6765:670::-;-1:-1:-1;;;;;7132:15:1;;;7114:34;;7184:15;;;;7179:2;7164:18;;7157:43;7231:2;7216:18;;7209:34;;;;7274:2;7259:18;;7252:34;;;;7335:4;7323:17;7317:3;7302:19;;7295:46;7094:3;7357:19;;7350:35;7416:3;7401:19;;7394:35;;;;7063:3;7048:19;;7030:405::o;7719:562::-;-1:-1:-1;;;;;7932:32:1;;7914:51;;7996:2;7981:18;;7974:34;;;8044:2;8039;8024:18;;8017:30;;;8063:18;;8056:34;;;7719:562;8083:6;8133;8127:3;8112:19;;8099:49;8168:22;;;8192:3;8164:32;;;8157:46;;;;8264:2;8243:15;;;-1:-1:-1;;8239:29:1;8224:45;8220:55;;7904:377;-1:-1:-1;;;7904:377:1:o;9659:383::-;;9808:2;9797:9;9790:21;9840:6;9834:13;9883:6;9878:2;9867:9;9863:18;9856:34;9899:66;9958:6;9953:2;9942:9;9938:18;9933:2;9925:6;9921:15;9899:66;:::i;:::-;10026:2;10005:15;-1:-1:-1;;10001:29:1;9986:45;;;;10033:2;9982:54;;9780:262;-1:-1:-1;;9780:262:1:o;10047:349::-;10249:2;10231:21;;;10288:2;10268:18;;;10261:30;10327:27;10322:2;10307:18;;10300:55;10387:2;10372:18;;10221:175::o;10401:352::-;10603:2;10585:21;;;10642:2;10622:18;;;10615:30;10681;10676:2;10661:18;;10654:58;10744:2;10729:18;;10575:178::o;11119:411::-;11321:2;11303:21;;;11360:2;11340:18;;;11333:30;11399:34;11394:2;11379:18;;11372:62;-1:-1:-1;;;11465:2:1;11450:18;;11443:45;11520:3;11505:19;;11293:237::o;14208:128::-;;14279:1;14275:6;14272:1;14269:13;14266:2;;;14285:18;;:::i;:::-;-1:-1:-1;14321:9:1;;14256:80::o;14341:125::-;;14409:1;14406;14403:8;14400:2;;;14414:18;;:::i;:::-;-1:-1:-1;14451:9:1;;14390:76::o;14471:258::-;14543:1;14553:113;14567:6;14564:1;14561:13;14553:113;;;14643:11;;;14637:18;14624:11;;;14617:39;14589:2;14582:10;14553:113;;;14684:6;14681:1;14678:13;14675:2;;;-1:-1:-1;;14719:1:1;14701:16;;14694:27;14524:205::o;14734:380::-;14819:1;14809:12;;14866:1;14856:12;;;14877:2;;14931:4;14923:6;14919:17;14909:27;;14877:2;14984;14976:6;14973:14;14953:18;14950:38;14947:2;;;15030:10;15025:3;15021:20;15018:1;15011:31;15065:4;15062:1;15055:15;15093:4;15090:1;15083:15;14947:2;;14789:325;;;:::o;15119:135::-;;-1:-1:-1;;15179:17:1;;15176:2;;;15199:18;;:::i;:::-;-1:-1:-1;15246:1:1;15235:13;;15166:88::o;15259:127::-;15320:10;15315:3;15311:20;15308:1;15301:31;15351:4;15348:1;15341:15;15375:4;15372:1;15365:15

Swarm Source

ipfs://8a5b66e296c8b8e24743e27b5fa5bc732fc729cee795c2b410e8e104d5de7d49
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.