Feature Tip: Add private address tag to any address under My Name Tag !
Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
Latest 6 from a total of 6 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Exchange | 13168837 | 1218 days ago | IN | 0 ETH | 0.03616583 | ||||
Exchange | 13168430 | 1218 days ago | IN | 0 ETH | 0.03869909 | ||||
Exchange | 13112613 | 1226 days ago | IN | 0 ETH | 0.00101677 | ||||
Update_registry_... | 13018421 | 1241 days ago | IN | 0 ETH | 0.00145162 | ||||
Update_registry_... | 12589738 | 1308 days ago | IN | 0 ETH | 0.00102592 | ||||
Exchange | 12333081 | 1347 days ago | IN | 0 ETH | 0.01917756 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
13234888 | 1207 days ago | 15 ETH | ||||
13234888 | 1207 days ago | 15 ETH | ||||
13230719 | 1208 days ago | 14.86779557 ETH | ||||
13230719 | 1208 days ago | 14.86779557 ETH | ||||
13226526 | 1209 days ago | 0.10585768 ETH | ||||
13226526 | 1209 days ago | 0.10585768 ETH | ||||
13226516 | 1209 days ago | 0.12314979 ETH | ||||
13226516 | 1209 days ago | 0.12314979 ETH | ||||
13226516 | 1209 days ago | 54.41949192 ETH | ||||
13226516 | 1209 days ago | 54.41949192 ETH | ||||
13226516 | 1209 days ago | 11.37258541 ETH | ||||
13226516 | 1209 days ago | 11.37258541 ETH | ||||
13222357 | 1209 days ago | 90 ETH | ||||
13222357 | 1209 days ago | 90 ETH | ||||
13222339 | 1209 days ago | 32.07994786 ETH | ||||
13222339 | 1209 days ago | 32.07994786 ETH | ||||
13218969 | 1210 days ago | 309.05278784 ETH | ||||
13218969 | 1210 days ago | 309.05278784 ETH | ||||
13218786 | 1210 days ago | 14.43080987 ETH | ||||
13218786 | 1210 days ago | 14.43080987 ETH | ||||
13211736 | 1211 days ago | 813.57917033 ETH | ||||
13211736 | 1211 days ago | 813.57917033 ETH | ||||
13203928 | 1212 days ago | 0.65617453 ETH | ||||
13203928 | 1212 days ago | 0.65617453 ETH | ||||
13203791 | 1212 days ago | 17.21817166 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.11
Contract Source Code (Vyper language format)
# @version 0.2.11 """ @title Curve Registry Exchange Contract @license MIT @author Curve.Fi @notice Find pools, query exchange rates and perform swaps """ from vyper.interfaces import ERC20 interface AddressProvider: def admin() -> address: view def get_registry() -> address: view def get_address(idx: uint256) -> address: view interface CurvePool: def exchange(i: int128, j: int128, dx: uint256, min_dy: uint256): payable def exchange_underlying(i: int128, j: int128, dx: uint256, min_dy: uint256): payable def get_dy(i: int128, j: int128, amount: uint256) -> uint256: view def get_dy_underlying(i: int128, j: int128, amount: uint256) -> uint256: view interface Registry: def address_provider() -> address: view def get_A(_pool: address) -> uint256: view def get_fees(_pool: address) -> uint256[2]: view def get_coin_indices(_pool: address, _from: address, _to: address) -> (int128, int128, bool): view def get_n_coins(_pool: address) -> uint256[2]: view def get_balances(_pool: address) -> uint256[MAX_COINS]: view def get_underlying_balances(_pool: address) -> uint256[MAX_COINS]: view def get_rates(_pool: address) -> uint256[MAX_COINS]: view def get_decimals(_pool: address) -> uint256[MAX_COINS]: view def get_underlying_decimals(_pool: address) -> uint256[MAX_COINS]: view def find_pool_for_coins(_from: address, _to: address, i: uint256) -> address: view def get_lp_token(_pool: address) -> address: view interface Calculator: def get_dx(n_coins: uint256, balances: uint256[MAX_COINS], amp: uint256, fee: uint256, rates: uint256[MAX_COINS], precisions: uint256[MAX_COINS], i: int128, j: int128, dx: uint256) -> uint256: view def get_dy(n_coins: uint256, balances: uint256[MAX_COINS], amp: uint256, fee: uint256, rates: uint256[MAX_COINS], precisions: uint256[MAX_COINS], i: int128, j: int128, dx: uint256[CALC_INPUT_SIZE]) -> uint256[CALC_INPUT_SIZE]: view event TokenExchange: buyer: indexed(address) receiver: indexed(address) pool: indexed(address) token_sold: address token_bought: address amount_sold: uint256 amount_bought: uint256 ETH_ADDRESS: constant(address) = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE MAX_COINS: constant(int128) = 8 CALC_INPUT_SIZE: constant(uint256) = 100 address_provider: AddressProvider registry: public(address) factory_registry: public(address) default_calculator: public(address) is_killed: public(bool) pool_calculator: HashMap[address, address] is_approved: HashMap[address, HashMap[address, bool]] @external def __init__(_address_provider: address, _calculator: address): """ @notice Constructor function """ self.address_provider = AddressProvider(_address_provider) self.registry = AddressProvider(_address_provider).get_registry() self.factory_registry = AddressProvider(_address_provider).get_address(3) self.default_calculator = _calculator @external @payable def __default__(): pass @view @internal def _get_exchange_amount( _registry: address, _pool: address, _from: address, _to: address, _amount: uint256 ) -> uint256: """ @notice Get the current number of coins received in an exchange @param _registry Registry address @param _pool Pool address @param _from Address of coin to be sent @param _to Address of coin to be received @param _amount Quantity of `_from` to be sent @return Quantity of `_to` to be received """ i: int128 = 0 j: int128 = 0 is_underlying: bool = False i, j, is_underlying = Registry(_registry).get_coin_indices(_pool, _from, _to) # dev: no market if is_underlying: return CurvePool(_pool).get_dy_underlying(i, j, _amount) return CurvePool(_pool).get_dy(i, j, _amount) @internal def _exchange( _registry: address, _pool: address, _from: address, _to: address, _amount: uint256, _expected: uint256, _sender: address, _receiver: address, ) -> uint256: assert not self.is_killed initial_balance: uint256 = 0 eth_amount: uint256 = 0 received_amount: uint256 = 0 i: int128 = 0 j: int128 = 0 is_underlying: bool = False i, j, is_underlying = Registry(_registry).get_coin_indices(_pool, _from, _to) # dev: no market # record initial balance if _to == ETH_ADDRESS: initial_balance = self.balance else: initial_balance = ERC20(_to).balanceOf(self) # perform / verify input transfer if _from == ETH_ADDRESS: eth_amount = _amount else: response: Bytes[32] = raw_call( _from, concat( method_id("transferFrom(address,address,uint256)"), convert(_sender, bytes32), convert(self, bytes32), convert(_amount, bytes32), ), max_outsize=32, ) if len(response) != 0: assert convert(response, bool) # approve input token if not self.is_approved[_from][_pool]: response: Bytes[32] = raw_call( _from, concat( method_id("approve(address,uint256)"), convert(_pool, bytes32), convert(MAX_UINT256, bytes32), ), max_outsize=32, ) if len(response) != 0: assert convert(response, bool) self.is_approved[_from][_pool] = True # perform coin exchange if is_underlying: CurvePool(_pool).exchange_underlying(i, j, _amount, _expected, value=eth_amount) else: CurvePool(_pool).exchange(i, j, _amount, _expected, value=eth_amount) # perform output transfer if _to == ETH_ADDRESS: received_amount = self.balance - initial_balance raw_call(_receiver, b"", value=received_amount) else: received_amount = ERC20(_to).balanceOf(self) - initial_balance response: Bytes[32] = raw_call( _to, concat( method_id("transfer(address,uint256)"), convert(_receiver, bytes32), convert(received_amount, bytes32), ), max_outsize=32, ) if len(response) != 0: assert convert(response, bool) log TokenExchange(_sender, _receiver, _pool, _from, _to, _amount, received_amount) return received_amount @payable @external @nonreentrant("lock") def exchange_with_best_rate( _from: address, _to: address, _amount: uint256, _expected: uint256, _receiver: address = msg.sender, ) -> uint256: """ @notice Perform an exchange using the pool that offers the best rate @dev Prior to calling this function, the caller must approve this contract to transfer `_amount` coins from `_from` Does NOT check rates in factory-deployed pools @param _from Address of coin being sent @param _to Address of coin being received @param _amount Quantity of `_from` being sent @param _expected Minimum quantity of `_from` received in order for the transaction to succeed @param _receiver Address to transfer the received tokens to @return uint256 Amount received """ if _from == ETH_ADDRESS: assert _amount == msg.value, "Incorrect ETH amount" else: assert msg.value == 0, "Incorrect ETH amount" registry: address = self.registry best_pool: address = ZERO_ADDRESS max_dy: uint256 = 0 for i in range(65536): pool: address = Registry(registry).find_pool_for_coins(_from, _to, i) if pool == ZERO_ADDRESS: break dy: uint256 = self._get_exchange_amount(registry, pool, _from, _to, _amount) if dy > max_dy: best_pool = pool max_dy = dy return self._exchange(registry, best_pool, _from, _to, _amount, _expected, msg.sender, _receiver) @payable @external @nonreentrant("lock") def exchange( _pool: address, _from: address, _to: address, _amount: uint256, _expected: uint256, _receiver: address = msg.sender, ) -> uint256: """ @notice Perform an exchange using a specific pool @dev Prior to calling this function, the caller must approve this contract to transfer `_amount` coins from `_from` Works for both regular and factory-deployed pools @param _pool Address of the pool to use for the swap @param _from Address of coin being sent @param _to Address of coin being received @param _amount Quantity of `_from` being sent @param _expected Minimum quantity of `_from` received in order for the transaction to succeed @param _receiver Address to transfer the received tokens to @return uint256 Amount received """ if _from == ETH_ADDRESS: assert _amount == msg.value, "Incorrect ETH amount" else: assert msg.value == 0, "Incorrect ETH amount" registry: address = self.registry if Registry(registry).get_lp_token(_pool) == ZERO_ADDRESS: registry = self.factory_registry return self._exchange(registry, _pool, _from, _to, _amount, _expected, msg.sender, _receiver) @view @external def get_best_rate(_from: address, _to: address, _amount: uint256) -> (address, uint256): """ @notice Find the pool offering the best rate for a given swap. @dev Checks rates for regular and factory pools @param _from Address of coin being sent @param _to Address of coin being received @param _amount Quantity of `_from` being sent @return Pool address, amount received """ best_pool: address = ZERO_ADDRESS max_dy: uint256 = 0 for registry in [self.registry, self.factory_registry]: for i in range(65536): pool: address = Registry(registry).find_pool_for_coins(_from, _to, i) if pool == ZERO_ADDRESS: break dy: uint256 = self._get_exchange_amount(registry, pool, _from, _to, _amount) if dy > max_dy: best_pool = pool max_dy = dy return best_pool, max_dy @view @external def get_exchange_amount(_pool: address, _from: address, _to: address, _amount: uint256) -> uint256: """ @notice Get the current number of coins received in an exchange @dev Works for both regular and factory-deployed pools @param _pool Pool address @param _from Address of coin to be sent @param _to Address of coin to be received @param _amount Quantity of `_from` to be sent @return Quantity of `_to` to be received """ registry: address = self.registry if Registry(registry).get_lp_token(_pool) == ZERO_ADDRESS: registry = self.factory_registry return self._get_exchange_amount(registry, _pool, _from, _to, _amount) @view @external def get_input_amount(_pool: address, _from: address, _to: address, _amount: uint256) -> uint256: """ @notice Get the current number of coins required to receive the given amount in an exchange @param _pool Pool address @param _from Address of coin to be sent @param _to Address of coin to be received @param _amount Quantity of `_to` to be received @return Quantity of `_from` to be sent """ registry: address = self.registry i: int128 = 0 j: int128 = 0 is_underlying: bool = False i, j, is_underlying = Registry(registry).get_coin_indices(_pool, _from, _to) amp: uint256 = Registry(registry).get_A(_pool) fee: uint256 = Registry(registry).get_fees(_pool)[0] balances: uint256[MAX_COINS] = empty(uint256[MAX_COINS]) rates: uint256[MAX_COINS] = empty(uint256[MAX_COINS]) decimals: uint256[MAX_COINS] = empty(uint256[MAX_COINS]) n_coins: uint256 = Registry(registry).get_n_coins(_pool)[convert(is_underlying, uint256)] if is_underlying: balances = Registry(registry).get_underlying_balances(_pool) decimals = Registry(registry).get_underlying_decimals(_pool) for x in range(MAX_COINS): if x == n_coins: break rates[x] = 10**18 else: balances = Registry(registry).get_balances(_pool) decimals = Registry(registry).get_decimals(_pool) rates = Registry(registry).get_rates(_pool) for x in range(MAX_COINS): if x == n_coins: break decimals[x] = 10 ** (18 - decimals[x]) calculator: address = self.pool_calculator[_pool] if calculator == ZERO_ADDRESS: calculator = self.default_calculator return Calculator(calculator).get_dx(n_coins, balances, amp, fee, rates, decimals, i, j, _amount) @view @external def get_exchange_amounts( _pool: address, _from: address, _to: address, _amounts: uint256[CALC_INPUT_SIZE] ) -> uint256[CALC_INPUT_SIZE]: """ @notice Get the current number of coins required to receive the given amount in an exchange @param _pool Pool address @param _from Address of coin to be sent @param _to Address of coin to be received @param _amounts Quantity of `_to` to be received @return Quantity of `_from` to be sent """ registry: address = self.registry i: int128 = 0 j: int128 = 0 is_underlying: bool = False balances: uint256[MAX_COINS] = empty(uint256[MAX_COINS]) rates: uint256[MAX_COINS] = empty(uint256[MAX_COINS]) decimals: uint256[MAX_COINS] = empty(uint256[MAX_COINS]) amp: uint256 = Registry(registry).get_A(_pool) fee: uint256 = Registry(registry).get_fees(_pool)[0] i, j, is_underlying = Registry(registry).get_coin_indices(_pool, _from, _to) n_coins: uint256 = Registry(registry).get_n_coins(_pool)[convert(is_underlying, uint256)] if is_underlying: balances = Registry(registry).get_underlying_balances(_pool) decimals = Registry(registry).get_underlying_decimals(_pool) for x in range(MAX_COINS): if x == n_coins: break rates[x] = 10**18 else: balances = Registry(registry).get_balances(_pool) decimals = Registry(registry).get_decimals(_pool) rates = Registry(registry).get_rates(_pool) for x in range(MAX_COINS): if x == n_coins: break decimals[x] = 10 ** (18 - decimals[x]) calculator: address = self.pool_calculator[_pool] if calculator == ZERO_ADDRESS: calculator = self.default_calculator return Calculator(calculator).get_dy(n_coins, balances, amp, fee, rates, decimals, i, j, _amounts) @view @external def get_calculator(_pool: address) -> address: """ @notice Set calculator contract @dev Used to calculate `get_dy` for a pool @param _pool Pool address @return `CurveCalc` address """ calculator: address = self.pool_calculator[_pool] if calculator == ZERO_ADDRESS: return self.default_calculator else: return calculator @external def update_registry_address() -> bool: """ @notice Update registry address @dev The registry address is kept in storage to reduce gas costs. If a new registry is deployed this function should be called to update the local address from the address provider. @return bool success """ address_provider: address = self.address_provider.address self.registry = AddressProvider(address_provider).get_registry() self.factory_registry = AddressProvider(address_provider).get_address(3) return True @external def set_calculator(_pool: address, _calculator: address) -> bool: """ @notice Set calculator contract @dev Used to calculate `get_dy` for a pool @param _pool Pool address @param _calculator `CurveCalc` address @return bool success """ assert msg.sender == self.address_provider.admin() # dev: admin-only function self.pool_calculator[_pool] = _calculator return True @external def set_default_calculator(_calculator: address) -> bool: """ @notice Set default calculator contract @dev Used to calculate `get_dy` for a pool @param _calculator `CurveCalc` address @return bool success """ assert msg.sender == self.address_provider.admin() # dev: admin-only function self.default_calculator = _calculator return True @external def claim_balance(_token: address) -> bool: """ @notice Transfer an ERC20 or ETH balance held by this contract @dev The entire balance is transferred to the owner @param _token Token address @return bool success """ assert msg.sender == self.address_provider.admin() # dev: admin-only function if _token == ETH_ADDRESS: raw_call(msg.sender, b"", value=self.balance) else: amount: uint256 = ERC20(_token).balanceOf(self) response: Bytes[32] = raw_call( _token, concat( method_id("transfer(address,uint256)"), convert(msg.sender, bytes32), convert(amount, bytes32), ), max_outsize=32, ) if len(response) != 0: assert convert(response, bool) return True @external def set_killed(_is_killed: bool) -> bool: """ @notice Kill or unkill the contract @param _is_killed Killed status of the contract @return bool success """ assert msg.sender == self.address_provider.admin() # dev: admin-only function self.is_killed = _is_killed return True
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"TokenExchange","inputs":[{"name":"buyer","type":"address","indexed":true},{"name":"receiver","type":"address","indexed":true},{"name":"pool","type":"address","indexed":true},{"name":"token_sold","type":"address","indexed":false},{"name":"token_bought","type":"address","indexed":false},{"name":"amount_sold","type":"uint256","indexed":false},{"name":"amount_bought","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"_address_provider","type":"address"},{"name":"_calculator","type":"address"}],"outputs":[]},{"stateMutability":"payable","type":"fallback"},{"stateMutability":"payable","type":"function","name":"exchange_with_best_rate","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange_with_best_rate","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"exchange","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"},{"name":"_expected","type":"uint256"},{"name":"_receiver","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_best_rate","inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"gas":395840312},{"stateMutability":"view","type":"function","name":"get_exchange_amount","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":5104},{"stateMutability":"view","type":"function","name":"get_input_amount","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}],"gas":15358},{"stateMutability":"view","type":"function","name":"get_exchange_amounts","inputs":[{"name":"_pool","type":"address"},{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_amounts","type":"uint256[100]"}],"outputs":[{"name":"","type":"uint256[100]"}],"gas":17925},{"stateMutability":"view","type":"function","name":"get_calculator","inputs":[{"name":"_pool","type":"address"}],"outputs":[{"name":"","type":"address"}],"gas":2429},{"stateMutability":"nonpayable","type":"function","name":"update_registry_address","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":72066},{"stateMutability":"nonpayable","type":"function","name":"set_calculator","inputs":[{"name":"_pool","type":"address"},{"name":"_calculator","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":37159},{"stateMutability":"nonpayable","type":"function","name":"set_default_calculator","inputs":[{"name":"_calculator","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":36974},{"stateMutability":"nonpayable","type":"function","name":"claim_balance","inputs":[{"name":"_token","type":"address"}],"outputs":[{"name":"","type":"bool"}],"gas":37798},{"stateMutability":"nonpayable","type":"function","name":"set_killed","inputs":[{"name":"_is_killed","type":"bool"}],"outputs":[{"name":"","type":"bool"}],"gas":37034},{"stateMutability":"view","type":"function","name":"registry","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":1538},{"stateMutability":"view","type":"function","name":"factory_registry","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":1568},{"stateMutability":"view","type":"function","name":"default_calculator","inputs":[],"outputs":[{"name":"","type":"address"}],"gas":1598},{"stateMutability":"view","type":"function","name":"is_killed","inputs":[],"outputs":[{"name":"","type":"bool"}],"gas":1628}]
Contract Creation Code
60406128b86101403960206128b860c03960c05160a01c1561002057600080fd5b602060206128b80160c03960c05160a01c1561003b57600080fd5b6101405160005560206101e0600463a262904b6101805261019c610140515afa61006457600080fd5b601f3d1161007157600080fd5b6000506101e0516001556020610200602463493f4f746101805260036101a05261019c610140515afa6100a357600080fd5b601f3d116100b057600080fd5b60005061020051600255610160516003556128a056600436101561000d57611ed3565b600035601c526000516310e5e30381141561002c57336101405261005d565b639f69a6a68114156100585760843560a01c1561004857600080fd5b602060846101403760005061005d565b610319565b6007541561006a57600080fd5b600160075560043560a01c1561007f57600080fd5b60243560a01c1561008f57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600435141561010257346044351415156100fd576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b61014f565b3415151561014f576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b60015461016052604036610180376101c0600062010000818352015b60206102c06064636982eb0b6102005260043561022052602435610240526101c0516102605261021c610160515afa6101a357600080fd5b601f3d116101b057600080fd5b6000506102c0516101e0526101e05115156101ca5761027f565b6101405161016051610180516101a0516101c0516101e0516102005161016051610220526101e0516102405260043561026052602435610280526044356102a0526102a0516102805161026051610240516102205160065801611ed5565b61030052610200526101e0526101c0526101a05261018052610160526101405261030051610200526101a05161020051111561026f576101e05161018052610200516101a0525b815160010180835281141561016b575b50506101405161016051610180516101a051610160516101c052610180516101e052600435610200526024356102205260443561024052606435610260523361028052610140516102a0526102a05161028051610260516102405161022051610200516101e0516101c05160065801612047565b610300526101a05261018052610160526101405261030051600052600060075560206000f35b634798ce5b81141561032f573361014052610360565b631a4c1ca381141561035b5760a43560a01c1561034b57600080fd5b602060a461014037600050610360565b61053b565b6007541561036d57600080fd5b600160075560043560a01c1561038257600080fd5b60243560a01c1561039257600080fd5b60443560a01c156103a257600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60243514156104155734606435141515610410576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b610462565b34151515610462576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b60015461016052602061020060246337951049610180526004356101a05261019c610160515afa61049257600080fd5b601f3d1161049f57600080fd5b6000506102005115156104b457600254610160525b610140516101605161016051610180526004356101a0526024356101c0526044356101e052606435610200526084356102205233610240526101405161026052610260516102405161022051610200516101e0516101c0516101a0516101805160065801612047565b6102c05261016052610140526102c051600052600060075560206000f35b634e21df7581141561071957341561055257600080fd5b60043560a01c1561056257600080fd5b60243560a01c1561057257600080fd5b604036610140376001546101c0526002546101e0526101a060006002818352015b60206101a051026101c0015161018052610200600062010000818352015b60206103006064636982eb0b610240526004356102605260243561028052610200516102a05261025c610180515afa6105e957600080fd5b601f3d116105f657600080fd5b6000506103005161022052610220511515610610576106d5565b6101405161016051610180516101a0516101c0516101e051610200516102205161024051610180516102605261022051610280526004356102a0526024356102c0526044356102e0526102e0516102c0516102a051610280516102605160065801611ed5565b610340526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103405161024052610160516102405111156106c557610220516101405261024051610160525b81516001018083528114156105b1575b50505b8151600101808352811415610593575b505061018080808061014051815250506020810190508080610160518152505060409050905060c05260c051610180f35b633973e83481141561080c57341561073057600080fd5b60043560a01c1561074057600080fd5b60243560a01c1561075057600080fd5b60443560a01c1561076057600080fd5b6001546101405260206101e060246337951049610160526004356101805261017c610140515afa61079057600080fd5b601f3d1161079d57600080fd5b6000506101e05115156107b257600254610140525b610140516101405161016052600435610180526024356101a0526044356101c0526064356101e0526101e0516101c0516101a051610180516101605160065801611ed5565b61024052610140526102405160005260206000f35b637fa5a654811415610ed457341561082357600080fd5b60043560a01c1561083357600080fd5b60243560a01c1561084357600080fd5b60443560a01c1561085357600080fd5b60015461014052606036610160376060610280606463eb85226d6101c0526004356101e05260243561020052604435610220526101dc610140515afa61089857600080fd5b605f3d116108a557600080fd5b61028080808080516102e0525050602081019050808080516103005250506020810190508080805161032052505050506000506102e080516101605280602001516101805280604001516101a05250602061026060246355b30b196101e052600435610200526101fc610140515afa61091d57600080fd5b601f3d1161092a57600080fd5b600050610260516101c05260406102806024637cdb72b0610200526004356102205261021c610140515afa61095e57600080fd5b603f3d1161096b57600080fd5b600050610280516101e052610300366102003760406105a0602463940494f1610520526004356105405261053c610140515afa6109a757600080fd5b603f3d116109b457600080fd5b6000506105a06101a051600281106109cb57600080fd5b6020020151610500526101a05115610b3c576101006105a060246359f4f351610520526004356105405261053c610140515afa610a0757600080fd5b60ff3d11610a1457600080fd5b6000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a06024634cb088f1610520526004356105405261053c610140515afa610a8a57600080fd5b60ff3d11610a9757600080fd5b6000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e0525061052060006008818352015b61050051610520511415610b0257610b35565b670de0b6b3a76400006103006105205160088110610b1f57600080fd5b60200201525b8151600101808352811415610aef575b5050610cc6565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa610b6657600080fd5b60ff3d11610b7357600080fd5b6000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a060246352b51555610520526004356105405261053c610140515afa610be957600080fd5b60ff3d11610bf657600080fd5b6000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa610c6c57600080fd5b60ff3d11610c7957600080fd5b6000506105a08051610300528060200151610320528060400151610340528060600151610360528060800151610380528060a001516103a0528060c001516103c0528060e001516103e052505b61052060006008818352015b61050051610520511415610ce557610d7c565b604e60126104006105205160088110610cfd57600080fd5b602002015180821015610d0f57600080fd5b8082039050905010610d2057600080fd5b60126104006105205160088110610d3657600080fd5b602002015180821015610d4857600080fd5b80820390509050600a0a6104006105205160088110610d6657600080fd5b60200201525b8151600101808352811415610cd2575b5050600560043560e05260c052604060c0205461052052610520511515610da557600354610520525b60206109606103c463ca3878906105405261050051610560526102005161058052610220516105a052610240516105c052610260516105e05261028051610600526102a051610620526102c051610640526102e051610660526101c051610680526101e0516106a052610300516106c052610320516106e0526103405161070052610360516107205261038051610740526103a051610760526103c051610780526103e0516107a052610400516107c052610420516107e0526104405161080052610460516108205261048051610840526104a051610860526104c051610880526104e0516108a052610160516108c052610180516108e0526064356109005261055c610520515afa610eb757600080fd5b601f3d11610ec457600080fd5b6000506109605160005260206000f35b634be9ae4281141561196b573415610eeb57600080fd5b60043560a01c15610efb57600080fd5b60243560a01c15610f0b57600080fd5b60443560a01c15610f1b57600080fd5b600154610140526103603661016037602061056060246355b30b196104e052600435610500526104fc610140515afa610f5357600080fd5b601f3d11610f6057600080fd5b600050610560516104c05260406105806024637cdb72b0610500526004356105205261051c610140515afa610f9457600080fd5b603f3d11610fa157600080fd5b600050610580516104e05260606105c0606463eb85226d6105005260043561052052602435610540526044356105605261051c610140515afa610fe357600080fd5b605f3d11610ff057600080fd5b6105c080808080516106205250506020810190508080805161064052505060208101905080808051610660525050505060005061062080516101605280602001516101805280604001516101a0525060406105a0602463940494f1610520526004356105405261053c610140515afa61106857600080fd5b603f3d1161107557600080fd5b6000506105a06101a0516002811061108c57600080fd5b6020020151610500526101a051156111fd576101006105a060246359f4f351610520526004356105405261053c610140515afa6110c857600080fd5b60ff3d116110d557600080fd5b6000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a06024634cb088f1610520526004356105405261053c610140515afa61114b57600080fd5b60ff3d1161115857600080fd5b6000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a0525061052060006008818352015b610500516105205114156111c3576111f6565b670de0b6b3a76400006102c061052051600881106111e057600080fd5b60200201525b81516001018083528114156111b0575b5050611387565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa61122757600080fd5b60ff3d1161123457600080fd5b6000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a060246352b51555610520526004356105405261053c610140515afa6112aa57600080fd5b60ff3d116112b757600080fd5b6000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa61132d57600080fd5b60ff3d1161133a57600080fd5b6000506105a080516102c05280602001516102e0528060400151610300528060600151610320528060800151610340528060a00151610360528060c00151610380528060e001516103a052505b61052060006008818352015b610500516105205114156113a65761143d565b604e60126103c061052051600881106113be57600080fd5b6020020151808210156113d057600080fd5b80820390509050106113e157600080fd5b60126103c061052051600881106113f757600080fd5b60200201518082101561140957600080fd5b80820390509050600a0a6103c0610520516008811061142757600080fd5b60200201525b8151600101808352811415611393575b5050600560043560e05260c052604060c020546105205261052051151561146657600354610520525b610c80610c806115c061102463138f41f16105405261050051610560526101c051610580526101e0516105a052610200516105c052610220516105e0526102405161060052610260516106205261028051610640526102a051610660526104c051610680526104e0516106a0526102c0516106c0526102e0516106e052610300516107005261032051610720526103405161074052610360516107605261038051610780526103a0516107a0526103c0516107c0526103e0516107e052610400516108005261042051610820526104405161084052610460516108605261048051610880526104a0516108a052610160516108c052610180516108e05260648035610900528060200135610920528060400135610940528060600135610960528060800135610980528060a001356109a0528060c001356109c0528060e001356109e052806101000135610a0052806101200135610a2052806101400135610a4052806101600135610a6052806101800135610a8052806101a00135610aa052806101c00135610ac052806101e00135610ae052806102000135610b0052806102200135610b2052806102400135610b4052806102600135610b6052806102800135610b8052806102a00135610ba052806102c00135610bc052806102e00135610be052806103000135610c0052806103200135610c2052806103400135610c4052806103600135610c6052806103800135610c8052806103a00135610ca052806103c00135610cc052806103e00135610ce052806104000135610d0052806104200135610d2052806104400135610d4052806104600135610d6052806104800135610d8052806104a00135610da052806104c00135610dc052806104e00135610de052806105000135610e0052806105200135610e2052806105400135610e4052806105600135610e6052806105800135610e8052806105a00135610ea052806105c00135610ec052806105e00135610ee052806106000135610f0052806106200135610f2052806106400135610f4052806106600135610f6052806106800135610f8052806106a00135610fa052806106c00135610fc052806106e00135610fe0528061070001356110005280610720013561102052806107400135611040528061076001356110605280610780013561108052806107a001356110a052806107c001356110c052806107e001356110e0528061080001356111005280610820013561112052806108400135611140528061086001356111605280610880013561118052806108a001356111a052806108c001356111c052806108e001356111e0528061090001356112005280610920013561122052806109400135611240528061096001356112605280610980013561128052806109a001356112a052806109c001356112c052806109e001356112e05280610a0001356113005280610a2001356113205280610a4001356113405280610a6001356113605280610a8001356113805280610aa001356113a05280610ac001356113c05280610ae001356113e05280610b0001356114005280610b2001356114205280610b4001356114405280610b6001356114605280610b8001356114805280610ba001356114a05280610bc001356114c05280610be001356114e05280610c0001356115005280610c2001356115205280610c4001356115405280610c600135611560525061055c610520515afa61195557600080fd5b610c7f3d1161196357600080fd5b6000506115c0f35b635d7dc8258114156119d057341561198257600080fd5b60043560a01c1561199257600080fd5b600560043560e05260c052604060c02054610140526101405115156119c15760035460005260206000f36119ce565b6101405160005260206000f35b005b634bbc5b1f811415611a715734156119e757600080fd5b6000546101405260206101c0600463a262904b6101605261017c610140515afa611a1057600080fd5b601f3d11611a1d57600080fd5b6000506101c05160015560206101e0602463493f4f746101605260036101805261017c610140515afa611a4f57600080fd5b601f3d11611a5c57600080fd5b6000506101e051600255600160005260206000f35b63188c7ee5811415611b07573415611a8857600080fd5b60043560a01c15611a9857600080fd5b60243560a01c15611aa857600080fd5b60206101a0600463f851a4406101405261015c6000545afa611ac957600080fd5b601f3d11611ad657600080fd5b6000506101a0513314611ae857600080fd5b602435600560043560e05260c052604060c02055600160005260206000f35b63da3fb2ab811415611b7f573415611b1e57600080fd5b60043560a01c15611b2e57600080fd5b60206101a0600463f851a4406101405261015c6000545afa611b4f57600080fd5b601f3d11611b5c57600080fd5b6000506101a0513314611b6e57600080fd5b600435600355600160005260206000f35b63752d53c6811415611dcd573415611b9657600080fd5b60043560a01c15611ba657600080fd5b60206101a0600463f851a4406101405261015c6000545afa611bc757600080fd5b601f3d11611bd457600080fd5b6000506101a0513314611be657600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6004351415611c46576000610140526101408051602001806101808284600060045af1611c2757600080fd5b505060006000610180516101a047335af1611c4157600080fd5b611dc2565b60206101e060246370a0823161016052306101805261017c6004355afa611c6c57600080fd5b601f3d11611c7957600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af15050805182019150503360208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af1611d1a57600080fd5b505060206103806102c0516102e060006004355af1611d3857600080fd5b60203d80821115611d495780611d4b565b815b90509050610360526103608051602001806101608284600060045af1611d7057600080fd5b50506000610160511815611dc257610160806020015160008251806020901315611d9957600080fd5b8091901215611da757600080fd5b806020036101000a82049050905090501515611dc257600080fd5b600160005260206000f35b6390b22997811415611e45573415611de457600080fd5b60043560011c15611df457600080fd5b60206101a0600463f851a4406101405261015c6000545afa611e1557600080fd5b601f3d11611e2257600080fd5b6000506101a0513314611e3457600080fd5b600435600455600160005260206000f35b637b103999811415611e68573415611e5c57600080fd5b60015460005260206000f35b63f7cbf4c6811415611e8b573415611e7f57600080fd5b60025460005260206000f35b633b359fc8811415611eae573415611ea257600080fd5b60035460005260206000f35b639c868ac0811415611ed1573415611ec557600080fd5b60045460005260206000f35b505b005b6101e0526101405261016052610180526101a0526101c052606036610200376060610320606463eb85226d610260526101605161028052610180516102a0526101a0516102c05261027c610140515afa611f2e57600080fd5b605f3d11611f3b57600080fd5b6103208080808051610380525050602081019050808080516103a0525050602081019050808080516103c05250505050600050610380805161020052806020015161022052806040015161024052506102405115611fed57602061032060646307211ef7610260526102005161028052610220516102a0526101c0516102c05261027c610160515afa611fcd57600080fd5b601f3d11611fda57600080fd5b600050610320516000526000516101e051565b60206103206064635e0d443f610260526102005161028052610220516102a0526101c0516102c05261027c610160515afa61202757600080fd5b601f3d1161203457600080fd5b600050610320516000526000516101e051565b610240526101405261016052610180526101a0526101c0526101e05261020052610220526004541561207857600080fd5b60c0366102603760606103e0606463eb85226d61032052610160516103405261018051610360526101a0516103805261033c610140515afa6120b957600080fd5b605f3d116120c657600080fd5b6103e080808080516104405250506020810190508080805161046052505060208101905080808051610480525050505060005061044080516102c05280602001516102e0528060400151610300525073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a051141561213e57476102605261217e565b60206103a060246370a0823161032052306103405261033c6101a0515afa61216557600080fd5b601f3d1161217257600080fd5b6000506103a051610260525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101805114156121aa576101c051610280526122fc565b60006004610380527f23b872dd000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610200516020826103e0010152602081019050306020826103e00101526020810190506101c0516020826103e0010152602081019050806103e0526103e090508051602001806104a08284600060045af161225357600080fd5b505060206105806104a0516104c06000610180515af161227257600080fd5b60203d808211156122835780612285565b815b90509050610560526105608051602001806103208284600060045af16122aa57600080fd5b505060006103205118156122fc576103208060200151600082518060209013156122d357600080fd5b80919012156122e157600080fd5b806020036101000a820490509050905015156122fc57600080fd5b60066101805160e05260c052604060c0206101605160e05260c052604060c0205415156124a65760006004610380527f095ea7b3000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610160516020826103e00101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af16123d957600080fd5b50506020610540610480516104a06000610180515af16123f857600080fd5b60203d80821115612409578061240b565b815b90509050610520526105208051602001806103208284600060045af161243057600080fd5b505060006103205118156124825761032080602001516000825180602090131561245957600080fd5b809190121561246757600080fd5b806020036101000a8204905090509050151561248257600080fd5b600160066101805160e05260c052604060c0206101605160e05260c052604060c020555b610300511561250757610160513b6124bd57600080fd5b60006000608463a6417ed6610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af161250257600080fd5b61255a565b610160513b61251557600080fd5b600060006084633df02124610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af161255a57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a05114156125de5747610260518082101561258b57600080fd5b808203905090506102a0526000610320526103208051602001806103608284600060045af16125b957600080fd5b505060006000610360516103806102a051610220515af16125d957600080fd5b612777565b60206103a060246370a0823161032052306103405261033c6101a0515afa61260557600080fd5b601f3d1161261257600080fd5b6000506103a051610260518082101561262a57600080fd5b808203905090506102a05260006004610380527fa9059cbb000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610220516020826103e00101526020810190506102a0516020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af16126ce57600080fd5b50506020610540610480516104a060006101a0515af16126ed57600080fd5b60203d808211156126fe5780612700565b815b90509050610520526105208051602001806103208284600060045af161272557600080fd5b505060006103205118156127775761032080602001516000825180602090131561274e57600080fd5b809190121561275c57600080fd5b806020036101000a8204905090509050151561277757600080fd5b61018051610320526101a051610340526101c051610360526102a051610380526101605161022051610200517fbd3eb7bcfdd1721a4eb4f00d0df3ed91bd6f17222f82b2d7bce519d8cab3fe466080610320a46102a05160005260005161024051565b6100c66128a0036100c66000396100c66128a0036000f30000000000000000000000000000000022d53366457f9d5e68ec105046fc43830000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x600436101561000d57611ed3565b600035601c526000516310e5e30381141561002c57336101405261005d565b639f69a6a68114156100585760843560a01c1561004857600080fd5b602060846101403760005061005d565b610319565b6007541561006a57600080fd5b600160075560043560a01c1561007f57600080fd5b60243560a01c1561008f57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600435141561010257346044351415156100fd576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b61014f565b3415151561014f576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b60015461016052604036610180376101c0600062010000818352015b60206102c06064636982eb0b6102005260043561022052602435610240526101c0516102605261021c610160515afa6101a357600080fd5b601f3d116101b057600080fd5b6000506102c0516101e0526101e05115156101ca5761027f565b6101405161016051610180516101a0516101c0516101e0516102005161016051610220526101e0516102405260043561026052602435610280526044356102a0526102a0516102805161026051610240516102205160065801611ed5565b61030052610200526101e0526101c0526101a05261018052610160526101405261030051610200526101a05161020051111561026f576101e05161018052610200516101a0525b815160010180835281141561016b575b50506101405161016051610180516101a051610160516101c052610180516101e052600435610200526024356102205260443561024052606435610260523361028052610140516102a0526102a05161028051610260516102405161022051610200516101e0516101c05160065801612047565b610300526101a05261018052610160526101405261030051600052600060075560206000f35b634798ce5b81141561032f573361014052610360565b631a4c1ca381141561035b5760a43560a01c1561034b57600080fd5b602060a461014037600050610360565b61053b565b6007541561036d57600080fd5b600160075560043560a01c1561038257600080fd5b60243560a01c1561039257600080fd5b60443560a01c156103a257600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee60243514156104155734606435141515610410576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b610462565b34151515610462576308c379a06101605260206101805260146101a0527f496e636f72726563742045544820616d6f756e740000000000000000000000006101c0526101a050606461017cfd5b60015461016052602061020060246337951049610180526004356101a05261019c610160515afa61049257600080fd5b601f3d1161049f57600080fd5b6000506102005115156104b457600254610160525b610140516101605161016051610180526004356101a0526024356101c0526044356101e052606435610200526084356102205233610240526101405161026052610260516102405161022051610200516101e0516101c0516101a0516101805160065801612047565b6102c05261016052610140526102c051600052600060075560206000f35b634e21df7581141561071957341561055257600080fd5b60043560a01c1561056257600080fd5b60243560a01c1561057257600080fd5b604036610140376001546101c0526002546101e0526101a060006002818352015b60206101a051026101c0015161018052610200600062010000818352015b60206103006064636982eb0b610240526004356102605260243561028052610200516102a05261025c610180515afa6105e957600080fd5b601f3d116105f657600080fd5b6000506103005161022052610220511515610610576106d5565b6101405161016051610180516101a0516101c0516101e051610200516102205161024051610180516102605261022051610280526004356102a0526024356102c0526044356102e0526102e0516102c0516102a051610280516102605160065801611ed5565b610340526102405261022052610200526101e0526101c0526101a0526101805261016052610140526103405161024052610160516102405111156106c557610220516101405261024051610160525b81516001018083528114156105b1575b50505b8151600101808352811415610593575b505061018080808061014051815250506020810190508080610160518152505060409050905060c05260c051610180f35b633973e83481141561080c57341561073057600080fd5b60043560a01c1561074057600080fd5b60243560a01c1561075057600080fd5b60443560a01c1561076057600080fd5b6001546101405260206101e060246337951049610160526004356101805261017c610140515afa61079057600080fd5b601f3d1161079d57600080fd5b6000506101e05115156107b257600254610140525b610140516101405161016052600435610180526024356101a0526044356101c0526064356101e0526101e0516101c0516101a051610180516101605160065801611ed5565b61024052610140526102405160005260206000f35b637fa5a654811415610ed457341561082357600080fd5b60043560a01c1561083357600080fd5b60243560a01c1561084357600080fd5b60443560a01c1561085357600080fd5b60015461014052606036610160376060610280606463eb85226d6101c0526004356101e05260243561020052604435610220526101dc610140515afa61089857600080fd5b605f3d116108a557600080fd5b61028080808080516102e0525050602081019050808080516103005250506020810190508080805161032052505050506000506102e080516101605280602001516101805280604001516101a05250602061026060246355b30b196101e052600435610200526101fc610140515afa61091d57600080fd5b601f3d1161092a57600080fd5b600050610260516101c05260406102806024637cdb72b0610200526004356102205261021c610140515afa61095e57600080fd5b603f3d1161096b57600080fd5b600050610280516101e052610300366102003760406105a0602463940494f1610520526004356105405261053c610140515afa6109a757600080fd5b603f3d116109b457600080fd5b6000506105a06101a051600281106109cb57600080fd5b6020020151610500526101a05115610b3c576101006105a060246359f4f351610520526004356105405261053c610140515afa610a0757600080fd5b60ff3d11610a1457600080fd5b6000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a06024634cb088f1610520526004356105405261053c610140515afa610a8a57600080fd5b60ff3d11610a9757600080fd5b6000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e0525061052060006008818352015b61050051610520511415610b0257610b35565b670de0b6b3a76400006103006105205160088110610b1f57600080fd5b60200201525b8151600101808352811415610aef575b5050610cc6565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa610b6657600080fd5b60ff3d11610b7357600080fd5b6000506105a08051610200528060200151610220528060400151610240528060600151610260528060800151610280528060a001516102a0528060c001516102c0528060e001516102e052506101006105a060246352b51555610520526004356105405261053c610140515afa610be957600080fd5b60ff3d11610bf657600080fd5b6000506105a08051610400528060200151610420528060400151610440528060600151610460528060800151610480528060a001516104a0528060c001516104c0528060e001516104e052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa610c6c57600080fd5b60ff3d11610c7957600080fd5b6000506105a08051610300528060200151610320528060400151610340528060600151610360528060800151610380528060a001516103a0528060c001516103c0528060e001516103e052505b61052060006008818352015b61050051610520511415610ce557610d7c565b604e60126104006105205160088110610cfd57600080fd5b602002015180821015610d0f57600080fd5b8082039050905010610d2057600080fd5b60126104006105205160088110610d3657600080fd5b602002015180821015610d4857600080fd5b80820390509050600a0a6104006105205160088110610d6657600080fd5b60200201525b8151600101808352811415610cd2575b5050600560043560e05260c052604060c0205461052052610520511515610da557600354610520525b60206109606103c463ca3878906105405261050051610560526102005161058052610220516105a052610240516105c052610260516105e05261028051610600526102a051610620526102c051610640526102e051610660526101c051610680526101e0516106a052610300516106c052610320516106e0526103405161070052610360516107205261038051610740526103a051610760526103c051610780526103e0516107a052610400516107c052610420516107e0526104405161080052610460516108205261048051610840526104a051610860526104c051610880526104e0516108a052610160516108c052610180516108e0526064356109005261055c610520515afa610eb757600080fd5b601f3d11610ec457600080fd5b6000506109605160005260206000f35b634be9ae4281141561196b573415610eeb57600080fd5b60043560a01c15610efb57600080fd5b60243560a01c15610f0b57600080fd5b60443560a01c15610f1b57600080fd5b600154610140526103603661016037602061056060246355b30b196104e052600435610500526104fc610140515afa610f5357600080fd5b601f3d11610f6057600080fd5b600050610560516104c05260406105806024637cdb72b0610500526004356105205261051c610140515afa610f9457600080fd5b603f3d11610fa157600080fd5b600050610580516104e05260606105c0606463eb85226d6105005260043561052052602435610540526044356105605261051c610140515afa610fe357600080fd5b605f3d11610ff057600080fd5b6105c080808080516106205250506020810190508080805161064052505060208101905080808051610660525050505060005061062080516101605280602001516101805280604001516101a0525060406105a0602463940494f1610520526004356105405261053c610140515afa61106857600080fd5b603f3d1161107557600080fd5b6000506105a06101a0516002811061108c57600080fd5b6020020151610500526101a051156111fd576101006105a060246359f4f351610520526004356105405261053c610140515afa6110c857600080fd5b60ff3d116110d557600080fd5b6000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a06024634cb088f1610520526004356105405261053c610140515afa61114b57600080fd5b60ff3d1161115857600080fd5b6000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a0525061052060006008818352015b610500516105205114156111c3576111f6565b670de0b6b3a76400006102c061052051600881106111e057600080fd5b60200201525b81516001018083528114156111b0575b5050611387565b6101006105a060246392e3cc2d610520526004356105405261053c610140515afa61122757600080fd5b60ff3d1161123457600080fd5b6000506105a080516101c05280602001516101e0528060400151610200528060600151610220528060800151610240528060a00151610260528060c00151610280528060e001516102a052506101006105a060246352b51555610520526004356105405261053c610140515afa6112aa57600080fd5b60ff3d116112b757600080fd5b6000506105a080516103c05280602001516103e0528060400151610400528060600151610420528060800151610440528060a00151610460528060c00151610480528060e001516104a052506101006105a0602463ce99e45a610520526004356105405261053c610140515afa61132d57600080fd5b60ff3d1161133a57600080fd5b6000506105a080516102c05280602001516102e0528060400151610300528060600151610320528060800151610340528060a00151610360528060c00151610380528060e001516103a052505b61052060006008818352015b610500516105205114156113a65761143d565b604e60126103c061052051600881106113be57600080fd5b6020020151808210156113d057600080fd5b80820390509050106113e157600080fd5b60126103c061052051600881106113f757600080fd5b60200201518082101561140957600080fd5b80820390509050600a0a6103c0610520516008811061142757600080fd5b60200201525b8151600101808352811415611393575b5050600560043560e05260c052604060c020546105205261052051151561146657600354610520525b610c80610c806115c061102463138f41f16105405261050051610560526101c051610580526101e0516105a052610200516105c052610220516105e0526102405161060052610260516106205261028051610640526102a051610660526104c051610680526104e0516106a0526102c0516106c0526102e0516106e052610300516107005261032051610720526103405161074052610360516107605261038051610780526103a0516107a0526103c0516107c0526103e0516107e052610400516108005261042051610820526104405161084052610460516108605261048051610880526104a0516108a052610160516108c052610180516108e05260648035610900528060200135610920528060400135610940528060600135610960528060800135610980528060a001356109a0528060c001356109c0528060e001356109e052806101000135610a0052806101200135610a2052806101400135610a4052806101600135610a6052806101800135610a8052806101a00135610aa052806101c00135610ac052806101e00135610ae052806102000135610b0052806102200135610b2052806102400135610b4052806102600135610b6052806102800135610b8052806102a00135610ba052806102c00135610bc052806102e00135610be052806103000135610c0052806103200135610c2052806103400135610c4052806103600135610c6052806103800135610c8052806103a00135610ca052806103c00135610cc052806103e00135610ce052806104000135610d0052806104200135610d2052806104400135610d4052806104600135610d6052806104800135610d8052806104a00135610da052806104c00135610dc052806104e00135610de052806105000135610e0052806105200135610e2052806105400135610e4052806105600135610e6052806105800135610e8052806105a00135610ea052806105c00135610ec052806105e00135610ee052806106000135610f0052806106200135610f2052806106400135610f4052806106600135610f6052806106800135610f8052806106a00135610fa052806106c00135610fc052806106e00135610fe0528061070001356110005280610720013561102052806107400135611040528061076001356110605280610780013561108052806107a001356110a052806107c001356110c052806107e001356110e0528061080001356111005280610820013561112052806108400135611140528061086001356111605280610880013561118052806108a001356111a052806108c001356111c052806108e001356111e0528061090001356112005280610920013561122052806109400135611240528061096001356112605280610980013561128052806109a001356112a052806109c001356112c052806109e001356112e05280610a0001356113005280610a2001356113205280610a4001356113405280610a6001356113605280610a8001356113805280610aa001356113a05280610ac001356113c05280610ae001356113e05280610b0001356114005280610b2001356114205280610b4001356114405280610b6001356114605280610b8001356114805280610ba001356114a05280610bc001356114c05280610be001356114e05280610c0001356115005280610c2001356115205280610c4001356115405280610c600135611560525061055c610520515afa61195557600080fd5b610c7f3d1161196357600080fd5b6000506115c0f35b635d7dc8258114156119d057341561198257600080fd5b60043560a01c1561199257600080fd5b600560043560e05260c052604060c02054610140526101405115156119c15760035460005260206000f36119ce565b6101405160005260206000f35b005b634bbc5b1f811415611a715734156119e757600080fd5b6000546101405260206101c0600463a262904b6101605261017c610140515afa611a1057600080fd5b601f3d11611a1d57600080fd5b6000506101c05160015560206101e0602463493f4f746101605260036101805261017c610140515afa611a4f57600080fd5b601f3d11611a5c57600080fd5b6000506101e051600255600160005260206000f35b63188c7ee5811415611b07573415611a8857600080fd5b60043560a01c15611a9857600080fd5b60243560a01c15611aa857600080fd5b60206101a0600463f851a4406101405261015c6000545afa611ac957600080fd5b601f3d11611ad657600080fd5b6000506101a0513314611ae857600080fd5b602435600560043560e05260c052604060c02055600160005260206000f35b63da3fb2ab811415611b7f573415611b1e57600080fd5b60043560a01c15611b2e57600080fd5b60206101a0600463f851a4406101405261015c6000545afa611b4f57600080fd5b601f3d11611b5c57600080fd5b6000506101a0513314611b6e57600080fd5b600435600355600160005260206000f35b63752d53c6811415611dcd573415611b9657600080fd5b60043560a01c15611ba657600080fd5b60206101a0600463f851a4406101405261015c6000545afa611bc757600080fd5b601f3d11611bd457600080fd5b6000506101a0513314611be657600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6004351415611c46576000610140526101408051602001806101808284600060045af1611c2757600080fd5b505060006000610180516101a047335af1611c4157600080fd5b611dc2565b60206101e060246370a0823161016052306101805261017c6004355afa611c6c57600080fd5b601f3d11611c7957600080fd5b6000506101e05161014052600060046101c0527fa9059cbb000000000000000000000000000000000000000000000000000000006101e0526101c060048060208461022001018260208501600060045af15050805182019150503360208261022001015260208101905061014051602082610220010152602081019050806102205261022090508051602001806102c08284600060045af1611d1a57600080fd5b505060206103806102c0516102e060006004355af1611d3857600080fd5b60203d80821115611d495780611d4b565b815b90509050610360526103608051602001806101608284600060045af1611d7057600080fd5b50506000610160511815611dc257610160806020015160008251806020901315611d9957600080fd5b8091901215611da757600080fd5b806020036101000a82049050905090501515611dc257600080fd5b600160005260206000f35b6390b22997811415611e45573415611de457600080fd5b60043560011c15611df457600080fd5b60206101a0600463f851a4406101405261015c6000545afa611e1557600080fd5b601f3d11611e2257600080fd5b6000506101a0513314611e3457600080fd5b600435600455600160005260206000f35b637b103999811415611e68573415611e5c57600080fd5b60015460005260206000f35b63f7cbf4c6811415611e8b573415611e7f57600080fd5b60025460005260206000f35b633b359fc8811415611eae573415611ea257600080fd5b60035460005260206000f35b639c868ac0811415611ed1573415611ec557600080fd5b60045460005260206000f35b505b005b6101e0526101405261016052610180526101a0526101c052606036610200376060610320606463eb85226d610260526101605161028052610180516102a0526101a0516102c05261027c610140515afa611f2e57600080fd5b605f3d11611f3b57600080fd5b6103208080808051610380525050602081019050808080516103a0525050602081019050808080516103c05250505050600050610380805161020052806020015161022052806040015161024052506102405115611fed57602061032060646307211ef7610260526102005161028052610220516102a0526101c0516102c05261027c610160515afa611fcd57600080fd5b601f3d11611fda57600080fd5b600050610320516000526000516101e051565b60206103206064635e0d443f610260526102005161028052610220516102a0526101c0516102c05261027c610160515afa61202757600080fd5b601f3d1161203457600080fd5b600050610320516000526000516101e051565b610240526101405261016052610180526101a0526101c0526101e05261020052610220526004541561207857600080fd5b60c0366102603760606103e0606463eb85226d61032052610160516103405261018051610360526101a0516103805261033c610140515afa6120b957600080fd5b605f3d116120c657600080fd5b6103e080808080516104405250506020810190508080805161046052505060208101905080808051610480525050505060005061044080516102c05280602001516102e0528060400151610300525073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a051141561213e57476102605261217e565b60206103a060246370a0823161032052306103405261033c6101a0515afa61216557600080fd5b601f3d1161217257600080fd5b6000506103a051610260525b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101805114156121aa576101c051610280526122fc565b60006004610380527f23b872dd000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610200516020826103e0010152602081019050306020826103e00101526020810190506101c0516020826103e0010152602081019050806103e0526103e090508051602001806104a08284600060045af161225357600080fd5b505060206105806104a0516104c06000610180515af161227257600080fd5b60203d808211156122835780612285565b815b90509050610560526105608051602001806103208284600060045af16122aa57600080fd5b505060006103205118156122fc576103208060200151600082518060209013156122d357600080fd5b80919012156122e157600080fd5b806020036101000a820490509050905015156122fc57600080fd5b60066101805160e05260c052604060c0206101605160e05260c052604060c0205415156124a65760006004610380527f095ea7b3000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610160516020826103e00101526020810190507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af16123d957600080fd5b50506020610540610480516104a06000610180515af16123f857600080fd5b60203d80821115612409578061240b565b815b90509050610520526105208051602001806103208284600060045af161243057600080fd5b505060006103205118156124825761032080602001516000825180602090131561245957600080fd5b809190121561246757600080fd5b806020036101000a8204905090509050151561248257600080fd5b600160066101805160e05260c052604060c0206101605160e05260c052604060c020555b610300511561250757610160513b6124bd57600080fd5b60006000608463a6417ed6610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af161250257600080fd5b61255a565b610160513b61251557600080fd5b600060006084633df02124610320526102c051610340526102e051610360526101c051610380526101e0516103a05261033c61028051610160515af161255a57600080fd5b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6101a05114156125de5747610260518082101561258b57600080fd5b808203905090506102a0526000610320526103208051602001806103608284600060045af16125b957600080fd5b505060006000610360516103806102a051610220515af16125d957600080fd5b612777565b60206103a060246370a0823161032052306103405261033c6101a0515afa61260557600080fd5b601f3d1161261257600080fd5b6000506103a051610260518082101561262a57600080fd5b808203905090506102a05260006004610380527fa9059cbb000000000000000000000000000000000000000000000000000000006103a0526103806004806020846103e001018260208501600060045af1505080518201915050610220516020826103e00101526020810190506102a0516020826103e0010152602081019050806103e0526103e090508051602001806104808284600060045af16126ce57600080fd5b50506020610540610480516104a060006101a0515af16126ed57600080fd5b60203d808211156126fe5780612700565b815b90509050610520526105208051602001806103208284600060045af161272557600080fd5b505060006103205118156127775761032080602001516000825180602090131561274e57600080fd5b809190121561275c57600080fd5b806020036101000a8204905090509050151561277757600080fd5b61018051610320526101a051610340526101c051610360526102a051610380526101605161022051610200517fbd3eb7bcfdd1721a4eb4f00d0df3ed91bd6f17222f82b2d7bce519d8cab3fe466080610320a46102a0516000526000516102405156
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000022d53366457f9d5e68ec105046fc43830000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _address_provider (address): 0x0000000022D53366457F9d5E68Ec105046FC4383
Arg [1] : _calculator (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000022d53366457f9d5e68ec105046fc4383
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.