More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 347 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Redeem | 21849489 | 16 hrs ago | IN | 0.02134074 ETH | 0.00012212 | ||||
Redeem | 21829158 | 3 days ago | IN | 0.17210347 ETH | 0.00013007 | ||||
Redeem | 21800780 | 7 days ago | IN | 0.00027607 ETH | 0.00014701 | ||||
Redeem | 21787268 | 9 days ago | IN | 0.00265013 ETH | 0.00014273 | ||||
Redeem | 21783527 | 9 days ago | IN | 0.04980832 ETH | 0.00026175 | ||||
Redeem | 21776569 | 10 days ago | IN | 0.19276759 ETH | 0.00018921 | ||||
Redeem | 21756072 | 13 days ago | IN | 0.04020292 ETH | 0.00043417 | ||||
Redeem | 21755580 | 13 days ago | IN | 0.00282293 ETH | 0.00029286 | ||||
Redeem | 21749842 | 14 days ago | IN | 0.00965724 ETH | 0.00030751 | ||||
Redeem | 21748936 | 14 days ago | IN | 0.02177935 ETH | 0.0002462 | ||||
Redeem | 21690395 | 22 days ago | IN | 0.075884 ETH | 0.00147462 | ||||
Redeem | 21656437 | 27 days ago | IN | 0.0183859 ETH | 0.00187888 | ||||
Redeem | 21598307 | 35 days ago | IN | 0.00430123 ETH | 0.00051847 | ||||
Redeem | 21590766 | 36 days ago | IN | 0.00516952 ETH | 0.00058356 | ||||
Redeem | 21569636 | 39 days ago | IN | 0.27723158 ETH | 0.00110885 | ||||
Redeem | 21541099 | 43 days ago | IN | 0.19045962 ETH | 0.00156712 | ||||
Redeem | 21520349 | 46 days ago | IN | 0.01702133 ETH | 0.00051543 | ||||
Redeem | 21519288 | 46 days ago | IN | 0.61464168 ETH | 0.00083597 | ||||
Redeem | 21519278 | 46 days ago | IN | 0.40443564 ETH | 0.00080716 | ||||
Redeem | 21484732 | 51 days ago | IN | 0.00835681 ETH | 0.00114582 | ||||
Redeem | 21469775 | 53 days ago | IN | 0.12953344 ETH | 0.00084994 | ||||
Redeem | 21463552 | 54 days ago | IN | 0.01004766 ETH | 0.0009303 | ||||
Redeem | 21462162 | 54 days ago | IN | 0.01679323 ETH | 0.00076215 | ||||
Redeem | 21448436 | 56 days ago | IN | 0.00821361 ETH | 0.00110557 | ||||
Redeem | 21448357 | 56 days ago | IN | 0.01919751 ETH | 0.00108863 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
21849489 | 16 hrs ago | 0.02134074 ETH | ||||
21836579 | 2 days ago | 0.07766581 ETH | ||||
21836579 | 2 days ago | 0.07766581 ETH | ||||
21832437 | 3 days ago | 0.10495214 ETH | ||||
21832437 | 3 days ago | 0.10495214 ETH | ||||
21829158 | 3 days ago | 0.17210347 ETH | ||||
21828060 | 3 days ago | 0.09260115 ETH | ||||
21828060 | 3 days ago | 0.09260115 ETH | ||||
21800780 | 7 days ago | 0.00027607 ETH | ||||
21787268 | 9 days ago | 0.00265013 ETH | ||||
21783527 | 9 days ago | 0.04980832 ETH | ||||
21778071 | 10 days ago | 0.05578816 ETH | ||||
21778071 | 10 days ago | 0.05578816 ETH | ||||
21776569 | 10 days ago | 0.19276759 ETH | ||||
21756072 | 13 days ago | 0.04020292 ETH | ||||
21755580 | 13 days ago | 0.00282293 ETH | ||||
21751314 | 14 days ago | 0.15438816 ETH | ||||
21751314 | 14 days ago | 0.15438816 ETH | ||||
21749842 | 14 days ago | 0.00965724 ETH | ||||
21748936 | 14 days ago | 0.02177935 ETH | ||||
21736019 | 16 days ago | 0.04429104 ETH | ||||
21736019 | 16 days ago | 0.04429104 ETH | ||||
21727808 | 17 days ago | 0.09941875 ETH | ||||
21727808 | 17 days ago | 0.09941875 ETH | ||||
21699984 | 21 days ago | 0.05145926 ETH |
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
Vyper_contract
Compiler Version
vyper:0.3.10
Contract Source Code (Vyper language format)
# @version 0.3.10 from vyper.interfaces import ERC20 interface AggregatorV3Interface: def latestRoundData() -> (uint80, int256, uint256, uint256, uint80): view interface IDYFI: def burn(owner: address, amount: uint256): nonpayable UNIT: constant(uint256) = 10**18 SLIPPAGE_TOLERANCE: constant(uint256) = 3 SLIPPAGE_DENOMINATOR: constant(uint256) = 1000 DYFI: immutable(IDYFI) YFI: immutable(ERC20) VEYFI: immutable(ERC20) PRICE_FEED: immutable(AggregatorV3Interface) # @dev Returns the address of the current owner. owner: public(address) # @dev Returns the address of the pending owner. pending_owner: public(address) # @dev when the contract is killed, redemptions aren't possible killed: public(bool) # @dev recipient of the ETH used for redemptions payee: public(address) # @dev scaling factor parameters packed into a single slot packed_scaling_factor: uint256 # @dev Emitted when contract is killed event Killed: yfi_recovered: uint256 event Sweep: token: indexed(address) amount: uint256 # @dev Emitted when the ownership transfer from # `previous_owner` to `pending_owner` is initiated. event PendingOwnershipTransfer: previous_owner: indexed(address) pending_owner: indexed(address) # @dev Emitted when the ownership is transferred # from `previous_owner` to `new_owner`. event OwnershipTransferred: previous_owner: indexed(address) new_owner: indexed(address) event SetPayee: payee: indexed(address) MASK: constant(uint256) = 2**64 - 1 # powers of 10 E3: constant(int256) = 1_000 E6: constant(int256) = E3 * E3 E9: constant(int256) = E3 * E6 E12: constant(int256) = E3 * E9 E15: constant(int256) = E3 * E12 E17: constant(int256) = 100 * E15 E18: constant(int256) = E3 * E15 E20: constant(int256) = 100 * E18 MIN_NAT_EXP: constant(int256) = -41 * E18 MAX_NAT_EXP: constant(int256) = 130 * E18 # x_n = 2^(7-n), a_n = exp(x_n) # in 20 decimals for n >= 2 X0: constant(int256) = 128 * E18 # 18 decimals A0: constant(int256) = 38_877_084_059_945_950_922_200 * E15 * E18 # no decimals X1: constant(int256) = X0 / 2 # 18 decimals A1: constant(int256) = 6_235_149_080_811_616_882_910 * E6 # no decimals X2: constant(int256) = X1 * 100 / 2 A2: constant(int256) = 7_896_296_018_268_069_516_100 * E12 X3: constant(int256) = X2 / 2 A3: constant(int256) = 888_611_052_050_787_263_676 * E6 X4: constant(int256) = X3 / 2 A4: constant(int256) = 298_095_798_704_172_827_474 * E3 X5: constant(int256) = X4 / 2 A5: constant(int256) = 5_459_815_003_314_423_907_810 X6: constant(int256) = X5 / 2 A6: constant(int256) = 738_905_609_893_065_022_723 X7: constant(int256) = X6 / 2 A7: constant(int256) = 271_828_182_845_904_523_536 X8: constant(int256) = X7 / 2 A8: constant(int256) = 164_872_127_070_012_814_685 X9: constant(int256) = X8 / 2 A9: constant(int256) = 128_402_541_668_774_148_407 X10: constant(int256) = X9 / 2 A10: constant(int256) = 11_331_4845_306_682_631_683 X11: constant(int256) = X10 / 2 A11: constant(int256) = 1_064_49_445_891_785_942_956 @external def __init__( yfi: address, d_yfi: address, ve_yfi: address, owner: address, price_feed: address, scaling_factor: uint256, ): assert scaling_factor >= UNIT and scaling_factor <= 12 * UNIT YFI = ERC20(yfi) DYFI = IDYFI(d_yfi) VEYFI = ERC20(ve_yfi) PRICE_FEED = AggregatorV3Interface(price_feed) self._transfer_ownership(owner) self.payee = owner self.packed_scaling_factor = shift(scaling_factor, 128) | shift(scaling_factor, 192) @payable @external def redeem(amount: uint256, recipient: address = msg.sender) -> uint256: """ @notice Redeem your dYFI for YFI using ETH. @dev Redemption tolerates a 0.3% negative or positive slippage. @param amount amount of dYFI to spend @param recipient of the exercised YFI """ self._check_killed() assert YFI.balanceOf(self) >= amount, "not enough YFI" eth_required: uint256 = self._eth_required(amount) assert eth_required > 0 tolerance: uint256 = eth_required * SLIPPAGE_TOLERANCE / SLIPPAGE_DENOMINATOR if msg.value < (eth_required - tolerance) or msg.value > (eth_required + tolerance): raise "price out of tolerance" DYFI.burn(msg.sender, amount) raw_call(self.payee, b"", value=msg.value) YFI.transfer(recipient, amount) return amount @external @view def discount() -> uint256: """ @notice Get the current dYFI redemption discount @return Redemption discount (18 decimals) @dev Discount formula is `1/(1 + 10 e^(4.7(s*x - 1)))`, with `x = veyfi supply / yfi supply` """ return self._discount() @internal @view def _discount() -> uint256: yfi_supply: uint256 = YFI.totalSupply() veyfi_supply: uint256 = VEYFI.totalSupply() x: int256 = convert(veyfi_supply * UNIT / yfi_supply, int256) x = self._exp(47 * (self._scaling_factor()[0] * x / E18 - E18) / 10) return convert(E18 * E18 / (E18 + 10 * x), uint256) @external @view def eth_required(amount: uint256) -> uint256: """ @notice Estimate the required amount of ETH to redeem the amount of dYFI for YFI @param amount Amount of dYFI @return Amount of ETH required """ return self._eth_required(amount) @internal @view def _eth_required(amount: uint256) -> uint256: return amount * self._get_latest_price() / UNIT * (UNIT - self._discount()) / UNIT @external @view def get_latest_price() -> uint256: """ @notice Get the latest price of YFI in ETH @return Price of YFI in ETH (18 decimals) """ return self._get_latest_price() @internal @view def _get_latest_price() -> uint256: round_id: uint80 = 0 price: int256 = 0 started_at: uint256 = 0 updated_at: uint256 = 0 answered_in_round: uint80 = 0 (round_id, price, started_at, updated_at, answered_in_round) = PRICE_FEED.latestRoundData() assert updated_at + 3600 > block.timestamp, "price too old" return convert(price, uint256) @external @view def scaling_factor() -> uint256: """ @notice Get the current discount curve scaling factor @return Scaling factor (18 decimals) """ return convert(self._scaling_factor()[0], uint256) @external @view def scaling_factor_ramp() -> (uint256, uint256, uint256, uint256): """ @notice Get the current discount curve scaling factor ramp parameters @return Tuple of ramp start timestamp, ramp end timestamp, ramp start scaling factor, ramp end scaling factor """ ramp_start: uint256 = 0 ramp_end: uint256 = 0 old: int256 = 0 new: int256 = 0 ramp_start, ramp_end, old, new = self._unpack_scaling_factor(self.packed_scaling_factor) return ramp_start, ramp_end, convert(old, uint256), convert(new, uint256) @internal @view def _scaling_factor() -> (int256, bool): ramp_start: uint256 = 0 ramp_end: uint256 = 0 old: int256 = 0 new: int256 = 0 ramp_start, ramp_end, old, new = self._unpack_scaling_factor(self.packed_scaling_factor) if ramp_end <= block.timestamp: return new, False if ramp_start > block.timestamp: return old, False duration: int256 = convert(ramp_end - ramp_start, int256) time: int256 = convert(block.timestamp - ramp_start, int256) return old + (new - old) * time / duration, True @external def set_payee(new_payee: address): """ @dev set the payee of the ETH used for redemptions @param new_payee the new payee """ self._check_owner() assert new_payee != empty(address) self.payee = new_payee log SetPayee(new_payee) @external def start_ramp(new: uint256, duration: uint256 = 604_800, start: uint256 = block.timestamp): """ @notice Start ramping of scaling factor @param new New scaling factor (18 decimals) @param duration Ramp duration (seconds) @param start Ramp start timestamp """ self._check_owner() assert new >= UNIT and new <= 12 * UNIT assert start >= block.timestamp scaling_factor: int256 = 0 active: bool = False scaling_factor, active = self._scaling_factor() assert not active self.packed_scaling_factor = self._pack_scaling_factor( start, start + duration, scaling_factor, convert(new, int256) ) @external def stop_ramp(): """ @notice Stop a currently active ramp """ self._check_owner() scaling_factor: int256 = 0 active: bool = False scaling_factor, active = self._scaling_factor() assert active self.packed_scaling_factor = self._pack_scaling_factor(0, 0, scaling_factor, scaling_factor) @external def kill(): """ @dev stop the contract from being used and reclaim YFI """ self._check_killed() self._check_owner() self.killed = True yfi_balance: uint256 = YFI.balanceOf(self) YFI.transfer(self.owner, yfi_balance) log Killed(yfi_balance) @internal def _check_killed(): """ @dev Throws if contract was killed """ assert self.killed == False, "killed" @external def sweep(token: address) -> uint256: assert self.killed or token != YFI.address, "protected token" self._check_owner() amount: uint256 = 0 if token == empty(address): amount = self.balance raw_call(self.owner, b"", value=amount) else: amount = ERC20(token).balanceOf(self) assert ERC20(token).transfer(self.owner, amount, default_return_value=True) log Sweep(token, amount) return amount ### Ownable2Step ### @external def transfer_ownership(new_owner: address): """ @dev Starts the ownership transfer of the contract to a new account `new_owner`. @notice Note that this function can only be called by the current `owner`. Also, there is no security risk in setting `new_owner` to the zero address as the default value of `pending_owner` is in fact already the zero address and the zero address cannot call `accept_ownership`. Eventually, the function replaces the pending transfer if there is one. @param new_owner The 20-byte address of the new owner. """ self._check_owner() self.pending_owner = new_owner log PendingOwnershipTransfer(self.owner, new_owner) @external def accept_ownership(): """ @dev The new owner accepts the ownership transfer. @notice Note that this function can only be called by the current `pending_owner`. """ assert self.pending_owner == msg.sender, "Ownable2Step: caller is not the new owner" self._transfer_ownership(msg.sender) @internal def _check_owner(): """ @dev Throws if the sender is not the owner. """ assert msg.sender == self.owner, "Ownable2Step: caller is not the owner" @internal def _transfer_ownership(new_owner: address): """ @dev Transfers the ownership of the contract to a new account `new_owner` and deletes any pending owner. @notice This is an `internal` function without access restriction. @param new_owner The 20-byte address of the new owner. """ self.pending_owner = empty(address) old_owner: address = self.owner self.owner = new_owner log OwnershipTransferred(old_owner, new_owner) @internal @pure def _pack_scaling_factor(_ramp_start: uint256, _ramp_end: uint256, _old: int256, _new: int256) -> uint256: assert _ramp_start <= MASK and _ramp_end <= MASK assert _old <= convert(MASK, int256) and _new > 0 and _new <= convert(MASK, int256) return _ramp_start | shift(_ramp_end, 64) | \ shift(convert(_old, uint256), 128) | shift(convert(_new, uint256), 192) @internal @pure def _unpack_scaling_factor(_packed: uint256) -> (uint256, uint256, int256, int256): return _packed & MASK, shift(_packed, -64) & MASK, \ convert(shift(_packed, -128) & MASK, int256), convert(shift(_packed, -192), int256) # From https://github.com/yearn/yETH/blob/main/contracts/Pool.vy, based on Balancer code @internal @pure def _exp(_x: int256) -> int256: """ @notice Calculate natural exponent `e^x` @param _x Exponent (18 decimals) @return Natural exponent in 18 decimals """ assert _x >= MIN_NAT_EXP and _x <= MAX_NAT_EXP if _x < 0: # exp(-x) = 1/exp(x) return unsafe_mul(E18, E18) / self.__exp(-_x) return self.__exp(_x) @internal @pure def __exp(_x: int256) -> int256: """ @notice Calculate natural exponent `e^x`, assuming exponent is positive @param _x Exponent (18 decimals) @return Natural exponent in 18 decimals @dev Caller should perform bounds checks before calling this function """ # e^x = e^(sum(k_n x_n) + rem) # = product(e^(k_n x_n)) * e^(rem) # = product(a_n^k_n) * e^(rem) # k_n = {0,1}, x_n = 2^(7-n), a_n = exp(x_n) x: int256 = _x # subtract out x_ns f: int256 = 1 if x >= X0: x = unsafe_sub(x, X0) f = A0 elif x >= X1: x = unsafe_sub(x, X1) f = A1 # other terms are in 20 decimals x = unsafe_mul(x, 100) p: int256 = E20 if x >= X2: x = unsafe_sub(x, X2) p = unsafe_div(unsafe_mul(p, A2), E20) # p * A2 / E20 if x >= X3: x = unsafe_sub(x, X3) p = unsafe_div(unsafe_mul(p, A3), E20) if x >= X4: x = unsafe_sub(x, X4) p = unsafe_div(unsafe_mul(p, A4), E20) if x >= X5: x = unsafe_sub(x, X5) p = unsafe_div(unsafe_mul(p, A5), E20) if x >= X6: x = unsafe_sub(x, X6) p = unsafe_div(unsafe_mul(p, A6), E20) if x >= X7: x = unsafe_sub(x, X7) p = unsafe_div(unsafe_mul(p, A7), E20) if x >= X8: x = unsafe_sub(x, X8) p = unsafe_div(unsafe_mul(p, A8), E20) if x >= X9: x = unsafe_sub(x, X9) p = unsafe_div(unsafe_mul(p, A9), E20) # x < X9 (0.25), taylor series for remainder # c = e^x = sum(x^n / n!) n: int256 = x c: int256 = unsafe_add(E20, x) n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 2) # n * x / E20 / 2 c = unsafe_add(c, n) n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 3) c = unsafe_add(c, n) n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 4) c = unsafe_add(c, n) n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 5) c = unsafe_add(c, n) n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 6) c = unsafe_add(c, n) n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 7) c = unsafe_add(c, n) n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 8) c = unsafe_add(c, n) n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 9) c = unsafe_add(c, n) n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 10) c = unsafe_add(c, n) n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 11) c = unsafe_add(c, n) n = unsafe_div(unsafe_div(unsafe_mul(n, x), E20), 12) c = unsafe_add(c, n) # p * c / E20 * f / 100 return unsafe_div(unsafe_mul(unsafe_div(unsafe_mul(p, c), E20), f), 100)
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"name":"Killed","inputs":[{"name":"yfi_recovered","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"Sweep","inputs":[{"name":"token","type":"address","indexed":true},{"name":"amount","type":"uint256","indexed":false}],"anonymous":false,"type":"event"},{"name":"PendingOwnershipTransfer","inputs":[{"name":"previous_owner","type":"address","indexed":true},{"name":"pending_owner","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"OwnershipTransferred","inputs":[{"name":"previous_owner","type":"address","indexed":true},{"name":"new_owner","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"name":"SetPayee","inputs":[{"name":"payee","type":"address","indexed":true}],"anonymous":false,"type":"event"},{"stateMutability":"nonpayable","type":"constructor","inputs":[{"name":"yfi","type":"address"},{"name":"d_yfi","type":"address"},{"name":"ve_yfi","type":"address"},{"name":"owner","type":"address"},{"name":"price_feed","type":"address"},{"name":"scaling_factor","type":"uint256"}],"outputs":[]},{"stateMutability":"payable","type":"function","name":"redeem","inputs":[{"name":"amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"payable","type":"function","name":"redeem","inputs":[{"name":"amount","type":"uint256"},{"name":"recipient","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"discount","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"eth_required","inputs":[{"name":"amount","type":"uint256"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"get_latest_price","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"scaling_factor","inputs":[],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"view","type":"function","name":"scaling_factor_ramp","inputs":[],"outputs":[{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"set_payee","inputs":[{"name":"new_payee","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"start_ramp","inputs":[{"name":"new","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"start_ramp","inputs":[{"name":"new","type":"uint256"},{"name":"duration","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"start_ramp","inputs":[{"name":"new","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"start","type":"uint256"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"stop_ramp","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"kill","inputs":[],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"sweep","inputs":[{"name":"token","type":"address"}],"outputs":[{"name":"","type":"uint256"}]},{"stateMutability":"nonpayable","type":"function","name":"transfer_ownership","inputs":[{"name":"new_owner","type":"address"}],"outputs":[]},{"stateMutability":"nonpayable","type":"function","name":"accept_ownership","inputs":[],"outputs":[]},{"stateMutability":"view","type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"pending_owner","inputs":[],"outputs":[{"name":"","type":"address"}]},{"stateMutability":"view","type":"function","name":"killed","inputs":[],"outputs":[{"name":"","type":"bool"}]},{"stateMutability":"view","type":"function","name":"payee","inputs":[],"outputs":[{"name":"","type":"address"}]}]
Contract Creation Code
61168f51503461014657602061178f5f395f518060a01c6101465760805260206117af5f395f518060a01c6101465760a05260206117cf5f395f518060a01c6101465760c05260206117ef5f395f518060a01c6101465760e052602061180f5f395f518060a01c6101465761010052670de0b6b3a7640000602061182f5f395f51101561008c575f6100a1565b67a688906bd8b00000602061182f5f395f5111155b156101465760805161164f5260a05161162f5260c05161166f526101005161168f5260e0516040526100d161010b565b60e051600355602061182f5f395f518060c01b9050602061182f5f395f518060801b90501760045561162f61014a610000396116af610000f35b5f6001555f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b5f80fd5f3560e01c60026014820660011b61160701601e395f51565b638da5cb5b81186100335734611603575f5460405260206040f35b63ae90b2138118610a0e57346116035760035460405260206040f3610a0e565b637f4ec4c38118610a0e57346116035760015460405260206040f3610a0e565b631f3a0e41811861008f57346116035760025460405260206040f35b6341c0e1b58118610a0e5734611603576100a7610a4d565b6100af6114dc565b6001600255602061164f5f395f516370a0823160c0523060e052602060c0602460dc845afa6100e0573d5f5f3e3d5ffd5b60203d106116035760c090505160a052602061164f5f395f5163a9059cbb60c0525f5460e05260a05161010052602060c0604460dc5f855af1610125573d5f5f3e3d5ffd5b60203d106116035760c0518060011c611603576101205261012050507ff4a991ad9e7f9711696f7bd41529beb4c470d75788573535d4ca3f0857c79ce860a05160c052602060c0a100610a0e565b63db006a75811861019157602336111561160357336102a05261021c565b63ec9b28f18118610a0e57602436103417611603576004358060a01c6116035760a0526101bc6114dc565b60a051156116035760a05160035560a0517fb35cb534021632242cdd9c586df6a75869880552d76afbabb674b6bd1f1b4f9f5f60c0a200610a0e565b637bde82f28118610487576043361115611603576024358060a01c611603576102a0525b610224610a4d565b600435602061164f5f395f516370a082316102c052306102e05260206102c060246102dc845afa610257573d5f5f3e3d5ffd5b60203d10611603576102c090505110156102d057600e610300527f6e6f7420656e6f756768205946490000000000000000000000000000000000006103205261030050610300518061032001601f825f031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b600435610240526102e26102e0611457565b6102e0516102c0526102c05115611603576102c051600381028160038204186116035790506103e8810490506102e0526102c0516102e0518082038281116116035790509050341061034b576102c0516102e0518082018281106116035790509050341161034e565b60015b156103b8576016610300527f7072696365206f7574206f6620746f6c6572616e6365000000000000000000006103205261030050610300518061032001601f825f031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b602061162f5f395f51639dc29fac61030052336103205260043561034052803b15611603575f610300604461031c5f855af16103f6573d5f5f3e3d5ffd5b506003545a5f61030052610300505f5f61030051610320348686f190509050610421573d5f5f3e3d5ffd5b602061164f5f395f5163a9059cbb610300526102a05161032052600435610340526020610300604461031c5f855af161045c573d5f5f3e3d5ffd5b60203d1061160357610300518060011c61160357610360526103605050600435610300526020610300f35b63e90354ca8118610a0e5734611603576104a261016061118e565b610160515f8112611603576101a05260206101a0f3610a0e565b636b6f4a9d81186104de57346116035760206104d96102406112b9565b610240f35b63951b93018118610a0e57346116035760803660603760045460405261050460e061112e565b60e080516060526020810151608052604081015160a052606081015160c0525060605160e0526080516101005260a0515f8112611603576101205260c0515f81126116035761014052608060e0f3610a0e565b63d127fe608118610a0e57602436103417611603576020600435610240526105806102a0611457565b6102a0f3610a0e565b631a67245a8118610a0e57346116035760206105a6610240610ab2565b610240f3610a0e565b63561e5d0a81186105d6576024361034176116035762093a806101605242610180526107df565b6301681a628118610a0e57602436103417611603576004358060a01c6116035760a05260025461061357602061164f5f395f5160a0511415610616565b60015b61067657600f60c0527f70726f74656374656420746f6b656e000000000000000000000000000000000060e05260c05060c0518060e001601f825f031636823750506308c379a0608052602060a052601f19601f60c0510116604401609cfd5b61067e6114dc565b5f60c05260a0516106bc574760c0525f5460c0515a5f60e05260e0505f5f60e051610100858786f190509050905061075e573d5f5f3e3d5ffd61075e565b60a0516370a0823160e0523061010052602060e0602460fc845afa6106e3573d5f5f3e3d5ffd5b60203d106116035760e090505160c05260a05163a9059cbb60e0525f546101005260c05161012052602060e0604460fc5f855af1610723573d5f5f3e3d5ffd5b3d61073a57803b1561160357600161014052610752565b60203d106116035760e0518060011c61160357610140525b61014090505115611603575b60a0517fab2246061d7b0dd3631d037e3f6da75782ae489eeb9f6af878a4b25df9b07c7760c05160e052602060e0a2602060c0f3610a0e565b63ec070a9d8118610a0e57604436103417611603576024356101605242610180526107df56610a0e565b63151357fc8118610893576064361034176116035760406024610160375b6107e76114dc565b670de0b6b3a764000060043510156107ff575f61080e565b67a688906bd8b0000060043511155b1561160357426101805110611603576040366101a03761082f6101e061118e565b6101e080516101a05260208101516101c052506101c0516116035761018051604052610180516101605180820182811061160357905090506060526101a0516080526004358060ff1c6116035760a05261088a6101e0611566565b6101e051600455005b63f0350c048118610a0e57602436103417611603576004358060a01c6116035760a0526108be6114dc565b60a05160015560a0515f547f23e1f881d1e797ea57a7247e53536f0bfc37c42e6645b3bdc4b1c9a0e0d8a1335f60c0a300610a0e565b636a6f101c8118610a0e57346116035761090c6114dc565b6040366101603761091e6101a061118e565b6101a080516101605260208101516101805250610180511561160357604036604037610160516080526101605160a0526109596101a0611566565b6101a05160045500610a0e565b63a67c2dcb8118610a0e573461160357336001541815610a005760296080527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060a0527f6e6577206f776e6572000000000000000000000000000000000000000000000060c0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b33604052610a0c610a12565b005b5f5ffd5b5f6001555f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b60025415610ab05760066040527f6b696c6c6564000000000000000000000000000000000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b565b60a036604037602061168f5f395f5163feaf968c60e05260a060e0600460fc845afa610ae0573d5f5f3e3d5ffd5b60a03d106116035760e0518060501c611603576101a052610100516101c052610120516101e0526101405161020052610160518060501c61160357610220526101a09050805160405260208101516060526040810151608052606081015160a052608081015160c052504260a051610e10810181811061160357905011610bbf57600d60e0527f707269636520746f6f206f6c64000000000000000000000000000000000000006101005260e05060e0518061010001601f825f031636823750506308c379a060a052602060c052601f19601f60e051011660440160bcfd5b6060515f811261160357815250565b60405160605260016080526806f05b59d3b20000006060511215610c24576803782dace9d900000060605112610c52576803782dace9d9000000606051036060526b1425982cf597cd205cef7380608052610c52565b6806f05b59d3b200000060605103606052770195e54c5dd42177f53a27172fa9ec6302628270000000006080525b60646060510260605268056bc75e2d6310000060a05268ad78ebc5ac6200000060605112610cae5768ad78ebc5ac620000006060510360605268056bc75e2d631000006e01855144814a7ff805980ff008400060a051020560a0525b6856bc75e2d63100000060605112610cf1576856bc75e2d6310000006060510360605268056bc75e2d631000006b02df0ab5a80a22c61ab5a70060a051020560a0525b682b5e3af16b1880000060605112610d3257682b5e3af16b188000006060510360605268056bc75e2d63100000693f1fce3da636ea5cf85060a051020560a0525b6815af1d78b58c40000060605112610d73576815af1d78b58c4000006060510360605268056bc75e2d63100000690127fa27722cc06cc5e260a051020560a0525b680ad78ebc5ac620000060605112610db357680ad78ebc5ac62000006060510360605268056bc75e2d6310000068280e60114edb805d0360a051020560a0525b68056bc75e2d6310000060605112610df35768056bc75e2d631000006060510360605268056bc75e2d63100000680ebc5fb4174612111060a051020560a0525b6802b5e3af16b188000060605112610e33576802b5e3af16b18800006060510360605268056bc75e2d631000006808f00f760a4b2db55d60a051020560a0525b68015af1d78b58c4000060605112610e735768015af1d78b58c400006060510360605268056bc75e2d631000006806f5f177578893793760a051020560a0525b60605160c05260605168056bc75e2d631000000160e052600268056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600368056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600468056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600568056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600668056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600768056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600868056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600968056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600a68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600b68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600c68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052606460805168056bc75e2d6310000060e05160a05102050205815250565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc000061010051121561104f575f611060565b68070c1cc73b00c800006101005113155b15611603577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100511361111257610100517f80000000000000000000000000000000000000000000000000000000000000008114611603575f036040526110ca610120610bce565b61012051801561160357806ec097ce7bc90715b34b9f100000000005600160ff1b6ec097ce7bc90715b34b9f100000000014155f19831415171561160357905081525061112c565b61010051604052611124610120610bce565b610120518152505b565b67ffffffffffffffff60405116815267ffffffffffffffff6040518060401c905016602082015267ffffffffffffffff6040518060801c9050168060ff1c6116035760408201526040518060c01c90508060ff1c61160357606082015250565b6080366060376004546040526111a460e061112e565b60e080516060526020810151608052604081015160a052606081015160c0525042608051116111de5760c05181525f6020820152506112b7565b4260605111156111f95760a05181525f6020820152506112b7565b60805160605180820382811161160357905090508060ff1c6116035760e0524260605180820382811161160357905090508060ff1c611603576101005260a05160c05160a0518082038281135f83121861160357905090506101005180820281191515600160ff1b8414151782158484840514171615611603579050905060e051801561160357808205600160ff1b8314155f19831415171561160357905090508082018281125f8312186116035790509050815260016020820152505b565b602061164f5f395f516318160ddd610180526020610180600461019c845afa6112e4573d5f5f3e3d5ffd5b60203d106116035761018090505161016052602061166f5f395f516318160ddd6101a05260206101a060046101bc845afa611321573d5f5f3e3d5ffd5b60203d10611603576101a09050516101805261018051670de0b6b3a7640000810281670de0b6b3a764000082041861160357905061016051801561160357808204905090508060ff1c611603576101a05261137d6101c061118e565b6101c0516101a05180820281191515600160ff1b84141517821584848405141716156116035790509050670de0b6b3a764000081059050670de0b6b3a76400008103818113611603579050602f810281602f820518611603579050600a810590506102205261022051610100526113f561020061101e565b610200516101a0526101a051600a810281600a82051861160357905080670de0b6b3a764000001670de0b6b3a764000081125f831218611603579050801561160357806ec097ce7bc90715b34b9f10000000000590505f811261160357815250565b61024051611466610260610ab2565b610260518082028115838383041417156116035790509050670de0b6b3a7640000810490506114966102806112b9565b6102805180670de0b6b3a764000003670de0b6b3a764000081116116035790508082028115838383041417156116035790509050670de0b6b3a764000081049050815250565b5f543318156115645760256040527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206060527f6f776e657200000000000000000000000000000000000000000000000000000060805260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b565b67ffffffffffffffff604051111561157e575f61158d565b67ffffffffffffffff60605111155b156116035767ffffffffffffffff60805113156115aa575f6115ca565b600160a05112156115bb575f6115ca565b67ffffffffffffffff60a05113155b156116035760a0515f8112611603578060c01b90506080515f8112611603578060801b90506060518060401b9050604051171717815250565b5f80fd0a0e0a0e01f8096607c107970a0e0a0e055704bc058900530a0e007305af001808f401730a0e0a0e8419162f8118281880a16576797065728300030a00160000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e00000000000000000000000041252e8691e964f7de35156b68493bab6797a27500000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad5000000000000000000000000dddddddd0005d49d9b508bf034b036aab5818bcf0000000000000000000000003ebeaca272ce4f60e800f6c5ee678f50d2882fd40000000000000000000000000000000000000000000000008ac7230489e80000
Deployed Bytecode
0x5f3560e01c60026014820660011b61160701601e395f51565b638da5cb5b81186100335734611603575f5460405260206040f35b63ae90b2138118610a0e57346116035760035460405260206040f3610a0e565b637f4ec4c38118610a0e57346116035760015460405260206040f3610a0e565b631f3a0e41811861008f57346116035760025460405260206040f35b6341c0e1b58118610a0e5734611603576100a7610a4d565b6100af6114dc565b6001600255602061164f5f395f516370a0823160c0523060e052602060c0602460dc845afa6100e0573d5f5f3e3d5ffd5b60203d106116035760c090505160a052602061164f5f395f5163a9059cbb60c0525f5460e05260a05161010052602060c0604460dc5f855af1610125573d5f5f3e3d5ffd5b60203d106116035760c0518060011c611603576101205261012050507ff4a991ad9e7f9711696f7bd41529beb4c470d75788573535d4ca3f0857c79ce860a05160c052602060c0a100610a0e565b63db006a75811861019157602336111561160357336102a05261021c565b63ec9b28f18118610a0e57602436103417611603576004358060a01c6116035760a0526101bc6114dc565b60a051156116035760a05160035560a0517fb35cb534021632242cdd9c586df6a75869880552d76afbabb674b6bd1f1b4f9f5f60c0a200610a0e565b637bde82f28118610487576043361115611603576024358060a01c611603576102a0525b610224610a4d565b600435602061164f5f395f516370a082316102c052306102e05260206102c060246102dc845afa610257573d5f5f3e3d5ffd5b60203d10611603576102c090505110156102d057600e610300527f6e6f7420656e6f756768205946490000000000000000000000000000000000006103205261030050610300518061032001601f825f031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b600435610240526102e26102e0611457565b6102e0516102c0526102c05115611603576102c051600381028160038204186116035790506103e8810490506102e0526102c0516102e0518082038281116116035790509050341061034b576102c0516102e0518082018281106116035790509050341161034e565b60015b156103b8576016610300527f7072696365206f7574206f6620746f6c6572616e6365000000000000000000006103205261030050610300518061032001601f825f031636823750506308c379a06102c05260206102e052601f19601f6103005101166044016102dcfd5b602061162f5f395f51639dc29fac61030052336103205260043561034052803b15611603575f610300604461031c5f855af16103f6573d5f5f3e3d5ffd5b506003545a5f61030052610300505f5f61030051610320348686f190509050610421573d5f5f3e3d5ffd5b602061164f5f395f5163a9059cbb610300526102a05161032052600435610340526020610300604461031c5f855af161045c573d5f5f3e3d5ffd5b60203d1061160357610300518060011c61160357610360526103605050600435610300526020610300f35b63e90354ca8118610a0e5734611603576104a261016061118e565b610160515f8112611603576101a05260206101a0f3610a0e565b636b6f4a9d81186104de57346116035760206104d96102406112b9565b610240f35b63951b93018118610a0e57346116035760803660603760045460405261050460e061112e565b60e080516060526020810151608052604081015160a052606081015160c0525060605160e0526080516101005260a0515f8112611603576101205260c0515f81126116035761014052608060e0f3610a0e565b63d127fe608118610a0e57602436103417611603576020600435610240526105806102a0611457565b6102a0f3610a0e565b631a67245a8118610a0e57346116035760206105a6610240610ab2565b610240f3610a0e565b63561e5d0a81186105d6576024361034176116035762093a806101605242610180526107df565b6301681a628118610a0e57602436103417611603576004358060a01c6116035760a05260025461061357602061164f5f395f5160a0511415610616565b60015b61067657600f60c0527f70726f74656374656420746f6b656e000000000000000000000000000000000060e05260c05060c0518060e001601f825f031636823750506308c379a0608052602060a052601f19601f60c0510116604401609cfd5b61067e6114dc565b5f60c05260a0516106bc574760c0525f5460c0515a5f60e05260e0505f5f60e051610100858786f190509050905061075e573d5f5f3e3d5ffd61075e565b60a0516370a0823160e0523061010052602060e0602460fc845afa6106e3573d5f5f3e3d5ffd5b60203d106116035760e090505160c05260a05163a9059cbb60e0525f546101005260c05161012052602060e0604460fc5f855af1610723573d5f5f3e3d5ffd5b3d61073a57803b1561160357600161014052610752565b60203d106116035760e0518060011c61160357610140525b61014090505115611603575b60a0517fab2246061d7b0dd3631d037e3f6da75782ae489eeb9f6af878a4b25df9b07c7760c05160e052602060e0a2602060c0f3610a0e565b63ec070a9d8118610a0e57604436103417611603576024356101605242610180526107df56610a0e565b63151357fc8118610893576064361034176116035760406024610160375b6107e76114dc565b670de0b6b3a764000060043510156107ff575f61080e565b67a688906bd8b0000060043511155b1561160357426101805110611603576040366101a03761082f6101e061118e565b6101e080516101a05260208101516101c052506101c0516116035761018051604052610180516101605180820182811061160357905090506060526101a0516080526004358060ff1c6116035760a05261088a6101e0611566565b6101e051600455005b63f0350c048118610a0e57602436103417611603576004358060a01c6116035760a0526108be6114dc565b60a05160015560a0515f547f23e1f881d1e797ea57a7247e53536f0bfc37c42e6645b3bdc4b1c9a0e0d8a1335f60c0a300610a0e565b636a6f101c8118610a0e57346116035761090c6114dc565b6040366101603761091e6101a061118e565b6101a080516101605260208101516101805250610180511561160357604036604037610160516080526101605160a0526109596101a0611566565b6101a05160045500610a0e565b63a67c2dcb8118610a0e573461160357336001541815610a005760296080527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060a0527f6e6577206f776e6572000000000000000000000000000000000000000000000060c0526080506080518060a001601f825f031636823750506308c379a06040526020606052601f19601f6080510116604401605cfd5b33604052610a0c610a12565b005b5f5ffd5b5f6001555f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b60025415610ab05760066040527f6b696c6c6564000000000000000000000000000000000000000000000000000060605260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b565b60a036604037602061168f5f395f5163feaf968c60e05260a060e0600460fc845afa610ae0573d5f5f3e3d5ffd5b60a03d106116035760e0518060501c611603576101a052610100516101c052610120516101e0526101405161020052610160518060501c61160357610220526101a09050805160405260208101516060526040810151608052606081015160a052608081015160c052504260a051610e10810181811061160357905011610bbf57600d60e0527f707269636520746f6f206f6c64000000000000000000000000000000000000006101005260e05060e0518061010001601f825f031636823750506308c379a060a052602060c052601f19601f60e051011660440160bcfd5b6060515f811261160357815250565b60405160605260016080526806f05b59d3b20000006060511215610c24576803782dace9d900000060605112610c52576803782dace9d9000000606051036060526b1425982cf597cd205cef7380608052610c52565b6806f05b59d3b200000060605103606052770195e54c5dd42177f53a27172fa9ec6302628270000000006080525b60646060510260605268056bc75e2d6310000060a05268ad78ebc5ac6200000060605112610cae5768ad78ebc5ac620000006060510360605268056bc75e2d631000006e01855144814a7ff805980ff008400060a051020560a0525b6856bc75e2d63100000060605112610cf1576856bc75e2d6310000006060510360605268056bc75e2d631000006b02df0ab5a80a22c61ab5a70060a051020560a0525b682b5e3af16b1880000060605112610d3257682b5e3af16b188000006060510360605268056bc75e2d63100000693f1fce3da636ea5cf85060a051020560a0525b6815af1d78b58c40000060605112610d73576815af1d78b58c4000006060510360605268056bc75e2d63100000690127fa27722cc06cc5e260a051020560a0525b680ad78ebc5ac620000060605112610db357680ad78ebc5ac62000006060510360605268056bc75e2d6310000068280e60114edb805d0360a051020560a0525b68056bc75e2d6310000060605112610df35768056bc75e2d631000006060510360605268056bc75e2d63100000680ebc5fb4174612111060a051020560a0525b6802b5e3af16b188000060605112610e33576802b5e3af16b18800006060510360605268056bc75e2d631000006808f00f760a4b2db55d60a051020560a0525b68015af1d78b58c4000060605112610e735768015af1d78b58c400006060510360605268056bc75e2d631000006806f5f177578893793760a051020560a0525b60605160c05260605168056bc75e2d631000000160e052600268056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600368056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600468056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600568056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600668056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600768056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600868056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600968056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600a68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600b68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052600c68056bc75e2d6310000060605160c05102050560c05260c05160e0510160e052606460805168056bc75e2d6310000060e05160a05102050205815250565b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc000061010051121561104f575f611060565b68070c1cc73b00c800006101005113155b15611603577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610100511361111257610100517f80000000000000000000000000000000000000000000000000000000000000008114611603575f036040526110ca610120610bce565b61012051801561160357806ec097ce7bc90715b34b9f100000000005600160ff1b6ec097ce7bc90715b34b9f100000000014155f19831415171561160357905081525061112c565b61010051604052611124610120610bce565b610120518152505b565b67ffffffffffffffff60405116815267ffffffffffffffff6040518060401c905016602082015267ffffffffffffffff6040518060801c9050168060ff1c6116035760408201526040518060c01c90508060ff1c61160357606082015250565b6080366060376004546040526111a460e061112e565b60e080516060526020810151608052604081015160a052606081015160c0525042608051116111de5760c05181525f6020820152506112b7565b4260605111156111f95760a05181525f6020820152506112b7565b60805160605180820382811161160357905090508060ff1c6116035760e0524260605180820382811161160357905090508060ff1c611603576101005260a05160c05160a0518082038281135f83121861160357905090506101005180820281191515600160ff1b8414151782158484840514171615611603579050905060e051801561160357808205600160ff1b8314155f19831415171561160357905090508082018281125f8312186116035790509050815260016020820152505b565b602061164f5f395f516318160ddd610180526020610180600461019c845afa6112e4573d5f5f3e3d5ffd5b60203d106116035761018090505161016052602061166f5f395f516318160ddd6101a05260206101a060046101bc845afa611321573d5f5f3e3d5ffd5b60203d10611603576101a09050516101805261018051670de0b6b3a7640000810281670de0b6b3a764000082041861160357905061016051801561160357808204905090508060ff1c611603576101a05261137d6101c061118e565b6101c0516101a05180820281191515600160ff1b84141517821584848405141716156116035790509050670de0b6b3a764000081059050670de0b6b3a76400008103818113611603579050602f810281602f820518611603579050600a810590506102205261022051610100526113f561020061101e565b610200516101a0526101a051600a810281600a82051861160357905080670de0b6b3a764000001670de0b6b3a764000081125f831218611603579050801561160357806ec097ce7bc90715b34b9f10000000000590505f811261160357815250565b61024051611466610260610ab2565b610260518082028115838383041417156116035790509050670de0b6b3a7640000810490506114966102806112b9565b6102805180670de0b6b3a764000003670de0b6b3a764000081116116035790508082028115838383041417156116035790509050670de0b6b3a764000081049050815250565b5f543318156115645760256040527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206060527f6f776e657200000000000000000000000000000000000000000000000000000060805260405060405180606001601f825f031636823750506308c379a05f526020602052601f19601f6040510116604401601cfd5b565b67ffffffffffffffff604051111561157e575f61158d565b67ffffffffffffffff60605111155b156116035767ffffffffffffffff60805113156115aa575f6115ca565b600160a05112156115bb575f6115ca565b67ffffffffffffffff60a05113155b156116035760a0515f8112611603578060c01b90506080515f8112611603578060801b90506060518060401b9050604051171717815250565b5f80fd0a0e0a0e01f8096607c107970a0e0a0e055704bc058900530a0e007305af001808f401730a0e0a0e00000000000000000000000041252e8691e964f7de35156b68493bab6797a2750000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e00000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad50000000000000000000000003ebeaca272ce4f60e800f6c5ee678f50d2882fd4
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e00000000000000000000000041252e8691e964f7de35156b68493bab6797a27500000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad5000000000000000000000000dddddddd0005d49d9b508bf034b036aab5818bcf0000000000000000000000003ebeaca272ce4f60e800f6c5ee678f50d2882fd40000000000000000000000000000000000000000000000008ac7230489e80000
-----Decoded View---------------
Arg [0] : yfi (address): 0x0bc529c00C6401aEF6D220BE8C6Ea1667F6Ad93e
Arg [1] : d_yfi (address): 0x41252E8691e964f7DE35156B68493bAb6797a275
Arg [2] : ve_yfi (address): 0x90c1f9220d90d3966FbeE24045EDd73E1d588aD5
Arg [3] : owner (address): 0xdDddddDD0005d49D9b508BF034B036aaB5818bCF
Arg [4] : price_feed (address): 0x3EbEACa272Ce4f60E800f6C5EE678f50D2882fd4
Arg [5] : scaling_factor (uint256): 10000000000000000000
-----Encoded View---------------
6 Constructor Arguments found :
Arg [0] : 0000000000000000000000000bc529c00c6401aef6d220be8c6ea1667f6ad93e
Arg [1] : 00000000000000000000000041252e8691e964f7de35156b68493bab6797a275
Arg [2] : 00000000000000000000000090c1f9220d90d3966fbee24045edd73e1d588ad5
Arg [3] : 000000000000000000000000dddddddd0005d49d9b508bf034b036aab5818bcf
Arg [4] : 0000000000000000000000003ebeaca272ce4f60e800f6c5ee678f50d2882fd4
Arg [5] : 0000000000000000000000000000000000000000000000008ac7230489e80000
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 31 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
ETH | 100.00% | $5,957.54 | 26.348 | $156,968.99 |
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.