Contract 0x2f18c74e76652356a49f0f231d79e13bdf4eb622

Contract Overview

Balance:
0 BNB
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa98c47e30eaccbba9b7a730fa9f444191641e2179e7100d09015a8b9959f930dSet Lending Pool...80522662021-04-17 8:09:31159 days 19 hrs ago0x54013fe8d7eabe4db0ad65813edb16cf8630532a IN  0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB0.00089152
0xd0f978f13738cae137f1e274a11ca59ae131f4340f23e380264f4e631b9c2f3fSet Pool Admin80522602021-04-17 8:09:13159 days 19 hrs ago0x54013fe8d7eabe4db0ad65813edb16cf8630532a IN  0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB0.00059242
0xab530f98e0cf6c00ab3eaa24ec9edf255cdb354ef6e5c195f4a8e66019eadae1Set Pool Admin80522552021-04-17 8:08:58159 days 19 hrs ago0x54013fe8d7eabe4db0ad65813edb16cf8630532a IN  0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB0.00059242
0xb7ac7e792c0a8a4d9480401d3dc4086c6ea967d52ab0b0f1e6879370c6411177Set Lending Rate...80522302021-04-17 8:07:43159 days 19 hrs ago0x54013fe8d7eabe4db0ad65813edb16cf8630532a IN  0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB0.00089196
0xf43a2e168b0ae5aa2b384681154f6b0ba2759d26adf58418b4751c07c9a71c5aSet Price Oracle80522252021-04-17 8:07:28159 days 19 hrs ago0x54013fe8d7eabe4db0ad65813edb16cf8630532a IN  0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB0.00089196
0x43a71620e6333aacaf2fde09e98a9198cd5fed2119456740c8c2a86448663556Set Lending Pool...80521992021-04-17 8:06:10159 days 19 hrs ago0x54013fe8d7eabe4db0ad65813edb16cf8630532a IN  0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB0.01066188
0x9301f42837b5854f0ba48ca03edf8ceac3def3fd56ffc5b7ccd19f856dbc0f6bSet Lending Pool...80521932021-04-17 8:05:52159 days 19 hrs ago0x54013fe8d7eabe4db0ad65813edb16cf8630532a IN  0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB0.01138832
0x55efbbb5bf9f7cbaf8ca6977393dee006664f928201509233d4b574190f89c8dSet Emergency Ad...80521762021-04-17 8:05:01159 days 19 hrs ago0x54013fe8d7eabe4db0ad65813edb16cf8630532a IN  0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB0.00089286
0xed9591b66096937e4b50246b0640ce1e72b5e93093fdfb103ccfac521e01b54eSet Pool Admin80521732021-04-17 8:04:52159 days 19 hrs ago0x54013fe8d7eabe4db0ad65813edb16cf8630532a IN  0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB0.00089242
0xaca90c7695d36ba07a831aa5a5b5fca239bc38c96bc5871e24209be228018b4d0x6080604080521672021-04-17 8:04:34159 days 19 hrs ago0x54013fe8d7eabe4db0ad65813edb16cf8630532a IN  Contract Creation0 BNB0.03204608
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x18397e756c416c98302f1e9a1d2532b5536e480c499ee5e6f7828f8169108f65102167242021-07-01 15:32:5784 days 11 hrs ago 0xcf2b5faac39a333aee2b6209c3a74f3f73e88b2b 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x5a170d8c393cbf79dd310c3ec59f0aeb52f75b4e6993bec4663cb859a731e421102165412021-07-01 15:23:4884 days 11 hrs ago 0x1738b7a43933a5d651093a8501c242c457b6bfbd 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x5a170d8c393cbf79dd310c3ec59f0aeb52f75b4e6993bec4663cb859a731e421102165412021-07-01 15:23:4884 days 11 hrs ago 0xa92751595e567aa33121bb917b40e2a8d2ec6d6c 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x7f158b045a558aa8294b184f081ac9ce7ede54b1c6d2c1ff5b9a1bc851d67b1b102025502021-07-01 3:44:1584 days 23 hrs ago 0x1738b7a43933a5d651093a8501c242c457b6bfbd 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x7f158b045a558aa8294b184f081ac9ce7ede54b1c6d2c1ff5b9a1bc851d67b1b102025502021-07-01 3:44:1584 days 23 hrs ago 0xa92751595e567aa33121bb917b40e2a8d2ec6d6c 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x16a85dae84047a4abc56be6efdb5763a07a450a78a537c3ee21df30884832ca0102025402021-07-01 3:43:4584 days 23 hrs ago 0x1738b7a43933a5d651093a8501c242c457b6bfbd 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x51758f3aa398a1ece728441e9e392171b58c1235f61b3bbf1718907c387319ad102025292021-07-01 3:43:1284 days 23 hrs ago 0x1738b7a43933a5d651093a8501c242c457b6bfbd 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x39d93456d129f85658859d501aab3a99a9e4b75dcf0ac2a28dfe2d812e3c3522101826462021-06-30 10:25:5385 days 16 hrs ago 0xcf2b5faac39a333aee2b6209c3a74f3f73e88b2b 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0xc7d0c3e81a26a9eceee5487f84a4be0e401929d70534652aa48681b3cae96f00101820042021-06-30 9:53:4785 days 17 hrs ago 0xcf2b5faac39a333aee2b6209c3a74f3f73e88b2b 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0xc7d0c3e81a26a9eceee5487f84a4be0e401929d70534652aa48681b3cae96f00101820042021-06-30 9:53:4785 days 17 hrs ago 0xa92751595e567aa33121bb917b40e2a8d2ec6d6c 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x79bb9948814649d4e5273fe5b747930311410a03a242bcc95555c7c23b7ac1c8101817992021-06-30 9:43:3285 days 17 hrs ago 0x1738b7a43933a5d651093a8501c242c457b6bfbd 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x79bb9948814649d4e5273fe5b747930311410a03a242bcc95555c7c23b7ac1c8101817992021-06-30 9:43:3285 days 17 hrs ago 0xa92751595e567aa33121bb917b40e2a8d2ec6d6c 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x79bb9948814649d4e5273fe5b747930311410a03a242bcc95555c7c23b7ac1c8101817992021-06-30 9:43:3285 days 17 hrs ago 0xa92751595e567aa33121bb917b40e2a8d2ec6d6c 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x47d2c0d31c6f31d4f0f78b819aac8e21ebcb5a431a881772bc3b48040cf46541101817592021-06-30 9:41:3285 days 17 hrs ago 0xcf2b5faac39a333aee2b6209c3a74f3f73e88b2b 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x46ae5e4c04ae6164503f18921fa9734d9d98ca39dfb7177be2edb8a395a67bfd101816372021-06-30 9:35:2685 days 17 hrs ago 0x1738b7a43933a5d651093a8501c242c457b6bfbd 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x46ae5e4c04ae6164503f18921fa9734d9d98ca39dfb7177be2edb8a395a67bfd101816372021-06-30 9:35:2685 days 17 hrs ago 0xa92751595e567aa33121bb917b40e2a8d2ec6d6c 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0xe1b231f188dd291bf713e297498fe515e79bfffe520ccaafb86b9cc9a15b1f95101816222021-06-30 9:34:4185 days 17 hrs ago 0x1738b7a43933a5d651093a8501c242c457b6bfbd 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x1d19bf33b801b5ccaf2f742c77e872f503f675a1ef3852e54d04f1de132c73a4100592352021-06-26 2:37:2590 days 45 mins ago 0xcf2b5faac39a333aee2b6209c3a74f3f73e88b2b 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0xa8d1ab42a13eef03344716d62cd6d81b3090b68957daad9ef2bf19db52b20a88100365062021-06-25 7:40:5890 days 19 hrs ago 0xa92751595e567aa33121bb917b40e2a8d2ec6d6c 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x6eb2a4b9bcfb3a911a8d64b856dfc6ed801dff443473659158b2c10eb35f0ca7100364952021-06-25 7:40:2590 days 19 hrs ago 0xa92751595e567aa33121bb917b40e2a8d2ec6d6c 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x1ecf4840539a02b95a787dfb50fd7db747814a7e1ff8824f87f72c30a1e5c4b899780402021-06-23 6:57:4092 days 20 hrs ago 0x1738b7a43933a5d651093a8501c242c457b6bfbd 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x95271229401c883de7e0950b0a78d6ccdd5a4a8dec7d01c0e7c197240a2255e599780202021-06-23 6:56:4092 days 20 hrs ago 0x1738b7a43933a5d651093a8501c242c457b6bfbd 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0x95271229401c883de7e0950b0a78d6ccdd5a4a8dec7d01c0e7c197240a2255e599780202021-06-23 6:56:4092 days 20 hrs ago 0xa92751595e567aa33121bb917b40e2a8d2ec6d6c 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0xef5c3c3e2ab8857d077d06c88147c659af6fb3ff65422819aba7cce67141e38c99444072021-06-22 2:56:0194 days 26 mins ago 0xa92751595e567aa33121bb917b40e2a8d2ec6d6c 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
0xdeee34ccab3a78834ffb8d447eced58c2fd92758c49b4a7bcdd88f075b80657799443962021-06-22 2:55:2894 days 26 mins ago 0xa92751595e567aa33121bb917b40e2a8d2ec6d6c 0x2f18c74e76652356a49f0f231d79e13bdf4eb6220 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LendingPoolAddressesProvider

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
File 1 of 10 : LendingPoolAddressesProvider.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;

