false
true
0

Contract Address Details

0xB46F8CF42e504Efe8BEf895f848741daA55e9f1D

Contract Name
VaultParameters
Creator
0xf827ac–48cabf at 0x669ccb–a2a4d7
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
26131330
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
VaultParameters




Optimization enabled
true
Compiler version
v0.7.5+commit.eb77ed08




Optimization runs
200
EVM Version
istanbul




Verified at
2026-03-27T18:12:33.956435Z

Constructor Arguments

000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf190000000000000000000000009cf0389322fedd2a3dceacac0c3108c8151615a3

Arg [0] (address) : 0xb1cff81b9305166ff1efc49a129ad2afcd7bcf19
Arg [1] (address) : 0x9cf0389322fedd2a3dceacac0c3108c8151615a3

              

VaultParameters.sol

// SPDX-License-Identifier: bsl-1.1

/*
  Copyright 2020 Unit Protocol: Artem Zakharov (az@unit.xyz).
*/

// File: contracts/VaultParameters.sol
pragma solidity ^0.7.1;


/**
 * @title Auth
 * @author Unit Protocol: Ivan Zakharov (@34x4p08)
 * @dev Manages USDP's system access
 **/
contract Auth {

    // address of the the contract with vault parameters
    VaultParameters public vaultParameters;

    constructor(address _parameters) public {
        vaultParameters = VaultParameters(_parameters);
    }

    // ensures tx's sender is a manager
    modifier onlyManager() {
        require(vaultParameters.isManager(msg.sender), "Unit Protocol: AUTH_FAILED");
        _;
    }

    // ensures tx's sender is able to modify the Vault
    modifier hasVaultAccess() {
        require(vaultParameters.canModifyVault(msg.sender), "Unit Protocol: AUTH_FAILED");
        _;
    }

    // ensures tx's sender is the Vault
    modifier onlyVault() {
        require(msg.sender == vaultParameters.vault(), "Unit Protocol: AUTH_FAILED");
        _;
    }
}


/**
 * @title VaultParameters
 * @author Unit Protocol: Ivan Zakharov (@34x4p08)
 **/
