Overview
ETH Balance
0 ETH
Eth Value
$0.00Token Holdings
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 2,548 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 21306138 | 31 days ago | IN | 0 ETH | 0.0077069 | ||||
Withdraw | 21306122 | 31 days ago | IN | 0 ETH | 0.00767272 | ||||
Claim_rewards | 20646166 | 123 days ago | IN | 0 ETH | 0.00009283 | ||||
Claim_rewards | 20204251 | 184 days ago | IN | 0 ETH | 0.000361 | ||||
Withdraw | 19561461 | 274 days ago | IN | 0 ETH | 0.01698538 | ||||
Withdraw | 18909306 | 366 days ago | IN | 0 ETH | 0.00471366 | ||||
Withdraw | 18861540 | 373 days ago | IN | 0 ETH | 0.01742925 | ||||
Withdraw | 18377971 | 440 days ago | IN | 0 ETH | 0.01927412 | ||||
Withdraw | 17961538 | 499 days ago | IN | 0 ETH | 0.03280458 | ||||
Claim_rewards | 16596470 | 691 days ago | IN | 0 ETH | 0.00215801 | ||||
Claim_rewards | 16586400 | 692 days ago | IN | 0 ETH | 0.0038484 | ||||
Claim_rewards | 16569708 | 694 days ago | IN | 0 ETH | 0.00231439 | ||||
Withdraw | 16305308 | 731 days ago | IN | 0 ETH | 0.00959348 | ||||
Claim_rewards | 16207726 | 745 days ago | IN | 0 ETH | 0.00154508 | ||||
Withdraw | 16207685 | 745 days ago | IN | 0 ETH | 0.01029541 | ||||
Claim_rewards | 16147072 | 753 days ago | IN | 0 ETH | 0.00193771 | ||||
Withdraw | 16147052 | 753 days ago | IN | 0 ETH | 0.01036966 | ||||
Withdraw | 15994041 | 775 days ago | IN | 0 ETH | 0.00609614 | ||||
Claim_rewards | 15963989 | 779 days ago | IN | 0 ETH | 0.00210291 | ||||
Withdraw | 15963871 | 779 days ago | IN | 0 ETH | 0.00746207 | ||||
Withdraw | 15588740 | 831 days ago | IN | 0 ETH | 0.00270522 | ||||
Claim_rewards | 15416334 | 858 days ago | IN | 0 ETH | 0.00183307 | ||||
Withdraw | 15416272 | 858 days ago | IN | 0 ETH | 0.01081489 | ||||
Withdraw | 15335646 | 871 days ago | IN | 0 ETH | 0.00390272 | ||||
Claim_rewards | 15224051 | 889 days ago | IN | 0 ETH | 0.00079405 |
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
This contract may be a proxy contract. Click on More Options and select Is this a proxy? to confirm and enable the "Read as Proxy" & "Write as Proxy" tabs.
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.2.4
Contract Source Code (Vyper language format)
# @version 0.2.4 """ @title Staking Liquidity Gauge @author Curve Finance @license MIT @notice Simultaneously stakes using Synthetix (== YFI) rewards contract """ from vyper.interfaces import ERC20 interface CRV20: def future_epoch_time_write() -> uint256: nonpayable def rate() -> uint256: view interface Controller: def period() -> int128: view def period_write() -> int128: nonpayable def period_timestamp(p: int128) -> uint256: view def gauge_relative_weight(addr: address, time: uint256) -> uint256: view def voting_escrow() -> address: view def checkpoint(): nonpayable def checkpoint_gauge(addr: address): nonpayable interface Minter: def token() -> address: view def controller() -> address: view def minted(user: address, gauge: address) -> uint256: view interface VotingEscrow: def user_point_epoch(addr: address) -> uint256: view def user_point_history__ts(addr: address, epoch: uint256) -> uint256: view interface CurveRewards: def stake(amount: uint256): nonpayable def withdraw(amount: uint256): nonpayable def getReward(): nonpayable def earned(addr: address) -> uint256: view event Deposit: provider: indexed(address) value: uint256 event Withdraw: provider: indexed(address) value: uint256 event UpdateLiquidityLimit: user: address original_balance: uint256 original_supply: uint256 working_balance: uint256 working_supply: uint256 event CommitOwnership: admin: address event ApplyOwnership: admin: address TOKENLESS_PRODUCTION: constant(uint256) = 40 BOOST_WARMUP: constant(uint256) = 2 * 7 * 86400 WEEK: constant(uint256) = 604800 minter: public(address) crv_token: public(address) lp_token: public(address) controller: public(address) voting_escrow: public(address) balanceOf: public(HashMap[address, uint256]) totalSupply: public(uint256) future_epoch_time: public(uint256) # caller -> recipient -> can deposit? approved_to_deposit: public(HashMap[address, HashMap[address, bool]]) working_balances: public(HashMap[address, uint256]) working_supply: public(uint256) # The goal is to be able to calculate ∫(rate * balance / totalSupply dt) from 0 till checkpoint # All values are kept in units of being multiplied by 1e18 period: public(int128) period_timestamp: public(uint256[100000000000000000000000000000]) # 1e18 * ∫(rate(t) / totalSupply(t) dt) from 0 till checkpoint integrate_inv_supply: public(uint256[100000000000000000000000000000]) # bump epoch when rate() changes # 1e18 * ∫(rate(t) / totalSupply(t) dt) from (last_action) till checkpoint integrate_inv_supply_of: public(HashMap[address, uint256]) integrate_checkpoint_of: public(HashMap[address, uint256]) # ∫(balance * rate(t) / totalSupply(t) dt) from 0 till checkpoint # Units: rate * t = already number of coins per address to issue integrate_fraction: public(HashMap[address, uint256]) inflation_rate: public(uint256) # For tracking external rewards reward_contract: public(address) rewarded_token: public(address) reward_integral: public(uint256) reward_integral_for: public(HashMap[address, uint256]) rewards_for: public(HashMap[address, uint256]) claimed_rewards_for: public(HashMap[address, uint256]) admin: public(address) future_admin: public(address) # Can and will be a smart contract is_killed: public(bool) @external def __init__(lp_addr: address, _minter: address, _reward_contract: address, _rewarded_token: address, _admin: address): """ @notice Contract constructor @param lp_addr Liquidity Pool contract address @param _minter Minter contract address @param _reward_contract Synthetix reward contract address @param _rewarded_token Received synthetix token contract address @param _admin Admin who can kill the gauge """ assert lp_addr != ZERO_ADDRESS assert _minter != ZERO_ADDRESS assert _reward_contract != ZERO_ADDRESS self.lp_token = lp_addr self.minter = _minter crv_addr: address = Minter(_minter).token() self.crv_token = crv_addr controller_addr: address = Minter(_minter).controller() self.controller = controller_addr self.voting_escrow = Controller(controller_addr).voting_escrow() self.period_timestamp[0] = block.timestamp self.inflation_rate = CRV20(crv_addr).rate() self.future_epoch_time = CRV20(crv_addr).future_epoch_time_write() self.reward_contract = _reward_contract assert ERC20(lp_addr).approve(_reward_contract, MAX_UINT256) self.rewarded_token = _rewarded_token self.admin = _admin @internal def _update_liquidity_limit(addr: address, l: uint256, L: uint256): """ @notice Calculate limits which depend on the amount of CRV token per-user. Effectively it calculates working balances to apply amplification of CRV production by CRV @param addr User address @param l User's amount of liquidity (LP tokens) @param L Total amount of liquidity (LP tokens) """ # To be called after totalSupply is updated _voting_escrow: address = self.voting_escrow voting_balance: uint256 = ERC20(_voting_escrow).balanceOf(addr) voting_total: uint256 = ERC20(_voting_escrow).totalSupply() lim: uint256 = l * TOKENLESS_PRODUCTION / 100 if (voting_total > 0) and (block.timestamp > self.period_timestamp[0] + BOOST_WARMUP): lim += L * voting_balance / voting_total * (100 - TOKENLESS_PRODUCTION) / 100 lim = min(l, lim) old_bal: uint256 = self.working_balances[addr] self.working_balances[addr] = lim _working_supply: uint256 = self.working_supply + lim - old_bal self.working_supply = _working_supply log UpdateLiquidityLimit(addr, l, L, lim, _working_supply) @internal def _checkpoint_rewards(addr: address, claim_rewards: bool): # Update reward integrals (no gauge weights involved: easy) _rewarded_token: address = self.rewarded_token d_reward: uint256 = 0 if claim_rewards: d_reward = ERC20(_rewarded_token).balanceOf(self) CurveRewards(self.reward_contract).getReward() d_reward = ERC20(_rewarded_token).balanceOf(self) - d_reward user_balance: uint256 = self.balanceOf[addr] total_balance: uint256 = self.totalSupply dI: uint256 = 0 if total_balance > 0: dI = 10 ** 18 * d_reward / total_balance I: uint256 = self.reward_integral + dI self.reward_integral = I self.rewards_for[addr] += user_balance * (I - self.reward_integral_for[addr]) / 10 ** 18 self.reward_integral_for[addr] = I @internal def _checkpoint(addr: address, claim_rewards: bool): """ @notice Checkpoint for a user @param addr User address """ _token: address = self.crv_token _controller: address = self.controller _period: int128 = self.period _period_time: uint256 = self.period_timestamp[_period] _integrate_inv_supply: uint256 = self.integrate_inv_supply[_period] rate: uint256 = self.inflation_rate new_rate: uint256 = rate prev_future_epoch: uint256 = self.future_epoch_time if prev_future_epoch >= _period_time: self.future_epoch_time = CRV20(_token).future_epoch_time_write() new_rate = CRV20(_token).rate() self.inflation_rate = new_rate Controller(_controller).checkpoint_gauge(self) _working_balance: uint256 = self.working_balances[addr] _working_supply: uint256 = self.working_supply if self.is_killed: rate = 0 # Stop distributing inflation as soon as killed # Update integral of 1/supply if block.timestamp > _period_time: prev_week_time: uint256 = _period_time week_time: uint256 = min((_period_time + WEEK) / WEEK * WEEK, block.timestamp) for i in range(500): dt: uint256 = week_time - prev_week_time w: uint256 = Controller(_controller).gauge_relative_weight(self, prev_week_time / WEEK * WEEK) if _working_supply > 0: if prev_future_epoch >= prev_week_time and prev_future_epoch < week_time: # If we went across one or multiple epochs, apply the rate # of the first epoch until it ends, and then the rate of # the last epoch. # If more than one epoch is crossed - the gauge gets less, # but that'd meen it wasn't called for more than 1 year _integrate_inv_supply += rate * w * (prev_future_epoch - prev_week_time) / _working_supply rate = new_rate _integrate_inv_supply += rate * w * (week_time - prev_future_epoch) / _working_supply else: _integrate_inv_supply += rate * w * dt / _working_supply # On precisions of the calculation # rate ~= 10e18 # last_weight > 0.01 * 1e18 = 1e16 (if pool weight is 1%) # _working_supply ~= TVL * 1e18 ~= 1e26 ($100M for example) # The largest loss is at dt = 1 # Loss is 1e-9 - acceptable if week_time == block.timestamp: break prev_week_time = week_time week_time = min(week_time + WEEK, block.timestamp) _period += 1 self.period = _period self.period_timestamp[_period] = block.timestamp self.integrate_inv_supply[_period] = _integrate_inv_supply # Update user-specific integrals self.integrate_fraction[addr] += _working_balance * (_integrate_inv_supply - self.integrate_inv_supply_of[addr]) / 10 ** 18 self.integrate_inv_supply_of[addr] = _integrate_inv_supply self.integrate_checkpoint_of[addr] = block.timestamp self._checkpoint_rewards(addr, claim_rewards) @external def user_checkpoint(addr: address) -> bool: """ @notice Record a checkpoint for `addr` @param addr User address @return bool success """ assert (msg.sender == addr) or (msg.sender == self.minter) # dev: unauthorized self._checkpoint(addr, True) self._update_liquidity_limit(addr, self.balanceOf[addr], self.totalSupply) return True @external def claimable_tokens(addr: address) -> uint256: """ @notice Get the number of claimable tokens per user @dev This function should be manually changed to "view" in the ABI @return uint256 number of claimable tokens per user """ self._checkpoint(addr, True) return self.integrate_fraction[addr] - Minter(self.minter).minted(addr, self) @external @view def claimable_reward(addr: address) -> uint256: """ @notice Get the number of claimable reward tokens for a user @param addr Account to get reward amount for @return uint256 Claimable reward token amount """ d_reward: uint256 = CurveRewards(self.reward_contract).earned(self) user_balance: uint256 = self.balanceOf[addr] total_balance: uint256 = self.totalSupply dI: uint256 = 0 if total_balance > 0: dI = 10 ** 18 * d_reward / total_balance I: uint256 = self.reward_integral + dI return self.rewards_for[addr] + user_balance * (I - self.reward_integral_for[addr]) / 10 ** 18 @external def kick(addr: address): """ @notice Kick `addr` for abusing their boost @dev Only if either they had another voting event, or their voting escrow lock expired @param addr Address to kick """ _voting_escrow: address = self.voting_escrow t_last: uint256 = self.integrate_checkpoint_of[addr] t_ve: uint256 = VotingEscrow(_voting_escrow).user_point_history__ts( addr, VotingEscrow(_voting_escrow).user_point_epoch(addr) ) _balance: uint256 = self.balanceOf[addr] assert ERC20(self.voting_escrow).balanceOf(addr) == 0 or t_ve > t_last # dev: kick not allowed assert self.working_balances[addr] > _balance * TOKENLESS_PRODUCTION / 100 # dev: kick not needed self._checkpoint(addr, True) self._update_liquidity_limit(addr, self.balanceOf[addr], self.totalSupply) @external def set_approve_deposit(addr: address, can_deposit: bool): """ @notice Set whether `addr` can deposit tokens for `msg.sender` @param addr Address to set approval on @param can_deposit bool - can this account deposit for `msg.sender`? """ self.approved_to_deposit[addr][msg.sender] = can_deposit @external @nonreentrant('lock') def deposit(_value: uint256, addr: address = msg.sender): """ @notice Deposit `_value` LP tokens @param _value Number of tokens to deposit @param addr Address to deposit for """ if addr != msg.sender: assert self.approved_to_deposit[msg.sender][addr], "Not approved" self._checkpoint(addr, True) if _value != 0: _balance: uint256 = self.balanceOf[addr] + _value _supply: uint256 = self.totalSupply + _value self.balanceOf[addr] = _balance self.totalSupply = _supply self._update_liquidity_limit(addr, _balance, _supply) assert ERC20(self.lp_token).transferFrom(msg.sender, self, _value) CurveRewards(self.reward_contract).stake(_value) log Deposit(addr, _value) @external @nonreentrant('lock') def withdraw(_value: uint256, claim_rewards: bool = True): """ @notice Withdraw `_value` LP tokens @param _value Number of tokens to withdraw """ self._checkpoint(msg.sender, claim_rewards) _balance: uint256 = self.balanceOf[msg.sender] - _value _supply: uint256 = self.totalSupply - _value self.balanceOf[msg.sender] = _balance self.totalSupply = _supply self._update_liquidity_limit(msg.sender, _balance, _supply) if _value > 0: CurveRewards(self.reward_contract).withdraw(_value) assert ERC20(self.lp_token).transfer(msg.sender, _value) log Withdraw(msg.sender, _value) @external @nonreentrant('lock') def claim_rewards(addr: address = msg.sender): self._checkpoint_rewards(addr, True) _rewards_for: uint256 = self.rewards_for[addr] assert ERC20(self.rewarded_token).transfer( addr, _rewards_for - self.claimed_rewards_for[addr]) self.claimed_rewards_for[addr] = _rewards_for @external @view def integrate_checkpoint() -> uint256: return self.period_timestamp[self.period] @external def kill_me(): assert msg.sender == self.admin self.is_killed = not self.is_killed @external def commit_transfer_ownership(addr: address): """ @notice Transfer ownership of GaugeController to `addr` @param addr Address to have ownership transferred to """ assert msg.sender == self.admin # dev: admin only self.future_admin = addr log CommitOwnership(addr) @external def apply_transfer_ownership(): """ @notice Apply pending ownership transfer """ assert msg.sender == self.admin # dev: admin only _admin: address = self.future_admin assert _admin != ZERO_ADDRESS # dev: admin not set self.admin = _admin log ApplyOwnership(_admin)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"Deposit","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false,"type":"event"},{"name":"Withdraw","inputs":[{"type":"address","name":"provider","indexed":true},{"type":"uint256","name":"value","indexed":false}],"anonymous":false,"type":"event"},{"name":"UpdateLiquidityLimit","inputs":[{"type":"address","name":"user","indexed":false},{"type":"uint256","name":"original_balance","indexed":false},{"type":"uint256","name":"original_supply","indexed":false},{"type":"uint256","name":"working_balance","indexed":false},{"type":"uint256","name":"working_supply","indexed":false}],"anonymous":false,"type":"event"},{"name":"CommitOwnership","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"name":"ApplyOwnership","inputs":[{"type":"address","name":"admin","indexed":false}],"anonymous":false,"type":"event"},{"outputs":[],"inputs":[{"type":"address","name":"lp_addr"},{"type":"address","name":"_minter"},{"type":"address","name":"_reward_contract"},{"type":"address","name":"_rewarded_token"},{"type":"address","name":"_admin"}],"stateMutability":"nonpayable","type":"constructor"},{"name":"user_checkpoint","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2312845},{"name":"claimable_tokens","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2231999},{"name":"claimable_reward","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"view","type":"function","gas":7300},{"name":"kick","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":2318244},{"name":"set_approve_deposit","outputs":[],"inputs":[{"type":"address","name":"addr"},{"type":"bool","name":"can_deposit"}],"stateMutability":"nonpayable","type":"function","gas":35826},{"name":"deposit","outputs":[],"inputs":[{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function"},{"name":"deposit","outputs":[],"inputs":[{"type":"uint256","name":"_value"},{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function"},{"name":"withdraw","outputs":[],"inputs":[{"type":"uint256","name":"_value"}],"stateMutability":"nonpayable","type":"function"},{"name":"withdraw","outputs":[],"inputs":[{"type":"uint256","name":"_value"},{"type":"bool","name":"claim_rewards"}],"stateMutability":"nonpayable","type":"function"},{"name":"claim_rewards","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function"},{"name":"claim_rewards","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function"},{"name":"integrate_checkpoint","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2387},{"name":"kill_me","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":37368},{"name":"commit_transfer_ownership","outputs":[],"inputs":[{"type":"address","name":"addr"}],"stateMutability":"nonpayable","type":"function","gas":37987},{"name":"apply_transfer_ownership","outputs":[],"inputs":[],"stateMutability":"nonpayable","type":"function","gas":38887},{"name":"minter","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1601},{"name":"crv_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1631},{"name":"lp_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1661},{"name":"controller","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1691},{"name":"voting_escrow","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1721},{"name":"balanceOf","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":1905},{"name":"totalSupply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1781},{"name":"future_epoch_time","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1811},{"name":"approved_to_deposit","outputs":[{"type":"bool","name":""}],"inputs":[{"type":"address","name":"arg0"},{"type":"address","name":"arg1"}],"stateMutability":"view","type":"function","gas":2149},{"name":"working_balances","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2025},{"name":"working_supply","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1901},{"name":"period","outputs":[{"type":"int128","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":1931},{"name":"period_timestamp","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2070},{"name":"integrate_inv_supply","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"uint256","name":"arg0"}],"stateMutability":"view","type":"function","gas":2100},{"name":"integrate_inv_supply_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2175},{"name":"integrate_checkpoint_of","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2205},{"name":"integrate_fraction","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2235},{"name":"inflation_rate","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2111},{"name":"reward_contract","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2141},{"name":"rewarded_token","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2171},{"name":"reward_integral","outputs":[{"type":"uint256","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2201},{"name":"reward_integral_for","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2385},{"name":"rewards_for","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2415},{"name":"claimed_rewards_for","outputs":[{"type":"uint256","name":""}],"inputs":[{"type":"address","name":"arg0"}],"stateMutability":"view","type":"function","gas":2445},{"name":"admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2321},{"name":"future_admin","outputs":[{"type":"address","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2351},{"name":"is_killed","outputs":[{"type":"bool","name":""}],"inputs":[],"stateMutability":"view","type":"function","gas":2381}]
Contract Creation Code
740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05260a061229b6101403934156100a157600080fd5b602061229b60c03960c05160205181106100ba57600080fd5b506020602061229b0160c03960c05160205181106100d757600080fd5b506020604061229b0160c03960c05160205181106100f457600080fd5b506020606061229b0160c03960c051602051811061011157600080fd5b506020608061229b0160c03960c051602051811061012e57600080fd5b506000610140511861013f57600080fd5b6000610160511861014f57600080fd5b6000610180511861015f57600080fd5b61014051600255610160516000556020610260600463fc0c546a6102005261021c610160515afa61018f57600080fd5b601f3d1161019c57600080fd5b600050610260516101e0526101e0516001556020610300600463f77c47916102a0526102bc610160515afa6101d057600080fd5b601f3d116101dd57600080fd5b6000506103005161028052610280516003556020610380600463dfe050316103205261033c610280515afa61021157600080fd5b601f3d1161021e57600080fd5b6000506103805160045542600c60c052602060c0205560206104006004632c4e722e6103a0526103bc6101e0515afa61025657600080fd5b601f3d1161026357600080fd5b600050610400516011556020610480600463b26b238e6104205261043c60006101e0515af161029157600080fd5b601f3d1161029e57600080fd5b60005061048051600755610180516012556020610540604463095ea7b36104a052610180516104c0527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6104e0526104bc6000610140515af161030057600080fd5b601f3d1161030d57600080fd5b6000506105405161031d57600080fd5b6101a0516013556101c05160185561228356600436101561000d57611f4d565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05260001561031c575b6101a0526101405261016052610180526004546101c052602061028060246370a0823161020052610140516102205261021c6101c0515afa6100ea57600080fd5b601f3d116100f757600080fd5b600050610280516101e052602061032060046318160ddd6102c0526102dc6101c0515afa61012457600080fd5b601f3d1161013157600080fd5b600050610320516102a052610160516028808202821582848304141761015657600080fd5b809050905090506064808061016a57600080fd5b8204905090506103405260006102a05111156101ac57600c60c052602060c020546212750081818301101561019e57600080fd5b8082019050905042116101af565b60005b1561023b576103408051610180516101e05180820282158284830414176101d557600080fd5b809050905090506102a05180806101eb57600080fd5b820490509050603c808202821582848304141761020757600080fd5b809050905090506064808061021b57600080fd5b82049050905081818301101561023057600080fd5b808201905090508152505b6101605161034051808211156102515780610253565b815b905090506103405260096101405160e05260c052604060c02054610360526103405160096101405160e05260c052604060c02055600a546103405181818301101561029d57600080fd5b8082019050905061036051808210156102b557600080fd5b808203905090506103805261038051600a55610140516103a052610160516103c052610180516103e052610340516104005261038051610420527f7ecd84343f76a23d2227290e0288da3251b045541698e575a5515af4f04197a360a06103a0a16101a051565b600015610550575b6101805261014052610160526013546101a05260006101c052610160511561040c57602061026060246370a082316101e05230610200526101fc6101a0515afa61036d57600080fd5b601f3d1161037a57600080fd5b600050610260516101c0526012543b61039257600080fd5b600060006004633d18b9126102805261029c60006012545af16103b457600080fd5b602061036060246370a082316102e05230610300526102fc6101a0515afa6103db57600080fd5b601f3d116103e857600080fd5b600050610360516101c0518082101561040057600080fd5b808203905090506101c0525b60056101405160e05260c052604060c02054610380526006546103a05260006103c05260006103a051111561047d57670de0b6b3a76400006101c051808202821582848304141761045c57600080fd5b809050905090506103a051808061047257600080fd5b8204905090506103c0525b6014546103c05181818301101561049357600080fd5b808201905090506103e0526103e05160145560166101405160e05260c052604060c0208054610380516103e05160156101405160e05260c052604060c02054808210156104df57600080fd5b8082039050905080820282158284830414176104fa57600080fd5b80905090509050670de0b6b3a7640000808061051557600080fd5b82049050905081818301101561052a57600080fd5b808201905090508155506103e05160156101405160e05260c052604060c0205561018051565b600015610bf6575b6101805261014052610160526001546101a0526003546101c052600b546101e0526101e0516c01431e0fae6d7217caa0000000811061059657600080fd5b600c60c052602060c0200154610200526101e0516c01431e0fae6d7217caa000000081106105c357600080fd5b600d60c052602060c020015461022052601154610240526102405161026052600754610280526102005161028051101515610675576020610300600463b26b238e6102a0526102bc60006101a0515af161061c57600080fd5b601f3d1161062957600080fd5b6000506103005160075560206103806004632c4e722e6103205261033c6101a0515afa61065557600080fd5b601f3d1161066257600080fd5b6000506103805161026052610260516011555b6101c0513b61068357600080fd5b60006000602463615e52376103a052306103c0526103bc60006101c0515af16106ab57600080fd5b60096101405160e05260c052604060c0205461042052600a5461044052601a54156106d7576000610240525b61020051421115610a2f5761020051610460526102005162093a8081818301101561070157600080fd5b8082019050905062093a80808061071757600080fd5b82049050905062093a80808202821582848304141761073557600080fd5b80905090509050428082111561074b578061074d565b815b90509050610480526104a060006101f4818352015b61048051610460518082101561077757600080fd5b808203905090506104c05260206105a0604463d3078c946105005230610520526104605162093a8080806107aa57600080fd5b82049050905062093a8080820282158284830414176107c857600080fd5b809050905090506105405261051c6101c0515afa6107e557600080fd5b601f3d116107f257600080fd5b6000506105a0516104e05260006104405111156109cc57610460516102805110151561082657610480516102805110610829565b60005b15610955576102208051610240516104e051808202821582848304141761084f57600080fd5b8090509050905061028051610460518082101561086b57600080fd5b80820390509050808202821582848304141761088657600080fd5b8090509050905061044051808061089c57600080fd5b8204905090508181830110156108b157600080fd5b8082019050905081525061026051610240526102208051610240516104e05180820282158284830414176108e457600080fd5b8090509050905061048051610280518082101561090057600080fd5b80820390509050808202821582848304141761091b57600080fd5b8090509050905061044051808061093157600080fd5b82049050905081818301101561094657600080fd5b808201905090508152506109cb565b6102208051610240516104e051808202821582848304141761097657600080fd5b809050905090506104c051808202821582848304141761099557600080fd5b809050905090506104405180806109ab57600080fd5b8204905090508181830110156109c057600080fd5b808201905090508152505b5b426104805114156109dc57610a2c565b61048051610460526104805162093a808181830110156109fb57600080fd5b808201905090504280821115610a115780610a13565b815b90509050610480525b8151600101808352811415610762575b50505b6101e08051600160605181830180604051901315610a4c57600080fd5b8091901215610a5a57600080fd5b905090508152506101e051600b55426101e0516c01431e0fae6d7217caa00000008110610a8657600080fd5b600c60c052602060c0200155610220516101e0516c01431e0fae6d7217caa00000008110610ab357600080fd5b600d60c052602060c020015560106101405160e05260c052604060c02080546104205161022051600e6101405160e05260c052604060c0205480821015610af957600080fd5b808203905090508082028215828483041417610b1457600080fd5b80905090509050670de0b6b3a76400008080610b2f57600080fd5b820490509050818183011015610b4457600080fd5b8082019050905081555061022051600e6101405160e05260c052604060c0205542600f6101405160e05260c052604060c020556101406105c0525b6105c0515160206105c051016105c0526104606105c0511015610ba157610b7f565b610140516105e0526101605161060052610600516105e05160065801610324565b6104406105c0525b6105c0515260206105c051036105c0526101406105c051101515610bed57610bca565b60005061018051565b634b8200936000511415610ccb573415610c0f57600080fd5b6004356020518110610c2057600080fd5b50600435331415610c32576001610c38565b60005433145b5b610c4257600080fd5b60043561014052600161016052610160516101405160065801610558565b6000506101405161016051610180516101a0516004356101e052600560043560e05260c052604060c02054610200526006546102205261022051610200516101e051600658016100a9565b6101a052610180526101605261014052600050600160005260206000f350005b63331345836000511415610d88573415610ce457600080fd5b6004356020518110610cf557600080fd5b5060043561014052600161016052610160516101405160065801610558565b600050601060043560e05260c052604060c0205460206102606044638b752bb06101c0526004356101e05230610200526101dc6000545afa610d5557600080fd5b601f3d11610d6257600080fd5b6000506102605180821015610d7657600080fd5b8082039050905060005260206000f350005b63d2797b596000511415610f15573415610da157600080fd5b6004356020518110610db257600080fd5b5060206101e06024628cc26261016052306101805261017c6012545afa610dd857600080fd5b601f3d11610de557600080fd5b6000506101e05161014052600560043560e05260c052604060c0205461020052600654610220526000610240526000610220511115610e6057670de0b6b3a7640000610140518082028215828483041417610e3f57600080fd5b80905090509050610220518080610e5557600080fd5b820490509050610240525b60145461024051818183011015610e7657600080fd5b8082019050905061026052601660043560e05260c052604060c020546102005161026051601560043560e05260c052604060c0205480821015610eb857600080fd5b808203905090508082028215828483041417610ed357600080fd5b80905090509050670de0b6b3a76400008080610eee57600080fd5b820490509050818183011015610f0357600080fd5b8082019050905060005260206000f350005b6396c5517560005114156111a7573415610f2e57600080fd5b6004356020518110610f3f57600080fd5b5060045461014052600f60043560e05260c052604060c020546101605260206102e0604463da020a1861024052600435610260526020610220602463010ae7576101a0526004356101c0526101bc610140515afa610f9c57600080fd5b601f3d11610fa957600080fd5b600050610220516102805261025c610140515afa610fc657600080fd5b601f3d11610fd357600080fd5b6000506102e05161018052600560043560e05260c052604060c0205461030052602061044060246370a082316103c0526004356103e0526103dc6004545afa61101b57600080fd5b601f3d1161102857600080fd5b60005061044051151561103c576001611046565b6101605161018051115b5b61105057600080fd5b610300516028808202821582848304141761106a57600080fd5b809050905090506064808061107e57600080fd5b820490509050600960043560e05260c052604060c020541161109f57600080fd5b610140610460525b610460515160206104605101610460526104606104605110156110c9576110a7565b6004356104805260016104a0526104a0516104805160065801610558565b610440610460525b6104605152602061046051036104605261014061046051101515611112576110ef565b600050610140610500525b6105005151602061050051016105005261050061050051101561113f5761111d565b60043561052052600560043560e05260c052604060c020546105405260065461056052610560516105405161052051600658016100a9565b6104e0610500525b61050051526020610500510361050052610140610500511015156111a25761117f565b600050005b631d2747d460005114156112055734156111c057600080fd5b60043560205181106111d157600080fd5b50602435600281106111e257600080fd5b50602435600860043560e05260c052604060c0203360e05260c052604060c02055005b63b6b55f25600051141561121d573361014052611254565b636e553f65600051141561124c57602435602051811061123c57600080fd5b6020602461014037600050611254565b6000156114d1575b62ffffff541561126357600080fd5b600162ffffff55341561127557600080fd5b336101405118156112e8576308c379a061016052602061018052600c6101a0527f4e6f7420617070726f76656400000000000000000000000000000000000000006101c0526101a05060083360e05260c052604060c0206101405160e05260c052604060c020546112e757606461017cfd5b5b610140516101405161022052600161024052610240516102205160065801610558565b61014052600050600060043518156114965760056101405160e05260c052604060c0205460043581818301101561134157600080fd5b808201905090506102a05260065460043581818301101561136157600080fd5b808201905090506102c0526102a05160056101405160e05260c052604060c020556102c0516006556101406102e0525b6102e0515160206102e051016102e0526102e06102e05110156113b357611391565b61014051610300526102a051610320526102c05161034052610340516103205161030051600658016100a9565b6102c06102e0525b6102e0515260206102e051036102e0526101406102e05110151561140b576113e8565b600050602061046060646323b872dd6103a052336103c052306103e052600435610400526103bc60006002545af161144257600080fd5b601f3d1161144f57600080fd5b6000506104605161145f57600080fd5b6012543b61146c57600080fd5b60006000602463a694fc3a610480526004356104a05261049c60006012545af161149557600080fd5b5b60043561050052610140517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c6020610500a2600062ffffff55005b632e1a7d4d60005114156114ea57600161014052611520565b6338d074366000511415611518576024356002811061150857600080fd5b6020602461014037600050611520565b6000156116ff575b62ffffff541561152f57600080fd5b600162ffffff55341561154157600080fd5b610140513361018052610140516101a0526101a0516101805160065801610558565b6101405260005060053360e05260c052604060c020546004358082101561158957600080fd5b8082039050905061020052600654600435808210156115a757600080fd5b80820390509050610220526102005160053360e05260c052604060c02055610220516006556101405161016051610180516101a0516101c0516101e051610200516102205133610260526102005161028052610220516102a0526102a0516102805161026051600658016100a9565b61022052610200526101e0526101c0526101a052610180526101605261014052600050600060043511156116c7576012543b61165157600080fd5b600060006024632e1a7d4d610300526004356103205261031c60006012545af161167a57600080fd5b6020610420604463a9059cbb61038052336103a0526004356103c05261039c60006002545af16116a957600080fd5b601f3d116116b657600080fd5b600050610420516116c657600080fd5b5b60043561044052337f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243646020610440a2600062ffffff55005b63e6f1daf2600051141561171757336101405261174e565b6384e9bd7e600051141561174657600435602051811061173657600080fd5b602060046101403760005061174e565b600015611844575b62ffffff541561175d57600080fd5b600162ffffff55341561176f57600080fd5b61014051610140516101805260016101a0526101a0516101805160065801610324565b6101405260005060166101405160e05260c052604060c020546102005260206102c0604463a9059cbb6102205261014051610240526102005160176101405160e05260c052604060c02054808210156117ea57600080fd5b808203905090506102605261023c60006013545af161180857600080fd5b601f3d1161181557600080fd5b6000506102c05161182557600080fd5b6102005160176101405160e05260c052604060c02055600062ffffff55005b63d31f3f6d600051141561189057341561185d57600080fd5b600b546c01431e0fae6d7217caa0000000811061187957600080fd5b600c60c052602060c020015460005260206000f350005b63e369885360005114156118c05734156118a957600080fd5b60185433146118b757600080fd5b601a5415601a55005b636b441a40600051141561192f5734156118d957600080fd5b60043560205181106118ea57600080fd5b5060185433146118f957600080fd5b600435601955600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae60005114156119a557341561194857600080fd5b601854331461195657600080fd5b601954610140526000610140511861196d57600080fd5b6101405160185561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b630754617260005114156119cc5734156119be57600080fd5b60005460005260206000f350005b6376d8b11760005114156119f35734156119e557600080fd5b60015460005260206000f350005b6382c630666000511415611a1a573415611a0c57600080fd5b60025460005260206000f350005b63f77c47916000511415611a41573415611a3357600080fd5b60035460005260206000f350005b63dfe050316000511415611a68573415611a5a57600080fd5b60045460005260206000f350005b6370a082316000511415611aaf573415611a8157600080fd5b6004356020518110611a9257600080fd5b50600560043560e05260c052604060c0205460005260206000f350005b6318160ddd6000511415611ad6573415611ac857600080fd5b60065460005260206000f350005b63be5d1be96000511415611afd573415611aef57600080fd5b60075460005260206000f350005b63e15225366000511415611b64573415611b1657600080fd5b6004356020518110611b2757600080fd5b506024356020518110611b3957600080fd5b50600860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b6313ecb1ca6000511415611bab573415611b7d57600080fd5b6004356020518110611b8e57600080fd5b50600960043560e05260c052604060c0205460005260206000f350005b6317e280896000511415611bd2573415611bc457600080fd5b600a5460005260206000f350005b63ef78d4fd6000511415611bf9573415611beb57600080fd5b600b5460005260206000f350005b637598108c6000511415611c45573415611c1257600080fd5b6004356c01431e0fae6d7217caa00000008110611c2e57600080fd5b600c60c052602060c020015460005260206000f350005b63fec8ee0c6000511415611c91573415611c5e57600080fd5b6004356c01431e0fae6d7217caa00000008110611c7a57600080fd5b600d60c052602060c020015460005260206000f350005b63de263bfa6000511415611cd8573415611caa57600080fd5b6004356020518110611cbb57600080fd5b50600e60043560e05260c052604060c0205460005260206000f350005b639bd324f26000511415611d1f573415611cf157600080fd5b6004356020518110611d0257600080fd5b50600f60043560e05260c052604060c0205460005260206000f350005b63094007076000511415611d66573415611d3857600080fd5b6004356020518110611d4957600080fd5b50601060043560e05260c052604060c0205460005260206000f350005b63180692d06000511415611d8d573415611d7f57600080fd5b60115460005260206000f350005b63bf88a6ff6000511415611db4573415611da657600080fd5b60125460005260206000f350005b6316fa50b16000511415611ddb573415611dcd57600080fd5b60135460005260206000f350005b63aaa626b66000511415611e02573415611df457600080fd5b60145460005260206000f350005b6313fa13686000511415611e49573415611e1b57600080fd5b6004356020518110611e2c57600080fd5b50601560043560e05260c052604060c0205460005260206000f350005b639df4ed566000511415611e90573415611e6257600080fd5b6004356020518110611e7357600080fd5b50601660043560e05260c052604060c0205460005260206000f350005b63fd96044b6000511415611ed7573415611ea957600080fd5b6004356020518110611eba57600080fd5b50601760043560e05260c052604060c0205460005260206000f350005b63f851a4406000511415611efe573415611ef057600080fd5b60185460005260206000f350005b6317f7182a6000511415611f25573415611f1757600080fd5b60195460005260206000f350005b639c868ac06000511415611f4c573415611f3e57600080fd5b601a5460005260206000f350005b5b60006000fd5b61033061228303610330600039610330612283036000f300000000000000000000000064eda51d3ad40d56b9dfc5554e06f94e1dd786fd000000000000000000000000d061d61a4d941c39e5453435b6345dc261c2fce0000000000000000000000000af379f0228ad0d46bb7b4f38f9dc9bcc1ad0360c00000000000000000000000085eee30c52b0b379b046fb0f85f4f3dc3009afec0000000000000000000000003f4232107ff437bcd7ea9abc134ad553efeddaff
Deployed Bytecode
0x600436101561000d57611f4d565b600035601c52740100000000000000000000000000000000000000006020526f7fffffffffffffffffffffffffffffff6040527fffffffffffffffffffffffffffffffff8000000000000000000000000000000060605274012a05f1fffffffffffffffffffffffffdabf41c006080527ffffffffffffffffffffffffed5fa0e000000000000000000000000000000000060a05260001561031c575b6101a0526101405261016052610180526004546101c052602061028060246370a0823161020052610140516102205261021c6101c0515afa6100ea57600080fd5b601f3d116100f757600080fd5b600050610280516101e052602061032060046318160ddd6102c0526102dc6101c0515afa61012457600080fd5b601f3d1161013157600080fd5b600050610320516102a052610160516028808202821582848304141761015657600080fd5b809050905090506064808061016a57600080fd5b8204905090506103405260006102a05111156101ac57600c60c052602060c020546212750081818301101561019e57600080fd5b8082019050905042116101af565b60005b1561023b576103408051610180516101e05180820282158284830414176101d557600080fd5b809050905090506102a05180806101eb57600080fd5b820490509050603c808202821582848304141761020757600080fd5b809050905090506064808061021b57600080fd5b82049050905081818301101561023057600080fd5b808201905090508152505b6101605161034051808211156102515780610253565b815b905090506103405260096101405160e05260c052604060c02054610360526103405160096101405160e05260c052604060c02055600a546103405181818301101561029d57600080fd5b8082019050905061036051808210156102b557600080fd5b808203905090506103805261038051600a55610140516103a052610160516103c052610180516103e052610340516104005261038051610420527f7ecd84343f76a23d2227290e0288da3251b045541698e575a5515af4f04197a360a06103a0a16101a051565b600015610550575b6101805261014052610160526013546101a05260006101c052610160511561040c57602061026060246370a082316101e05230610200526101fc6101a0515afa61036d57600080fd5b601f3d1161037a57600080fd5b600050610260516101c0526012543b61039257600080fd5b600060006004633d18b9126102805261029c60006012545af16103b457600080fd5b602061036060246370a082316102e05230610300526102fc6101a0515afa6103db57600080fd5b601f3d116103e857600080fd5b600050610360516101c0518082101561040057600080fd5b808203905090506101c0525b60056101405160e05260c052604060c02054610380526006546103a05260006103c05260006103a051111561047d57670de0b6b3a76400006101c051808202821582848304141761045c57600080fd5b809050905090506103a051808061047257600080fd5b8204905090506103c0525b6014546103c05181818301101561049357600080fd5b808201905090506103e0526103e05160145560166101405160e05260c052604060c0208054610380516103e05160156101405160e05260c052604060c02054808210156104df57600080fd5b8082039050905080820282158284830414176104fa57600080fd5b80905090509050670de0b6b3a7640000808061051557600080fd5b82049050905081818301101561052a57600080fd5b808201905090508155506103e05160156101405160e05260c052604060c0205561018051565b600015610bf6575b6101805261014052610160526001546101a0526003546101c052600b546101e0526101e0516c01431e0fae6d7217caa0000000811061059657600080fd5b600c60c052602060c0200154610200526101e0516c01431e0fae6d7217caa000000081106105c357600080fd5b600d60c052602060c020015461022052601154610240526102405161026052600754610280526102005161028051101515610675576020610300600463b26b238e6102a0526102bc60006101a0515af161061c57600080fd5b601f3d1161062957600080fd5b6000506103005160075560206103806004632c4e722e6103205261033c6101a0515afa61065557600080fd5b601f3d1161066257600080fd5b6000506103805161026052610260516011555b6101c0513b61068357600080fd5b60006000602463615e52376103a052306103c0526103bc60006101c0515af16106ab57600080fd5b60096101405160e05260c052604060c0205461042052600a5461044052601a54156106d7576000610240525b61020051421115610a2f5761020051610460526102005162093a8081818301101561070157600080fd5b8082019050905062093a80808061071757600080fd5b82049050905062093a80808202821582848304141761073557600080fd5b80905090509050428082111561074b578061074d565b815b90509050610480526104a060006101f4818352015b61048051610460518082101561077757600080fd5b808203905090506104c05260206105a0604463d3078c946105005230610520526104605162093a8080806107aa57600080fd5b82049050905062093a8080820282158284830414176107c857600080fd5b809050905090506105405261051c6101c0515afa6107e557600080fd5b601f3d116107f257600080fd5b6000506105a0516104e05260006104405111156109cc57610460516102805110151561082657610480516102805110610829565b60005b15610955576102208051610240516104e051808202821582848304141761084f57600080fd5b8090509050905061028051610460518082101561086b57600080fd5b80820390509050808202821582848304141761088657600080fd5b8090509050905061044051808061089c57600080fd5b8204905090508181830110156108b157600080fd5b8082019050905081525061026051610240526102208051610240516104e05180820282158284830414176108e457600080fd5b8090509050905061048051610280518082101561090057600080fd5b80820390509050808202821582848304141761091b57600080fd5b8090509050905061044051808061093157600080fd5b82049050905081818301101561094657600080fd5b808201905090508152506109cb565b6102208051610240516104e051808202821582848304141761097657600080fd5b809050905090506104c051808202821582848304141761099557600080fd5b809050905090506104405180806109ab57600080fd5b8204905090508181830110156109c057600080fd5b808201905090508152505b5b426104805114156109dc57610a2c565b61048051610460526104805162093a808181830110156109fb57600080fd5b808201905090504280821115610a115780610a13565b815b90509050610480525b8151600101808352811415610762575b50505b6101e08051600160605181830180604051901315610a4c57600080fd5b8091901215610a5a57600080fd5b905090508152506101e051600b55426101e0516c01431e0fae6d7217caa00000008110610a8657600080fd5b600c60c052602060c0200155610220516101e0516c01431e0fae6d7217caa00000008110610ab357600080fd5b600d60c052602060c020015560106101405160e05260c052604060c02080546104205161022051600e6101405160e05260c052604060c0205480821015610af957600080fd5b808203905090508082028215828483041417610b1457600080fd5b80905090509050670de0b6b3a76400008080610b2f57600080fd5b820490509050818183011015610b4457600080fd5b8082019050905081555061022051600e6101405160e05260c052604060c0205542600f6101405160e05260c052604060c020556101406105c0525b6105c0515160206105c051016105c0526104606105c0511015610ba157610b7f565b610140516105e0526101605161060052610600516105e05160065801610324565b6104406105c0525b6105c0515260206105c051036105c0526101406105c051101515610bed57610bca565b60005061018051565b634b8200936000511415610ccb573415610c0f57600080fd5b6004356020518110610c2057600080fd5b50600435331415610c32576001610c38565b60005433145b5b610c4257600080fd5b60043561014052600161016052610160516101405160065801610558565b6000506101405161016051610180516101a0516004356101e052600560043560e05260c052604060c02054610200526006546102205261022051610200516101e051600658016100a9565b6101a052610180526101605261014052600050600160005260206000f350005b63331345836000511415610d88573415610ce457600080fd5b6004356020518110610cf557600080fd5b5060043561014052600161016052610160516101405160065801610558565b600050601060043560e05260c052604060c0205460206102606044638b752bb06101c0526004356101e05230610200526101dc6000545afa610d5557600080fd5b601f3d11610d6257600080fd5b6000506102605180821015610d7657600080fd5b8082039050905060005260206000f350005b63d2797b596000511415610f15573415610da157600080fd5b6004356020518110610db257600080fd5b5060206101e06024628cc26261016052306101805261017c6012545afa610dd857600080fd5b601f3d11610de557600080fd5b6000506101e05161014052600560043560e05260c052604060c0205461020052600654610220526000610240526000610220511115610e6057670de0b6b3a7640000610140518082028215828483041417610e3f57600080fd5b80905090509050610220518080610e5557600080fd5b820490509050610240525b60145461024051818183011015610e7657600080fd5b8082019050905061026052601660043560e05260c052604060c020546102005161026051601560043560e05260c052604060c0205480821015610eb857600080fd5b808203905090508082028215828483041417610ed357600080fd5b80905090509050670de0b6b3a76400008080610eee57600080fd5b820490509050818183011015610f0357600080fd5b8082019050905060005260206000f350005b6396c5517560005114156111a7573415610f2e57600080fd5b6004356020518110610f3f57600080fd5b5060045461014052600f60043560e05260c052604060c020546101605260206102e0604463da020a1861024052600435610260526020610220602463010ae7576101a0526004356101c0526101bc610140515afa610f9c57600080fd5b601f3d11610fa957600080fd5b600050610220516102805261025c610140515afa610fc657600080fd5b601f3d11610fd357600080fd5b6000506102e05161018052600560043560e05260c052604060c0205461030052602061044060246370a082316103c0526004356103e0526103dc6004545afa61101b57600080fd5b601f3d1161102857600080fd5b60005061044051151561103c576001611046565b6101605161018051115b5b61105057600080fd5b610300516028808202821582848304141761106a57600080fd5b809050905090506064808061107e57600080fd5b820490509050600960043560e05260c052604060c020541161109f57600080fd5b610140610460525b610460515160206104605101610460526104606104605110156110c9576110a7565b6004356104805260016104a0526104a0516104805160065801610558565b610440610460525b6104605152602061046051036104605261014061046051101515611112576110ef565b600050610140610500525b6105005151602061050051016105005261050061050051101561113f5761111d565b60043561052052600560043560e05260c052604060c020546105405260065461056052610560516105405161052051600658016100a9565b6104e0610500525b61050051526020610500510361050052610140610500511015156111a25761117f565b600050005b631d2747d460005114156112055734156111c057600080fd5b60043560205181106111d157600080fd5b50602435600281106111e257600080fd5b50602435600860043560e05260c052604060c0203360e05260c052604060c02055005b63b6b55f25600051141561121d573361014052611254565b636e553f65600051141561124c57602435602051811061123c57600080fd5b6020602461014037600050611254565b6000156114d1575b62ffffff541561126357600080fd5b600162ffffff55341561127557600080fd5b336101405118156112e8576308c379a061016052602061018052600c6101a0527f4e6f7420617070726f76656400000000000000000000000000000000000000006101c0526101a05060083360e05260c052604060c0206101405160e05260c052604060c020546112e757606461017cfd5b5b610140516101405161022052600161024052610240516102205160065801610558565b61014052600050600060043518156114965760056101405160e05260c052604060c0205460043581818301101561134157600080fd5b808201905090506102a05260065460043581818301101561136157600080fd5b808201905090506102c0526102a05160056101405160e05260c052604060c020556102c0516006556101406102e0525b6102e0515160206102e051016102e0526102e06102e05110156113b357611391565b61014051610300526102a051610320526102c05161034052610340516103205161030051600658016100a9565b6102c06102e0525b6102e0515260206102e051036102e0526101406102e05110151561140b576113e8565b600050602061046060646323b872dd6103a052336103c052306103e052600435610400526103bc60006002545af161144257600080fd5b601f3d1161144f57600080fd5b6000506104605161145f57600080fd5b6012543b61146c57600080fd5b60006000602463a694fc3a610480526004356104a05261049c60006012545af161149557600080fd5b5b60043561050052610140517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c6020610500a2600062ffffff55005b632e1a7d4d60005114156114ea57600161014052611520565b6338d074366000511415611518576024356002811061150857600080fd5b6020602461014037600050611520565b6000156116ff575b62ffffff541561152f57600080fd5b600162ffffff55341561154157600080fd5b610140513361018052610140516101a0526101a0516101805160065801610558565b6101405260005060053360e05260c052604060c020546004358082101561158957600080fd5b8082039050905061020052600654600435808210156115a757600080fd5b80820390509050610220526102005160053360e05260c052604060c02055610220516006556101405161016051610180516101a0516101c0516101e051610200516102205133610260526102005161028052610220516102a0526102a0516102805161026051600658016100a9565b61022052610200526101e0526101c0526101a052610180526101605261014052600050600060043511156116c7576012543b61165157600080fd5b600060006024632e1a7d4d610300526004356103205261031c60006012545af161167a57600080fd5b6020610420604463a9059cbb61038052336103a0526004356103c05261039c60006002545af16116a957600080fd5b601f3d116116b657600080fd5b600050610420516116c657600080fd5b5b60043561044052337f884edad9ce6fa2440d8a54cc123490eb96d2768479d49ff9c7366125a94243646020610440a2600062ffffff55005b63e6f1daf2600051141561171757336101405261174e565b6384e9bd7e600051141561174657600435602051811061173657600080fd5b602060046101403760005061174e565b600015611844575b62ffffff541561175d57600080fd5b600162ffffff55341561176f57600080fd5b61014051610140516101805260016101a0526101a0516101805160065801610324565b6101405260005060166101405160e05260c052604060c020546102005260206102c0604463a9059cbb6102205261014051610240526102005160176101405160e05260c052604060c02054808210156117ea57600080fd5b808203905090506102605261023c60006013545af161180857600080fd5b601f3d1161181557600080fd5b6000506102c05161182557600080fd5b6102005160176101405160e05260c052604060c02055600062ffffff55005b63d31f3f6d600051141561189057341561185d57600080fd5b600b546c01431e0fae6d7217caa0000000811061187957600080fd5b600c60c052602060c020015460005260206000f350005b63e369885360005114156118c05734156118a957600080fd5b60185433146118b757600080fd5b601a5415601a55005b636b441a40600051141561192f5734156118d957600080fd5b60043560205181106118ea57600080fd5b5060185433146118f957600080fd5b600435601955600435610140527f2f56810a6bf40af059b96d3aea4db54081f378029a518390491093a7b67032e96020610140a1005b636a1c05ae60005114156119a557341561194857600080fd5b601854331461195657600080fd5b601954610140526000610140511861196d57600080fd5b6101405160185561014051610160527febee2d5739011062cb4f14113f3b36bf0ffe3da5c0568f64189d1012a11891056020610160a1005b630754617260005114156119cc5734156119be57600080fd5b60005460005260206000f350005b6376d8b11760005114156119f35734156119e557600080fd5b60015460005260206000f350005b6382c630666000511415611a1a573415611a0c57600080fd5b60025460005260206000f350005b63f77c47916000511415611a41573415611a3357600080fd5b60035460005260206000f350005b63dfe050316000511415611a68573415611a5a57600080fd5b60045460005260206000f350005b6370a082316000511415611aaf573415611a8157600080fd5b6004356020518110611a9257600080fd5b50600560043560e05260c052604060c0205460005260206000f350005b6318160ddd6000511415611ad6573415611ac857600080fd5b60065460005260206000f350005b63be5d1be96000511415611afd573415611aef57600080fd5b60075460005260206000f350005b63e15225366000511415611b64573415611b1657600080fd5b6004356020518110611b2757600080fd5b506024356020518110611b3957600080fd5b50600860043560e05260c052604060c02060243560e05260c052604060c0205460005260206000f350005b6313ecb1ca6000511415611bab573415611b7d57600080fd5b6004356020518110611b8e57600080fd5b50600960043560e05260c052604060c0205460005260206000f350005b6317e280896000511415611bd2573415611bc457600080fd5b600a5460005260206000f350005b63ef78d4fd6000511415611bf9573415611beb57600080fd5b600b5460005260206000f350005b637598108c6000511415611c45573415611c1257600080fd5b6004356c01431e0fae6d7217caa00000008110611c2e57600080fd5b600c60c052602060c020015460005260206000f350005b63fec8ee0c6000511415611c91573415611c5e57600080fd5b6004356c01431e0fae6d7217caa00000008110611c7a57600080fd5b600d60c052602060c020015460005260206000f350005b63de263bfa6000511415611cd8573415611caa57600080fd5b6004356020518110611cbb57600080fd5b50600e60043560e05260c052604060c0205460005260206000f350005b639bd324f26000511415611d1f573415611cf157600080fd5b6004356020518110611d0257600080fd5b50600f60043560e05260c052604060c0205460005260206000f350005b63094007076000511415611d66573415611d3857600080fd5b6004356020518110611d4957600080fd5b50601060043560e05260c052604060c0205460005260206000f350005b63180692d06000511415611d8d573415611d7f57600080fd5b60115460005260206000f350005b63bf88a6ff6000511415611db4573415611da657600080fd5b60125460005260206000f350005b6316fa50b16000511415611ddb573415611dcd57600080fd5b60135460005260206000f350005b63aaa626b66000511415611e02573415611df457600080fd5b60145460005260206000f350005b6313fa13686000511415611e49573415611e1b57600080fd5b6004356020518110611e2c57600080fd5b50601560043560e05260c052604060c0205460005260206000f350005b639df4ed566000511415611e90573415611e6257600080fd5b6004356020518110611e7357600080fd5b50601660043560e05260c052604060c0205460005260206000f350005b63fd96044b6000511415611ed7573415611ea957600080fd5b6004356020518110611eba57600080fd5b50601760043560e05260c052604060c0205460005260206000f350005b63f851a4406000511415611efe573415611ef057600080fd5b60185460005260206000f350005b6317f7182a6000511415611f25573415611f1757600080fd5b60195460005260206000f350005b639c868ac06000511415611f4c573415611f3e57600080fd5b601a5460005260206000f350005b5b60006000fd
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000064eda51d3ad40d56b9dfc5554e06f94e1dd786fd000000000000000000000000d061d61a4d941c39e5453435b6345dc261c2fce0000000000000000000000000af379f0228ad0d46bb7b4f38f9dc9bcc1ad0360c00000000000000000000000085eee30c52b0b379b046fb0f85f4f3dc3009afec0000000000000000000000003f4232107ff437bcd7ea9abc134ad553efeddaff
-----Decoded View---------------
Arg [0] : lp_addr (address): 0x64eda51d3Ad40D56b9dFc5554E06F94e1Dd786Fd
Arg [1] : _minter (address): 0xd061D61a4d941c39E5453435B6345Dc261C2fcE0
Arg [2] : _reward_contract (address): 0xAF379f0228ad0d46bB7B4f38f9dc9bCC1ad0360c
Arg [3] : _rewarded_token (address): 0x85Eee30c52B0b379b046Fb0F85F4f3Dc3009aFEC
Arg [4] : _admin (address): 0x3f4232107FF437bCD7ea9aBC134aD553eFEDDaff
-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 00000000000000000000000064eda51d3ad40d56b9dfc5554e06f94e1dd786fd
Arg [1] : 000000000000000000000000d061d61a4d941c39e5453435b6345dc261c2fce0
Arg [2] : 000000000000000000000000af379f0228ad0d46bb7b4f38f9dc9bcc1ad0360c
Arg [3] : 00000000000000000000000085eee30c52b0b379b046fb0f85f4f3dc3009afec
Arg [4] : 0000000000000000000000003f4232107ff437bcd7ea9abc134ad553efeddaff
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $0.118352 | 807,726.1908 | $95,596.01 |
Loading...
Loading
[ 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.