import {Ownable} from '../../dependencies/openzeppelin/contracts/Ownable.sol';

// Prettier ignore to prevent buidler flatter bug
// prettier-ignore
import {InitializableImmutableAdminUpgradeabilityProxy} from '../libraries/galaxydefi-upgradeability/InitializableImmutableAdminUpgradeabilityProxy.sol';

import {ILendingPoolAddressesProvider} from '../../interfaces/ILendingPoolAddressesProvider.sol';

/**
 * @title LendingPoolAddressesProvider contract
 * @dev Main registry of addresses part of or connected to the protocol, including permissioned roles
 * - Acting also as factory of proxies and admin of those, so with right to change its implementations
 * - Owned by the GalaxyDefi Governance
 * @author GalaxyDefi
 **/
contract LendingPoolAddressesProvider is Ownable, ILendingPoolAddressesProvider {
  string private _marketId;
  mapping(bytes32 => address) private _addresses;

  bytes32 private constant LENDING_POOL = 'LENDING_POOL';
  bytes32 private constant LENDING_POOL_CONFIGURATOR = 'LENDING_POOL_CONFIGURATOR';
  bytes32 private constant POOL_ADMIN = 'POOL_ADMIN';
  bytes32 private constant EMERGENCY_ADMIN = 'EMERGENCY_ADMIN';
  bytes32 private constant LENDING_POOL_COLLATERAL_MANAGER = 'COLLATERAL_MANAGER';
  bytes32 private constant PRICE_ORACLE = 'PRICE_ORACLE';
  bytes32 private constant LENDING_RATE_ORACLE = 'LENDING_RATE_ORACLE';

  constructor(string memory marketId) public {
    _setMarketId(marketId);
  }

  /**
   * @dev Returns the id of the GalaxyDefi market to which this contracts points to
   * @return The market id
   **/
  function getMarketId() external view override returns (string memory) {
    return _marketId;
  }

  /**
   * @dev Allows to set the market which this LendingPoolAddressesProvider represents
   * @param marketId The market id
   */
  function setMarketId(string memory marketId) external override onlyOwner {
    _setMarketId(marketId);
  }

  /**
   * @dev General function to update the implementation of a proxy registered with
   * certain `id`. If there is no proxy registered, it will instantiate one and
   * set as implementation the `implementationAddress`
   * IMPORTANT Use this function carefully, only for ids that don't have an explicit
   * setter function, in order to avoid unexpected consequences
   * @param id The id
   * @param implementationAddress The address of the new implementation
   */
  function setAddressAsProxy(bytes32 id, address implementationAddress)
    external
    override
    onlyOwner
  {
    _updateImpl(id, implementationAddress);
    emit AddressSet(id, implementationAddress, true);
  }

  /**
   * @dev Sets an address for an id replacing the address saved in the addresses map
   * IMPORTANT Use this function carefully, as it will do a hard replacement
   * @param id The id
   * @param newAddress The address to set
   */
  function setAddress(bytes32 id, address newAddress) external override onlyOwner {
    _addresses[id] = newAddress;
    emit AddressSet(id, newAddress, false);
  }

  /**
   * @dev Returns an address by id
   * @return The address
   */
  function getAddress(bytes32 id) public view override returns (address) {
    return _addresses[id];
  }

  /**
   * @dev Returns the address of the LendingPool proxy
   * @return The LendingPool proxy address
   **/
  function getLendingPool() external view override returns (address) {
    return getAddress(LENDING_POOL);
  }

  /**
   * @dev Updates the implementation of the LendingPool, or creates the proxy
   * setting the new `pool` implementation on the first time calling it
   * @param pool The new LendingPool implementation
   **/
  function setLendingPoolImpl(address pool) external override onlyOwner {
    _updateImpl(LENDING_POOL, pool);
    emit LendingPoolUpdated(pool);
  }

  /**
   * @dev Returns the address of the LendingPoolConfigurator proxy
   * @return The LendingPoolConfigurator proxy address
   **/
  function getLendingPoolConfigurator() external view override returns (address) {
    return getAddress(LENDING_POOL_CONFIGURATOR);
  }

  /**
   * @dev Updates the implementation of the LendingPoolConfigurator, or creates the proxy
   * setting the new `configurator` implementation on the first time calling it
   * @param configurator The new LendingPoolConfigurator implementation
   **/
  function setLendingPoolConfiguratorImpl(address configurator) external override onlyOwner {
    _updateImpl(LENDING_POOL_CONFIGURATOR, configurator);
    emit LendingPoolConfiguratorUpdated(configurator);
  }

  /**
   * @dev Returns the address of the LendingPoolCollateralManager. Since the manager is used
   * through delegateCall within the LendingPool contract, the proxy contract pattern does not work properly hence
   * the addresses are changed directly
   * @return The address of the LendingPoolCollateralManager
   **/

  function getLendingPoolCollateralManager() external view override returns (address) {
    return getAddress(LENDING_POOL_COLLATERAL_MANAGER);
  }

  /**
   * @dev Updates the address of the LendingPoolCollateralManager
   * @param manager The new LendingPoolCollateralManager address
   **/
  function setLendingPoolCollateralManager(address manager) external override onlyOwner {
    _addresses[LENDING_POOL_COLLATERAL_MANAGER] = manager;
    emit LendingPoolCollateralManagerUpdated(manager);
  }

  /**
   * @dev The functions below are getters/setters of addresses that are outside the context
   * of the protocol hence the upgradable proxy pattern is not used
   **/

  function getPoolAdmin() external view override returns (address) {
    return getAddress(POOL_ADMIN);
  }

  function setPoolAdmin(address admin) external override onlyOwner {
    _addresses[POOL_ADMIN] = admin;
    emit ConfigurationAdminUpdated(admin);
  }

  function getEmergencyAdmin() external view override returns (address) {
    return getAddress(EMERGENCY_ADMIN);
  }

  function setEmergencyAdmin(address emergencyAdmin) external override onlyOwner {
    _addresses[EMERGENCY_ADMIN] = emergencyAdmin;
    emit EmergencyAdminUpdated(emergencyAdmin);
  }

  function getPriceOracle() external view override returns (address) {
    return getAddress(PRICE_ORACLE);
  }

  function setPriceOracle(address priceOracle) external override onlyOwner {
    _addresses[PRICE_ORACLE] = priceOracle;
    emit PriceOracleUpdated(priceOracle);
  }

  function getLendingRateOracle() external view override returns (address) {
    return getAddress(LENDING_RATE_ORACLE);
  }

  function setLendingRateOracle(address lendingRateOracle) external override onlyOwner {
    _addresses[LENDING_RATE_ORACLE] = lendingRateOracle;
    emit LendingRateOracleUpdated(lendingRateOracle);
  }

  /**
   * @dev Internal function to update the implementation of a specific proxied component of the protocol
   * - If there is no proxy registered in the given `id`, it creates the proxy setting `newAdress`
   *   as implementation and calls the initialize() function on the proxy
   * - If there is already a proxy registered, it just updates the implementation to `newAddress` and
   *   calls the initialize() function via upgradeToAndCall() in the proxy
   * @param id The id of the proxy to be updated
   * @param newAddress The address of the new implementation
   **/
  function _updateImpl(bytes32 id, address newAddress) internal {
    address payable proxyAddress = payable(_addresses[id]);

    InitializableImmutableAdminUpgradeabilityProxy proxy =
      InitializableImmutableAdminUpgradeabilityProxy(proxyAddress);
    bytes memory params = abi.encodeWithSignature('initialize(address)', address(this));

    if (proxyAddress == address(0)) {
      proxy = new InitializableImmutableAdminUpgradeabilityProxy(address(this));
      proxy.initialize(newAddress, params);
      _addresses[id] = address(proxy);
      emit ProxyCreated(id, address(proxy));
    } else {
      proxy.upgradeToAndCall(newAddress, params);
    }
  }

  function _setMarketId(string memory marketId) internal {
    _marketId = marketId;
    emit MarketIdSet(marketId);
  }
}