contract VaultParameters is Auth {

    // map token to stability fee percentage; 3 decimals
    mapping(address => uint) public stabilityFee;

    // map token to liquidation fee percentage, 0 decimals
    mapping(address => uint) public liquidationFee;

    // map token to USDP mint limit
    mapping(address => uint) public tokenDebtLimit;

    // permissions to modify the Vault
    mapping(address => bool) public canModifyVault;

    // managers
    mapping(address => bool) public isManager;

    // enabled oracle types
    mapping(uint => mapping (address => bool)) public isOracleTypeEnabled;

    // address of the Vault
    address payable public vault;

    // The foundation address
    address public foundation;

    /**
     * The address for an Ethereum contract is deterministically computed from the address of its creator (sender)
     * and how many transactions the creator has sent (nonce). The sender and nonce are RLP encoded and then
     * hashed with Keccak-256.
     * Therefore, the Vault address can be pre-computed and passed as an argument before deployment.
    **/
    constructor(address payable _vault, address _foundation) public Auth(address(this)) {
        require(_vault != address(0), "Unit Protocol: ZERO_ADDRESS");
        require(_foundation != address(0), "Unit Protocol: ZERO_ADDRESS");

        isManager[msg.sender] = true;
        vault = _vault;
        foundation = _foundation;
    }

    /**
     * @notice Only manager is able to call this function
     * @dev Grants and revokes manager's status of any address
     * @param who The target address
     * @param permit The permission flag
     **/
    function setManager(address who, bool permit) external onlyManager {
        isManager[who] = permit;
    }

    /**
     * @notice Only manager is able to call this function
     * @dev Sets the foundation address
     * @param newFoundation The new foundation address
     **/
    function setFoundation(address newFoundation) external onlyManager {
        require(newFoundation != address(0), "Unit Protocol: ZERO_ADDRESS");
        foundation = newFoundation;
    }

    /**
     * @notice Only manager is able to call this function
     * @dev Sets ability to use token as the main collateral
     * @param asset The address of the main collateral token
     * @param stabilityFeeValue The percentage of the year stability fee (3 decimals)
     * @param liquidationFeeValue The liquidation fee percentage (0 decimals)
     * @param usdpLimit The USDP token issue limit
     * @param oracles The enables oracle types
     **/
    function setCollateral(
        address asset,
        uint stabilityFeeValue,
        uint liquidationFeeValue,
        uint usdpLimit,
        uint[] calldata oracles
    ) external onlyManager {
        setStabilityFee(asset, stabilityFeeValue);
        setLiquidationFee(asset, liquidationFeeValue);
        setTokenDebtLimit(asset, usdpLimit);
        for (uint i=0; i < oracles.length; i++) {
            setOracleType(oracles[i], asset, true);
        }
    }

    /**
     * @notice Only manager is able to call this function
     * @dev Sets a permission for an address to modify the Vault
     * @param who The target address
     * @param permit The permission flag
     **/
    function setVaultAccess(address who, bool permit) external onlyManager {
        canModifyVault[who] = permit;
    }

    /**
     * @notice Only manager is able to call this function
     * @dev Sets the percentage of the year stability fee for a particular collateral
     * @param asset The address of the main collateral token
     * @param newValue The stability fee percentage (3 decimals)
     **/
    function setStabilityFee(address asset, uint newValue) public onlyManager {
        stabilityFee[asset] = newValue;
    }

    /**
     * @notice Only manager is able to call this function
     * @dev Sets the percentage of the liquidation fee for a particular collateral
     * @param asset The address of the main collateral token
     * @param newValue The liquidation fee percentage (0 decimals)
     **/
    function setLiquidationFee(address asset, uint newValue) public onlyManager {
        require(newValue <= 100, "Unit Protocol: VALUE_OUT_OF_RANGE");
        liquidationFee[asset] = newValue;
    }

    /**
     * @notice Only manager is able to call this function
     * @dev Enables/disables oracle types
     * @param _type The type of the oracle
     * @param asset The address of the main collateral token
     * @param enabled The control flag
     **/
    function setOracleType(uint _type, address asset, bool enabled) public onlyManager {
        isOracleTypeEnabled[_type][asset] = enabled;
    }

    /**
     * @notice Only manager is able to call this function
     * @dev Sets USDP limit for a specific collateral
     * @param asset The address of the main collateral token
     * @param limit The limit number
     **/
    function setTokenDebtLimit(address asset, uint limit) public onlyManager {
        tokenDebtLimit[asset] = limit;
    }
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":true},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"istanbul","compilationTarget":{"VaultParameters.sol":"VaultParameters"}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_vault","internalType":"address payable"},{"type":"address","name":"_foundation","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"canModifyVault","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"foundation","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isManager","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"isOracleTypeEnabled","inputs":[{"type":"uint256","name":"","internalType":"uint256"},{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"liquidationFee","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setCollateral","inputs":[{"type":"address","name":"asset","internalType":"address"},{"type":"uint256","name":"stabilityFeeValue","internalType":"uint256"},{"type":"uint256","name":"liquidationFeeValue","internalType":"uint256"},{"type":"uint256","name":"usdpLimit","internalType":"uint256"},{"type":"uint256[]","name":"oracles","internalType":"uint256[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setFoundation","inputs":[{"type":"address","name":"newFoundation","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setLiquidationFee","inputs":[{"type":"address","name":"asset","internalType":"address"},{"type":"uint256","name":"newValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setManager","inputs":[{"type":"address","name":"who","internalType":"address"},{"type":"bool","name":"permit","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setOracleType","inputs":[{"type":"uint256","name":"_type","internalType":"uint256"},{"type":"address","name":"asset","internalType":"address"},{"type":"bool","name":"enabled","internalType":"bool"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setStabilityFee","inputs":[{"type":"address","name":"asset","internalType":"address"},{"type":"uint256","name":"newValue","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setTokenDebtLimit","inputs":[{"type":"address","name":"asset","internalType":"address"},{"type":"uint256","name":"limit","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setVaultAccess","inputs":[{"type":"address","name":"who","internalType":"address"},{"type":"bool","name":"permit","internalType":"bool"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"stabilityFee","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"tokenDebtLimit","inputs":[{"type":"address","name":"","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address payable"}],"name":"vault","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract VaultParameters"}],"name":"vaultParameters","inputs":[]}]
              

Contract Creation Code

Verify & Publish
0x608060405234801561001057600080fd5b50604051610e42380380610e428339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b031916301790556001600160a01b0382166100a9576040805162461bcd60e51b815260206004820152601b60248201527f556e69742050726f746f636f6c3a205a45524f5f414444524553530000000000604482015290519081900360640190fd5b6001600160a01b038116610104576040805162461bcd60e51b815260206004820152601b60248201527f556e69742050726f746f636f6c3a205a45524f5f414444524553530000000000604482015290519081900360640190fd5b336000908152600560205260409020805460ff19166001179055600780546001600160a01b039384166001600160a01b03199182161790915560088054929093169116179055610ce9806101596000396000f3fe608060405234801561001057600080fd5b506004361061010b5760003560e01c8063bf33bd4c116100a2578063ede2362f11610071578063ede2362f14610373578063f2e323ba146103a1578063f3ae2415146103c7578063fbfa77cf146103ed578063fec0feb3146103f55761010b565b8063bf33bd4c146102c7578063c8023af4146102f3578063cc9a10a614610319578063db3543f51461034d5761010b565b8063997a2572116100de578063997a25721461022d578063a526ae2c14610265578063a5e90eee14610291578063aca345ee146102bf5761010b565b80630db063b01461011057806341fbb0501461014a5780634df143411461016e578063674d106e1461019c575b600080fd5b6101366004803603602081101561012657600080fd5b50356001600160a01b0316610421565b604080519115158252519081900360200190f35b610152610436565b604080516001600160a01b039092168252519081900360200190f35b61019a6004803603604081101561018457600080fd5b506001600160a01b038135169060200135610445565b005b61019a600480360360a08110156101b257600080fd5b6001600160a01b038235169160208101359160408201359160608101359181019060a0810160808201356401000000008111156101ee57600080fd5b82018360208201111561020057600080fd5b8035906020019184602083028401116401000000008311171561022257600080fd5b509092509050610517565b6102536004803603602081101561024357600080fd5b50356001600160a01b0316610625565b60408051918252519081900360200190f35b61019a6004803603604081101561027b57600080fd5b506001600160a01b038135169060200135610637565b61019a600480360360408110156102a757600080fd5b506001600160a01b0381351690602001351515610709565b6101526107ea565b61019a600480360360408110156102dd57600080fd5b506001600160a01b0381351690602001356107f9565b6102536004803603602081101561030957600080fd5b50356001600160a01b031661090b565b61019a6004803603606081101561032f57600080fd5b508035906001600160a01b036020820135169060400135151561091d565b61019a6004803603602081101561036357600080fd5b50356001600160a01b0316610a08565b61019a6004803603604081101561038957600080fd5b506001600160a01b0381351690602001351515610b3b565b610253600480360360208110156103b757600080fd5b50356001600160a01b0316610c1c565b610136600480360360208110156103dd57600080fd5b50356001600160a01b0316610c2e565b610152610c43565b6101366004803603604081101561040b57600080fd5b50803590602001356001600160a01b0316610c52565b60046020526000908152604090205460ff1681565b6008546001600160a01b031681565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b50516104fb576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260036020526040902055565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561056257600080fd5b505afa158015610576573d6000803e3d6000fd5b505050506040513d602081101561058c57600080fd5b50516105cd576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6105d78686610637565b6105e186856107f9565b6105eb8684610445565b60005b8181101561061c5761061483838381811061060557fe5b9050602002013588600161091d565b6001016105ee565b50505050505050565b60016020526000908152604090205481565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561068257600080fd5b505afa158015610696573d6000803e3d6000fd5b505050506040513d60208110156106ac57600080fd5b50516106ed576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260016020526040902055565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561075457600080fd5b505afa158015610768573d6000803e3d6000fd5b505050506040513d602081101561077e57600080fd5b50516107bf576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031681565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561084457600080fd5b505afa158015610858573d6000803e3d6000fd5b505050506040513d602081101561086e57600080fd5b50516108af576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b60648111156108ef5760405162461bcd60e51b8152600401808060200182810382526021815260200180610c736021913960400191505060405180910390fd5b6001600160a01b03909116600090815260026020526040902055565b60026020526000908152604090205481565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561096857600080fd5b505afa15801561097c573d6000803e3d6000fd5b505050506040513d602081101561099257600080fd5b50516109d3576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b60009283526006602090815260408085206001600160a01b039490941685529290529120805460ff1916911515919091179055565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b158015610a5357600080fd5b505afa158015610a67573d6000803e3d6000fd5b505050506040513d6020811015610a7d57600080fd5b5051610abe576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6001600160a01b038116610b19576040805162461bcd60e51b815260206004820152601b60248201527f556e69742050726f746f636f6c3a205a45524f5f414444524553530000000000604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b5051610bf1576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b60036020526000908152604090205481565b60056020526000908152604090205460ff1681565b6007546001600160a01b031681565b600660209081526000928352604080842090915290825290205460ff168156fe556e69742050726f746f636f6c3a2056414c55455f4f55545f4f465f52414e4745556e69742050726f746f636f6c3a20415554485f4641494c4544000000000000a264697066735822122021508b615a9559702f309313c1a1539541514c902b032b41a74177c093a5ca8864736f6c63430007050033000000000000000000000000b1cff81b9305166ff1efc49a129ad2afcd7bcf190000000000000000000000009cf0389322fedd2a3dceacac0c3108c8151615a3

Deployed ByteCode

0x608060405234801561001057600080fd5b506004361061010b5760003560e01c8063bf33bd4c116100a2578063ede2362f11610071578063ede2362f14610373578063f2e323ba146103a1578063f3ae2415146103c7578063fbfa77cf146103ed578063fec0feb3146103f55761010b565b8063bf33bd4c146102c7578063c8023af4146102f3578063cc9a10a614610319578063db3543f51461034d5761010b565b8063997a2572116100de578063997a25721461022d578063a526ae2c14610265578063a5e90eee14610291578063aca345ee146102bf5761010b565b80630db063b01461011057806341fbb0501461014a5780634df143411461016e578063674d106e1461019c575b600080fd5b6101366004803603602081101561012657600080fd5b50356001600160a01b0316610421565b604080519115158252519081900360200190f35b610152610436565b604080516001600160a01b039092168252519081900360200190f35b61019a6004803603604081101561018457600080fd5b506001600160a01b038135169060200135610445565b005b61019a600480360360a08110156101b257600080fd5b6001600160a01b038235169160208101359160408201359160608101359181019060a0810160808201356401000000008111156101ee57600080fd5b82018360208201111561020057600080fd5b8035906020019184602083028401116401000000008311171561022257600080fd5b509092509050610517565b6102536004803603602081101561024357600080fd5b50356001600160a01b0316610625565b60408051918252519081900360200190f35b61019a6004803603604081101561027b57600080fd5b506001600160a01b038135169060200135610637565b61019a600480360360408110156102a757600080fd5b506001600160a01b0381351690602001351515610709565b6101526107ea565b61019a600480360360408110156102dd57600080fd5b506001600160a01b0381351690602001356107f9565b6102536004803603602081101561030957600080fd5b50356001600160a01b031661090b565b61019a6004803603606081101561032f57600080fd5b508035906001600160a01b036020820135169060400135151561091d565b61019a6004803603602081101561036357600080fd5b50356001600160a01b0316610a08565b61019a6004803603604081101561038957600080fd5b506001600160a01b0381351690602001351515610b3b565b610253600480360360208110156103b757600080fd5b50356001600160a01b0316610c1c565b610136600480360360208110156103dd57600080fd5b50356001600160a01b0316610c2e565b610152610c43565b6101366004803603604081101561040b57600080fd5b50803590602001356001600160a01b0316610c52565b60046020526000908152604090205460ff1681565b6008546001600160a01b031681565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561049057600080fd5b505afa1580156104a4573d6000803e3d6000fd5b505050506040513d60208110156104ba57600080fd5b50516104fb576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260036020526040902055565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561056257600080fd5b505afa158015610576573d6000803e3d6000fd5b505050506040513d602081101561058c57600080fd5b50516105cd576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6105d78686610637565b6105e186856107f9565b6105eb8684610445565b60005b8181101561061c5761061483838381811061060557fe5b9050602002013588600161091d565b6001016105ee565b50505050505050565b60016020526000908152604090205481565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561068257600080fd5b505afa158015610696573d6000803e3d6000fd5b505050506040513d60208110156106ac57600080fd5b50516106ed576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6001600160a01b03909116600090815260016020526040902055565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561075457600080fd5b505afa158015610768573d6000803e3d6000fd5b505050506040513d602081101561077e57600080fd5b50516107bf576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000546001600160a01b031681565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561084457600080fd5b505afa158015610858573d6000803e3d6000fd5b505050506040513d602081101561086e57600080fd5b50516108af576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b60648111156108ef5760405162461bcd60e51b8152600401808060200182810382526021815260200180610c736021913960400191505060405180910390fd5b6001600160a01b03909116600090815260026020526040902055565b60026020526000908152604090205481565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b15801561096857600080fd5b505afa15801561097c573d6000803e3d6000fd5b505050506040513d602081101561099257600080fd5b50516109d3576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b60009283526006602090815260408085206001600160a01b039490941685529290529120805460ff1916911515919091179055565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b158015610a5357600080fd5b505afa158015610a67573d6000803e3d6000fd5b505050506040513d6020811015610a7d57600080fd5b5051610abe576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6001600160a01b038116610b19576040805162461bcd60e51b815260206004820152601b60248201527f556e69742050726f746f636f6c3a205a45524f5f414444524553530000000000604482015290519081900360640190fd5b600880546001600160a01b0319166001600160a01b0392909216919091179055565b6000546040805163f3ae241560e01b815233600482015290516001600160a01b039092169163f3ae241591602480820192602092909190829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b5051610bf1576040805162461bcd60e51b815260206004820152601a6024820152600080516020610c94833981519152604482015290519081900360640190fd5b6001600160a01b03919091166000908152600460205260409020805460ff1916911515919091179055565b60036020526000908152604090205481565b60056020526000908152604090205460ff1681565b6007546001600160a01b031681565b600660209081526000928352604080842090915290825290205460ff168156fe556e69742050726f746f636f6c3a2056414c55455f4f55545f4f465f52414e4745556e69742050726f746f636f6c3a20415554485f4641494c4544000000000000a264697066735822122021508b615a9559702f309313c1a1539541514c902b032b41a74177c093a5ca8864736f6c63430007050033