File 2 of 10 : Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.6.0;

import './Context.sol';

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
  address private _owner;

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

  /**
   * @dev Initializes the contract setting the deployer as the initial owner.
   */
  constructor() internal {
    address msgSender = _msgSender();
    _owner = msgSender;
    emit OwnershipTransferred(address(0), msgSender);
  }

  /**
   * @dev Returns the address of the current owner.
   */
  function owner() public view returns (address) {
    return _owner;
  }

  /**
   * @dev Throws if called by any account other than the owner.
   */
  modifier onlyOwner() {
    require(_owner == _msgSender(), 'Ownable: caller is not the owner');
    _;
  }

  /**
   * @dev Leaves the contract without owner. It will not be possible to call
   * `onlyOwner` functions anymore. Can only be called by the current owner.
   *
   * NOTE: Renouncing ownership will leave the contract without an owner,
   * thereby removing any functionality that is only available to the owner.
   */
  function renounceOwnership() public virtual onlyOwner {
    emit OwnershipTransferred(_owner, address(0));
    _owner = address(0);
  }

  /**
   * @dev Transfers ownership of the contract to a new account (`newOwner`).
   * Can only be called by the current owner.
   */
  function transferOwnership(address newOwner) public virtual onlyOwner {
    require(newOwner != address(0), 'Ownable: new owner is the zero address');
    emit OwnershipTransferred(_owner, newOwner);
    _owner = newOwner;
  }
}

File 3 of 10 : InitializableImmutableAdminUpgradeabilityProxy.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;

import './BaseImmutableAdminUpgradeabilityProxy.sol';
import '../../../dependencies/openzeppelin/upgradeability/InitializableUpgradeabilityProxy.sol';

/**
 * @title InitializableAdminUpgradeabilityProxy
 * @dev Extends BaseAdminUpgradeabilityProxy with an initializer function
 */
contract InitializableImmutableAdminUpgradeabilityProxy is
  BaseImmutableAdminUpgradeabilityProxy,
  InitializableUpgradeabilityProxy
{
  constructor(address admin) public BaseImmutableAdminUpgradeabilityProxy(admin) {}

  /**
   * @dev Only fall back when the sender is not the admin.
   */
  function _willFallback() internal override(BaseImmutableAdminUpgradeabilityProxy, Proxy) {
    BaseImmutableAdminUpgradeabilityProxy._willFallback();
  }
}

File 4 of 10 : ILendingPoolAddressesProvider.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;

/**
 * @title LendingPoolAddressesProvider contract
 * @dev Main registry of addresses part of or connected to the protocol, including permissioned roles
 * - Acting also as factory of proxies and admin of those, so with right to change its implementations
 * - Owned by the GalaxyDefi Governance
 * @author GalaxyDefi
 **/
interface ILendingPoolAddressesProvider {
  event MarketIdSet(string newMarketId);
  event LendingPoolUpdated(address indexed newAddress);
  event ConfigurationAdminUpdated(address indexed newAddress);
  event EmergencyAdminUpdated(address indexed newAddress);
  event LendingPoolConfiguratorUpdated(address indexed newAddress);
  event LendingPoolCollateralManagerUpdated(address indexed newAddress);
  event PriceOracleUpdated(address indexed newAddress);
  event LendingRateOracleUpdated(address indexed newAddress);
  event ProxyCreated(bytes32 id, address indexed newAddress);
  event AddressSet(bytes32 id, address indexed newAddress, bool hasProxy);

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

  function setMarketId(string calldata marketId) external;

  function setAddress(bytes32 id, address newAddress) external;

  function setAddressAsProxy(bytes32 id, address impl) external;

  function getAddress(bytes32 id) external view returns (address);

  function getLendingPool() external view returns (address);

  function setLendingPoolImpl(address pool) external;

  function getLendingPoolConfigurator() external view returns (address);

  function setLendingPoolConfiguratorImpl(address configurator) external;

  function getLendingPoolCollateralManager() external view returns (address);

  function setLendingPoolCollateralManager(address manager) external;

  function getPoolAdmin() external view returns (address);

  function setPoolAdmin(address admin) external;

  function getEmergencyAdmin() external view returns (address);

  function setEmergencyAdmin(address admin) external;

  function getPriceOracle() external view returns (address);

  function setPriceOracle(address priceOracle) external;

  function getLendingRateOracle() external view returns (address);

  function setLendingRateOracle(address lendingRateOracle) external;
}

File 5 of 10 : Context.sol
// SPDX-License-Identifier: MIT
pragma solidity 0.6.12;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
  function _msgSender() internal view virtual returns (address payable) {
    return msg.sender;
  }

  function _msgData() internal view virtual returns (bytes memory) {
    this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
    return msg.data;
  }
}

File 6 of 10 : BaseImmutableAdminUpgradeabilityProxy.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;

import '../../../dependencies/openzeppelin/upgradeability/BaseUpgradeabilityProxy.sol';

/**
 * @title BaseImmutableAdminUpgradeabilityProxy
 * @author GalaxyDefi, inspired by the OpenZeppelin upgradeability proxy pattern
 * @dev This contract combines an upgradeability proxy with an authorization
 * mechanism for administrative tasks. The admin role is stored in an immutable, which
 * helps saving transactions costs
 * All external functions in this contract must be guarded by the
 * `ifAdmin` modifier. See ethereum/solidity#3864 for a Solidity
 * feature proposal that would enable this to be done automatically.
 */
contract BaseImmutableAdminUpgradeabilityProxy is BaseUpgradeabilityProxy {
  address immutable ADMIN;

  constructor(address admin) public {
    ADMIN = admin;
  }

  modifier ifAdmin() {
    if (msg.sender == ADMIN) {
      _;
    } else {
      _fallback();
    }
  }

  /**
   * @return The address of the proxy admin.
   */
  function admin() external ifAdmin returns (address) {
    return ADMIN;
  }

  /**
   * @return The address of the implementation.
   */
  function implementation() external ifAdmin returns (address) {
    return _implementation();
  }

  /**
   * @dev Upgrade the backing implementation of the proxy.
   * Only the admin can call this function.
   * @param newImplementation Address of the new implementation.
   */
  function upgradeTo(address newImplementation) external ifAdmin {
    _upgradeTo(newImplementation);
  }

  /**
   * @dev Upgrade the backing implementation of the proxy and call a function
   * on the new implementation.
   * This is useful to initialize the proxied contract.
   * @param newImplementation Address of the new implementation.
   * @param data Data to send as msg.data in the low level call.
   * It should include the signature and the parameters of the function to be called, as described in
   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
   */
  function upgradeToAndCall(address newImplementation, bytes calldata data)
    external
    payable
    ifAdmin
  {
    _upgradeTo(newImplementation);
    (bool success, ) = newImplementation.delegatecall(data);
    require(success);
  }

  /**
   * @dev Only fall back when the sender is not the admin.
   */
  function _willFallback() internal virtual override {
    require(msg.sender != ADMIN, 'Cannot call fallback function from the proxy admin');
    super._willFallback();
  }
}

File 7 of 10 : InitializableUpgradeabilityProxy.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;

import './BaseUpgradeabilityProxy.sol';

/**
 * @title InitializableUpgradeabilityProxy
 * @dev Extends BaseUpgradeabilityProxy with an initializer for initializing
 * implementation and init data.
 */
contract InitializableUpgradeabilityProxy is BaseUpgradeabilityProxy {
  /**
   * @dev Contract initializer.
   * @param _logic Address of the initial implementation.
   * @param _data Data to send as msg.data to the implementation to initialize the proxied contract.
   * It should include the signature and the parameters of the function to be called, as described in
   * https://solidity.readthedocs.io/en/v0.4.24/abi-spec.html#function-selector-and-argument-encoding.
   * This parameter is optional, if no data is given the initialization call to proxied contract will be skipped.
   */
  function initialize(address _logic, bytes memory _data) public payable {
    require(_implementation() == address(0));
    assert(IMPLEMENTATION_SLOT == bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1));
    _setImplementation(_logic);
    if (_data.length > 0) {
      (bool success, ) = _logic.delegatecall(_data);
      require(success);
    }
  }
}

File 8 of 10 : BaseUpgradeabilityProxy.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;

import './Proxy.sol';
import '../contracts/Address.sol';

/**
 * @title BaseUpgradeabilityProxy
 * @dev This contract implements a proxy that allows to change the
 * implementation address to which it will delegate.
 * Such a change is called an implementation upgrade.
 */
contract BaseUpgradeabilityProxy is Proxy {
  /**
   * @dev Emitted when the implementation is upgraded.
   * @param implementation Address of the new implementation.
   */
  event Upgraded(address indexed implementation);

  /**
   * @dev Storage slot with the address of the current implementation.
   * This is the keccak-256 hash of "eip1967.proxy.implementation" subtracted by 1, and is
   * validated in the constructor.
   */
  bytes32 internal constant IMPLEMENTATION_SLOT =
    0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc;

  /**
   * @dev Returns the current implementation.
   * @return impl Address of the current implementation
   */
  function _implementation() internal view override returns (address impl) {
    bytes32 slot = IMPLEMENTATION_SLOT;
    //solium-disable-next-line
    assembly {
      impl := sload(slot)
    }
  }

  /**
   * @dev Upgrades the proxy to a new implementation.
   * @param newImplementation Address of the new implementation.
   */
  function _upgradeTo(address newImplementation) internal {
    _setImplementation(newImplementation);
    emit Upgraded(newImplementation);
  }

  /**
   * @dev Sets the implementation address of the proxy.
   * @param newImplementation Address of the new implementation.
   */
  function _setImplementation(address newImplementation) internal {
    require(
      Address.isContract(newImplementation),
      'Cannot set a proxy implementation to a non-contract address'
    );

    bytes32 slot = IMPLEMENTATION_SLOT;

    //solium-disable-next-line
    assembly {
      sstore(slot, newImplementation)
    }
  }
}

File 9 of 10 : Proxy.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity ^0.6.0;

/**
 * @title Proxy
 * @dev Implements delegation of calls to other contracts, with proper
 * forwarding of return values and bubbling of failures.
 * It defines a fallback function that delegates all calls to the address
 * returned by the abstract _implementation() internal function.
 */
abstract contract Proxy {
  /**
   * @dev Fallback function.
   * Implemented entirely in `_fallback`.
   */
  fallback() external payable {
    _fallback();
  }

  /**
   * @return The Address of the implementation.
   */
  function _implementation() internal view virtual returns (address);

  /**
   * @dev Delegates execution to an implementation contract.
   * This is a low level function that doesn't return to its internal call site.
   * It will return to the external caller whatever the implementation returns.
   * @param implementation Address to delegate.
   */
  function _delegate(address implementation) internal {
    //solium-disable-next-line
    assembly {
      // Copy msg.data. We take full control of memory in this inline assembly
      // block because it will not return to Solidity code. We overwrite the
      // Solidity scratch pad at memory position 0.
      calldatacopy(0, 0, calldatasize())

      // Call the implementation.
      // out and outsize are 0 because we don't know the size yet.
      let result := delegatecall(gas(), implementation, 0, calldatasize(), 0, 0)

      // Copy the returned data.
      returndatacopy(0, 0, returndatasize())

      switch result
        // delegatecall returns 0 on error.
        case 0 {
          revert(0, returndatasize())
        }
        default {
          return(0, returndatasize())
        }
    }
  }

  /**
   * @dev Function that is run as the first thing in the fallback function.
   * Can be redefined in derived contracts to add functionality.
   * Redefinitions must call super._willFallback().
   */
  function _willFallback() internal virtual {}

  /**
   * @dev fallback implementation.
   * Extracted to enable manual triggering.
   */
  function _fallback() internal {
    _willFallback();
    _delegate(_implementation());
  }
}

File 10 of 10 : Address.sol
// SPDX-License-Identifier: agpl-3.0
pragma solidity 0.6.12;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
  /**
   * @dev Returns true if `account` is a contract.
   *
   * [IMPORTANT]
   * ====
   * It is unsafe to assume that an address for which this function returns
   * false is an externally-owned account (EOA) and not a contract.
   *
   * Among others, `isContract` will return false for the following
   * types of addresses:
   *
   *  - an externally-owned account
   *  - a contract in construction
   *  - an address where a contract will be created
   *  - an address where a contract lived, but was destroyed
   * ====
   */
  function isContract(address account) internal view returns (bool) {
    // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
    // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
    // for accounts without code, i.e. `keccak256('')`
    bytes32 codehash;
    bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
    // solhint-disable-next-line no-inline-assembly
    assembly {
      codehash := extcodehash(account)
    }
    return (codehash != accountHash && codehash != 0x0);
  }

  /**
   * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
   * `recipient`, forwarding all available gas and reverting on errors.
   *
   * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
   * of certain opcodes, possibly making contracts go over the 2300 gas limit
   * imposed by `transfer`, making them unable to receive funds via
   * `transfer`. {sendValue} removes this limitation.
   *
   * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
   *
   * IMPORTANT: because control is transferred to `recipient`, care must be
   * taken to not create reentrancy vulnerabilities. Consider using
   * {ReentrancyGuard} or the
   * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
   */
  function sendValue(address payable recipient, uint256 amount) internal {
    require(address(this).balance >= amount, 'Address: insufficient balance');

    // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
    (bool success, ) = recipient.call{value: amount}('');
    require(success, 'Address: unable to send value, recipient may have reverted');
  }
}

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

Contract ABI

[{"inputs":[{"internalType":"string","name":"marketId","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"hasProxy","type":"bool"}],"name":"AddressSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"ConfigurationAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"EmergencyAdminUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"LendingPoolCollateralManagerUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"LendingPoolConfiguratorUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"LendingPoolUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"LendingRateOracleUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"newMarketId","type":"string"}],"name":"MarketIdSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"PriceOracleUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"id","type":"bytes32"},{"indexed":true,"internalType":"address","name":"newAddress","type":"address"}],"name":"ProxyCreated","type":"event"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getEmergencyAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLendingPool","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLendingPoolCollateralManager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLendingPoolConfigurator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLendingRateOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getMarketId","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPoolAdmin","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPriceOracle","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"newAddress","type":"address"}],"name":"setAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"id","type":"bytes32"},{"internalType":"address","name":"implementationAddress","type":"address"}],"name":"setAddressAsProxy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"emergencyAdmin","type":"address"}],"name":"setEmergencyAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"manager","type":"address"}],"name":"setLendingPoolCollateralManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"configurator","type":"address"}],"name":"setLendingPoolConfiguratorImpl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"pool","type":"address"}],"name":"setLendingPoolImpl","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lendingRateOracle","type":"address"}],"name":"setLendingRateOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"marketId","type":"string"}],"name":"setMarketId","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"setPoolAdmin","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"priceOracle","type":"address"}],"name":"setPriceOracle","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b5060405162001dca38038062001dca833981810160405260208110156200003757600080fd5b81019080805160405193929190846401000000008211156200005857600080fd5b9083019060208201858111156200006e57600080fd5b82516401000000008111828201881017156200008957600080fd5b82525081516020918201929091019080838360005b83811015620000b85781810151838201526020016200009e565b50505050905090810190601f168015620000e65780820380516001836020036101000a031916815260200191505b506040525050506000620000ff6200015b60201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35062000154816200015f565b50620002b0565b3390565b80516200017490600190602084019062000214565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799816040518080602001828103825283818151815260200191508051906020019080838360005b83811015620001d6578181015183820152602001620001bc565b50505050905090810190601f168015620002045780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200025757805160ff191683800117855562000287565b8280016001018555821562000287579182015b82811115620002875782518255916020019190600101906200026a565b506200029592915062000299565b5090565b5b808211156200029557600081556001016200029a565b611b0a80620002c06000396000f3fe608060405234801561001057600080fd5b50600436106101425760003560e01c8063715018a6116100b8578063c12542df1161007c578063c12542df14610347578063ca446dd91461036d578063ddcaa9ea14610399578063f2fde38b146103a1578063f67b1847146103c7578063fca513a81461046d57610142565b8063715018a614610301578063820d12741461030957806385c858b11461032f5780638da5cb5b14610337578063aecda3781461033f57610142565b8063398e55531161010a578063398e5553146101de578063530e784f14610204578063568ef4701461022a5780635aef021f146102a75780635dcc528c146102cd578063712d9171146102f957610142565b80630261bf8b1461014757806321f8a7211461016b578063283d62ad1461018857806335da3394146101b05780633618abba146101d6575b600080fd5b61014f610475565b604080516001600160a01b039092168252519081900360200190f35b61014f6004803603602081101561018157600080fd5b5035610494565b6101ae6004803603602081101561019e57600080fd5b50356001600160a01b03166104af565b005b6101ae600480360360208110156101c657600080fd5b50356001600160a01b0316610587565b61014f610664565b6101ae600480360360208110156101f457600080fd5b50356001600160a01b0316610685565b6101ae6004803603602081101561021a57600080fd5b50356001600160a01b0316610765565b61023261083f565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561026c578181015183820152602001610254565b50505050905090810190601f1680156102995780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101ae600480360360208110156102bd57600080fd5b50356001600160a01b03166108d4565b6101ae600480360360408110156102e357600080fd5b50803590602001356001600160a01b031661097c565b61014f610a25565b6101ae610a45565b6101ae6004803603602081101561031f57600080fd5b50356001600160a01b0316610ae7565b61014f610bc8565b61014f610bef565b61014f610bfe565b6101ae6004803603602081101561035d57600080fd5b50356001600160a01b0316610c16565b6101ae6004803603604081101561038357600080fd5b50803590602001356001600160a01b0316610ccb565b61014f610d8c565b6101ae600480360360208110156103b757600080fd5b50356001600160a01b0316610da9565b6101ae600480360360208110156103dd57600080fd5b8101906020810181356401000000008111156103f857600080fd5b82018360208201111561040a57600080fd5b8035906020019184600183028401116401000000008311171561042c57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610ea1945050505050565b61014f610f05565b600061048f6b13115391125391d7d413d3d360a21b610494565b905090565b6000908152600260205260409020546001600160a01b031690565b6104b7610f1f565b6000546001600160a01b03908116911614610507576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b692827a7a62fa0a226a4a760b11b600090815260026020527f8625fbc469bac10fd11de1d783dcd446542784dbcc535ef64a1da61860fda74c80546001600160a01b0319166001600160a01b03841690811790915560405190917fc20a317155a9e7d84e06b716b4b355d47742ab9f8c5d630e7f556553f582430d91a250565b61058f610f1f565b6000546001600160a01b039081169116146105df576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6e22a6a2a923a2a721acafa0a226a4a760891b600090815260026020527f767aa9c986e1d88108b2558f00fbd21b689a0397581446e2e868cd70421026cc80546001600160a01b0319166001600160a01b03841690811790915560405190917fe19673fc861bfeb894cf2d6b7662505497ef31c0f489b742db24ee331082691691a250565b600061048f724c454e44494e475f524154455f4f5241434c4560681b610494565b61068d610f1f565b6000546001600160a01b039081169116146106dd576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b7121a7a62620aa22a920a62fa6a0a720a3a2a960711b600090815260026020527f65e3f3080e9127c1765503a54b8dbb495249e66169f096dfc87ee63bed17e22c80546001600160a01b0319166001600160a01b03841690811790915560405190917f991888326f0eab3df6084aadb82bee6781b5c9aa75379e8bc50ae8693454163891a250565b61076d610f1f565b6000546001600160a01b039081169116146107bd576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6b50524943455f4f5241434c4560a01b600090815260026020527f740f710666bd7a12af42df98311e541e47f7fd33d382d11602457a6d540cbd6380546001600160a01b0319166001600160a01b03841690811790915560405190917fefe8ab924ca486283a79dc604baa67add51afb82af1db8ac386ebbba643cdffd91a250565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156108ca5780601f1061089f576101008083540402835291602001916108ca565b820191906000526020600020905b8154815290600101906020018083116108ad57829003601f168201915b5050505050905090565b6108dc610f1f565b6000546001600160a01b0390811691161461092c576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6109456b13115391125391d7d413d3d360a21b82610f23565b6040516001600160a01b038216907fc4e6c6cdf28d0edbd8bcf071d724d33cc2e7a30be7d06443925656e9cb492aa490600090a250565b610984610f1f565b6000546001600160a01b039081169116146109d4576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6109de8282610f23565b604080518381526001602082015281516001600160a01b038416927ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff31928290030190a25050565b600061048f7121a7a62620aa22a920a62fa6a0a720a3a2a960711b610494565b610a4d610f1f565b6000546001600160a01b03908116911614610a9d576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b610aef610f1f565b6000546001600160a01b03908116911614610b3f576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b724c454e44494e475f524154455f4f5241434c4560681b600090815260026020527f10f0e20294ece4bd93e7a467dbf22ab9ab1740ebd0a532cc53066601e880c0cf80546001600160a01b0319166001600160a01b03841690811790915560405190917f5c29179aba6942020a8a2d38f65de02fb6b7f784e7f049ed3a3cab97621859b591a250565b600061048f782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b610494565b6000546001600160a01b031690565b600061048f692827a7a62fa0a226a4a760b11b610494565b610c1e610f1f565b6000546001600160a01b03908116911614610c6e576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b610c94782622a72224a723afa827a7a62fa1a7a72324a3aaa920aa27a960391b82610f23565b6040516001600160a01b038216907fdfabe479bad36782fb1e77fbfddd4e382671713527e4786cfc93a022ae76372990600090a250565b610cd3610f1f565b6000546001600160a01b03908116911614610d23576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b600082815260026020908152604080832080546001600160a01b0319166001600160a01b03861690811790915581518681529283019390935280517ff2689d5d5cd0c639e137642cae5d40afced201a1a0327e7ac9358461dc9fff319281900390910190a25050565b600061048f6e22a6a2a923a2a721acafa0a226a4a760891b610494565b610db1610f1f565b6000546001600160a01b03908116911614610e01576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b6001600160a01b038116610e465760405162461bcd60e51b8152600401808060200182810382526026815260200180611a8f6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b610ea9610f1f565b6000546001600160a01b03908116911614610ef9576040805162461bcd60e51b81526020600482018190526024820152600080516020611ab5833981519152604482015290519081900360640190fd5b610f02816111cb565b50565b600061048f6b50524943455f4f5241434c4560a01b610494565b3390565b6000828152600260209081526040918290205482513060248083019190915284518083039091018152604490910190935290820180516001600160e01b031663189acdbd60e31b1790526001600160a01b0316908190816110f25730604051610f8b9061127b565b6001600160a01b03909116815260405190819003602001906000f080158015610fb8573d6000803e3d6000fd5b509150816001600160a01b031663d1f5789485836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561102757818101518382015260200161100f565b50505050905090810190601f1680156110545780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b15801561107457600080fd5b505af1158015611088573d6000803e3d6000fd5b50505060008681526002602090815260409182902080546001600160a01b0319166001600160a01b038716908117909155825189815292519093507f1eb35cb4b5bbb23d152f3b4016a5a46c37a07ae930ed0956aba951e2311424389281900390910190a26111c4565b816001600160a01b0316634f1ef28685836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561115e578181015183820152602001611146565b50505050905090810190601f16801561118b5780820380516001836020036101000a031916815260200191505b509350505050600060405180830381600087803b1580156111ab57600080fd5b505af11580156111bf573d6000803e3d6000fd5b505050505b5050505050565b80516111de906001906020840190611288565b507f5e667c32fd847cf8bce48ab3400175cbf107bdc82b2dea62e3364909dfaee799816040518080602001828103825283818151815260200191508051906020019080838360005b8381101561123e578181015183820152602001611226565b50505050905090810190601f16801561126b5780820380516001836020036101000a031916815260200191505b509250505060405180910390a150565b6107738061131c83390190565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106112c957805160ff19168380011785556112f6565b828001600101855582156112f6579182015b828111156112f65782518255916020019190600101906112db565b50611302929150611306565b5090565b5b80821115611302576000815560010161130756fe60a060405234801561001057600080fd5b506040516107733803806107738339818101604052602081101561003357600080fd5b5051606081901b6001600160601b0319166080526001600160a01b03166106f36100806000398061022852806102725280610331528061045e528061048752806105af52506106f36000f3fe60806040526004361061004a5760003560e01c80633659cfe6146100545780634f1ef286146100875780635c60da1b14610107578063d1f5789414610138578063f851a440146101ee575b610052610203565b005b34801561006057600080fd5b506100526004803603602081101561007757600080fd5b50356001600160a01b031661021d565b6100526004803603604081101561009d57600080fd5b6001600160a01b0382351691908101906040810160208201356401000000008111156100c857600080fd5b8201836020820111156100da57600080fd5b803590602001918460018302840111640100000000831117156100fc57600080fd5b509092509050610267565b34801561011357600080fd5b5061011c610324565b604080516001600160a01b039092168252519081900360200190f35b6100526004803603604081101561014e57600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561017957600080fd5b82018360208201111561018b57600080fd5b803590602001918460018302840111640100000000831117156101ad57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610371945050505050565b3480156101fa57600080fd5b5061011c610451565b61020b6104ab565b61021b6102166104b3565b6104d8565b565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561025c57610257816104fc565b610264565b610264610203565b50565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161415610317576102a1836104fc565b6000836001600160a01b031683836040518083838082843760405192019450600093509091505080830381855af49150503d80600081146102fe576040519150601f19603f3d011682016040523d82523d6000602084013e610303565b606091505b505090508061031157600080fd5b5061031f565b61031f610203565b505050565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614156103665761035f6104b3565b905061036e565b61036e610203565b90565b600061037b6104b3565b6001600160a01b03161461038e57600080fd5b6103978261053c565b80511561044d576000826001600160a01b0316826040518082805190602001908083835b602083106103da5780518252601f1990920191602091820191016103bb565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461043a576040519150601f19603f3d011682016040523d82523d6000602084013e61043f565b606091505b505090508061031f57600080fd5b5050565b6000336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561036657507f000000000000000000000000000000000000000000000000000000000000000061036e565b61021b6105a4565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b3660008037600080366000845af43d6000803e8080156104f7573d6000f35b3d6000fd5b6105058161053c565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b61054581610614565b6105805760405162461bcd60e51b815260040180806020018281038252603b815260200180610683603b913960400191505060405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016141561060c5760405162461bcd60e51b81526004018080602001828103825260328152602001806106516032913960400191505060405180910390fd5b61021b61021b565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081811480159061064857508115155b94935050505056fe43616e6e6f742063616c6c2066616c6c6261636b2066756e6374696f6e2066726f6d207468652070726f78792061646d696e43616e6e6f742073657420612070726f787920696d706c656d656e746174696f6e20746f2061206e6f6e2d636f6e74726163742061646472657373a26469706673582212209a557721dee23ead370b1ee9312b86bb7ea095b87cc5103336273d70fff4853864736f6c634300060c00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220ab26d98b1f4ab8ca8984ab7c6259c8130171356e7e456e99ad505b37ecd0290464736f6c634300060c00330000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001947616c617879446566692067656e65736973206d61726b657400000000000000

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

0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000001947616c617879446566692067656e65736973206d61726b657400000000000000
-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000020
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000019
Arg [2] : 47616c617879446566692067656e65736973206d61726b657400000000000000


Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading