Overview
ETH Balance
0 ETH
ETH Value
$0.00More Info
Private Name Tags
ContractCreator
View more zero value Internal Transactions in Advanced View mode
Advanced mode:
Loading...
Loading
Contract Source Code Verified (Exact Match)
Contract Name:
scrvUSD oracle
Compiler Version
vyper:0.4.0
Contract Source Code (Vyper Json-Input format)
# pragma version 0.4.0 """ @title scrvUSD oracle @notice Oracle of scrvUSD share price for StableSwap pool and other integrations. Price updates are linearly smoothed with max acceleration to eliminate sharp changes. @license MIT @author curve.fi @custom:version 0.0.1 @custom:security [email protected] """ version: public(constant(String[8])) = "0.0.1" from snekmate.auth import ownable initializes: ownable exports: ownable.__interface__ event PriceUpdate: new_price: uint256 # price to achieve at: uint256 # timestamp at which price will be achieved event SetProver: prover: address struct Interval: previous: uint256 future: uint256 # scrvUSD Vault rate replication # 0 total_debt # 1 total_idle ASSETS_PARAM_CNT: constant(uint256) = 2 # 0 totalSupply # 1 full_profit_unlock_date # 2 profit_unlocking_rate # 3 last_profit_update # 4 balance_of_self # 5 block.timestamp SUPPLY_PARAM_CNT: constant(uint256) = 6 MAX_BPS_EXTENDED: constant(uint256) = 1_000_000_000_000 prover: public(address) price: public(Interval) # price of asset per share time: public(Interval) max_acceleration: public(uint256) # precision 10**18 @deploy def __init__(_initial_price: uint256, _max_acceleration: uint256): """ @param _initial_price Initial price of asset per share (10**18) @param _max_acceleration Maximum acceleration (10**12) """ self.price = Interval(previous=_initial_price, future=_initial_price) self.time = Interval(previous=block.timestamp, future=block.timestamp) self.max_acceleration = _max_acceleration ownable.__init__() @view @internal def _price_per_share(ts: uint256) -> uint256: """ @notice Using linear interpolation assuming updates are often enough for absolute difference \approx relative difference """ price: Interval = self.price time: Interval = self.time if ts >= time.future: return price.future if ts <= time.previous: return price.previous return (price.previous * (time.future - ts) + price.future * (ts - time.previous)) // (time.future - time.previous) @view @external def pricePerShare(ts: uint256=block.timestamp) -> uint256: """ @notice Get the price per share (pps) of the vault. @dev NOT precise. Price is smoothed over time to eliminate sharp changes. @param ts Timestamp to look price at. Only near future is supported. @return The price per share. """ return self._price_per_share(ts) @view @external def pricePerAsset(ts: uint256=block.timestamp) -> uint256: """ @notice Get the price per asset of the vault. @dev NOT precise. Price is smoothed over time to eliminate sharp changes. @param ts Timestamp to look price at. Only near future is supported. @return The price per share. """ return 10 ** 36 // self._price_per_share(ts) @view @external def price_oracle(i: uint256=0) -> uint256: """ @notice Alias of `pricePerShare` and `pricePerAsset` made for compatability @param i 0 for scrvusd per crvusd, 1 for crvusd per scrvusd @return Price with 10^18 precision """ return self._price_per_share(block.timestamp) if i == 0 else 10 ** 36 // self._price_per_share(block.timestamp) @view @internal def _unlocked_shares( full_profit_unlock_date: uint256, profit_unlocking_rate: uint256, last_profit_update: uint256, balance_of_self: uint256, ts: uint256, ) -> uint256: """ Returns the amount of shares that have been unlocked. To avoid sudden price_per_share spikes, profits can be processed through an unlocking period. The mechanism involves shares to be minted to the vault which are unlocked gradually over time. Shares that have been locked are gradually unlocked over profit_max_unlock_time. """ unlocked_shares: uint256 = 0 if full_profit_unlock_date > ts: # If we have not fully unlocked, we need to calculate how much has been. unlocked_shares = profit_unlocking_rate * (ts - last_profit_update) // MAX_BPS_EXTENDED elif full_profit_unlock_date != 0: # All shares have been unlocked unlocked_shares = balance_of_self return unlocked_shares @view @internal def _total_supply(parameters: uint256[ASSETS_PARAM_CNT + SUPPLY_PARAM_CNT]) -> uint256: # Need to account for the shares issued to the vault that have unlocked. return parameters[ASSETS_PARAM_CNT + 0] -\ self._unlocked_shares( parameters[ASSETS_PARAM_CNT + 1], # full_profit_unlock_date parameters[ASSETS_PARAM_CNT + 2], # profit_unlocking_rate parameters[ASSETS_PARAM_CNT + 3], # last_profit_update parameters[ASSETS_PARAM_CNT + 4], # balance_of_self parameters[ASSETS_PARAM_CNT + 5], # block.timestamp ) @view @internal def _total_assets(parameters: uint256[ASSETS_PARAM_CNT + SUPPLY_PARAM_CNT]) -> uint256: """ @notice Total amount of assets that are in the vault and in the strategies. """ return parameters[0] + parameters[1] @external def update_price( _parameters: uint256[ASSETS_PARAM_CNT + SUPPLY_PARAM_CNT], ) -> uint256: """ @notice Update price using `_parameters` @param _parameters Parameters of @return Relative price change of final price with 10^18 precision """ assert msg.sender == self.prover current_price: uint256 = self._price_per_share(block.timestamp) new_price: uint256 = self._total_assets(_parameters) * 10 ** 18 //\ self._total_supply(_parameters) # Price is always growing and updates are never from future, # hence allow only increasing updates future_price: uint256 = self.price.future if new_price > future_price: self.price = Interval(previous=current_price, future=new_price) rel_price_change: uint256 = (new_price - current_price) * 10 ** 18 // current_price + 1 # 1 for rounding up future_ts: uint256 = block.timestamp + rel_price_change // self.max_acceleration self.time = Interval(previous=block.timestamp, future=future_ts) log PriceUpdate(new_price, future_ts) return new_price * 10 ** 18 // future_price return 10 ** 18 @external def set_max_acceleration(_max_acceleration: uint256): """ @notice Set maximum acceleration of scrvUSD. Must be less than StableSwap's minimum fee. fee / (2 * block_time) is considered to be safe. @param _max_acceleration Maximum acceleration (per sec) """ ownable._check_owner() assert 10 ** 8 <= _max_acceleration and _max_acceleration <= 10 ** 18 self.max_acceleration = _max_acceleration @external def set_prover(_prover: address): """ @notice Set the account with prover permissions. """ ownable._check_owner() self.prover = _prover log SetProver(_prover)
# pragma version ~=0.4.0 """ @title Owner-Based Access Control Functions @custom:contract-name ownable @license GNU Affero General Public License v3.0 only @author pcaversaccio @notice These functions can be used to implement a basic access control mechanism, where there is an account (an owner) that can be granted exclusive access to specific functions. By default, the owner account will be the one that deploys the contract. This can later be changed with `transfer_ownership`. An exemplary integration can be found in the ERC-20 implementation here: https://github.com/pcaversaccio/snekmate/blob/main/src/snekmate/tokens/erc20.vy. The implementation is inspired by OpenZeppelin's implementation here: https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/access/Ownable.sol. """ # @dev Returns the address of the current owner. # @notice If you declare a variable as `public`, # Vyper automatically generates an `external` # getter function for the variable. owner: public(address) # @dev Emitted when the ownership is transferred # from `previous_owner` to `new_owner`. event OwnershipTransferred: previous_owner: indexed(address) new_owner: indexed(address) @deploy @payable def __init__(): """ @dev To omit the opcodes for checking the `msg.value` in the creation-time EVM bytecode, the constructor is declared as `payable`. @notice The `owner` role will be assigned to the `msg.sender`. """ self._transfer_ownership(msg.sender) @external def transfer_ownership(new_owner: address): """ @dev Transfers the ownership of the contract to a new account `new_owner`. @notice Note that this function can only be called by the current `owner`. Also, the `new_owner` cannot be the zero address. @param new_owner The 20-byte address of the new owner. """ self._check_owner() assert new_owner != empty(address), "ownable: new owner is the zero address" self._transfer_ownership(new_owner) @external def renounce_ownership(): """ @dev Leaves the contract without an owner. @notice Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner. """ self._check_owner() self._transfer_ownership(empty(address)) @internal def _check_owner(): """ @dev Throws if the sender is not the owner. """ assert msg.sender == self.owner, "ownable: 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`. @notice This is an `internal` function without access restriction. @param new_owner The 20-byte address of the new owner. """ old_owner: address = self.owner self.owner = new_owner log OwnershipTransferred(old_owner, new_owner)
{ "outputSelection": { "contracts/oracles/ScrvusdOracle.vy": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] }, "search_paths": [ "venv/lib/python3.11/site-packages", "." ] }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"anonymous":false,"inputs":[{"indexed":false,"name":"new_price","type":"uint256"},{"indexed":false,"name":"at","type":"uint256"}],"name":"PriceUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"prover","type":"address"}],"name":"SetProver","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"previous_owner","type":"address"},{"indexed":true,"name":"new_owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"name":"new_owner","type":"address"}],"name":"transfer_ownership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounce_ownership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricePerShare","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"ts","type":"uint256"}],"name":"pricePerShare","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pricePerAsset","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"ts","type":"uint256"}],"name":"pricePerAsset","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price_oracle","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"i","type":"uint256"}],"name":"price_oracle","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"_parameters","type":"uint256[8]"}],"name":"update_price","outputs":[{"name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_max_acceleration","type":"uint256"}],"name":"set_max_acceleration","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_prover","type":"address"}],"name":"set_prover","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"version","outputs":[{"name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"prover","outputs":[{"name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"price","outputs":[{"components":[{"name":"previous","type":"uint256"},{"name":"future","type":"uint256"}],"name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"time","outputs":[{"components":[{"name":"previous","type":"uint256"},{"name":"future","type":"uint256"}],"name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_acceleration","outputs":[{"name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"name":"_initial_price","type":"uint256"},{"name":"_max_acceleration","type":"uint256"}],"outputs":[],"stateMutability":"nonpayable","type":"constructor"}]
Contract Creation Code
3461008f5760206108f85f395f5160025560206108f85f395f51600355426004554260055560206109185f395f51600655610038610081565b61085061009361000039610850610000f35b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b3360405261008d61004a565b565b5f80fd5f3560e01c6002600e820660011b61083401601e395f51565b63f0350c0481186105fb57602436103417610830576004358060a01c61083057610100526100446105ff565b610100516100ee576020806101a0526026610120527f6f776e61626c653a206e6577206f776e657220697320746865207a65726f2061610140527f646472657373000000000000000000000000000000000000000000000000000061016052610120816101a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b610100516040526100fd610680565b005b63b15e13ee81186105fb5734610830576101176105ff565b5f604052610123610680565b005b638da5cb5b81186105fb5734610830575f5460405260206040f35b6399530b0681186101595734610830574260e0526101ef565b6354fd4d5081186105fb57346108305760208060805260056040527f302e302e3100000000000000000000000000000000000000000000000000000060605260408160800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b63f759cc3b8118610207576024361034176108305760043560e0525b602060e0516040526102026101006106b7565b610100f35b63183d32db81186102205734610830574260e0526102af565b636872765381186105fb576024361034176108305760043560e0525b602060e05161025c57426040526102546101006106b7565b610100610291565b4260405261026b6101206106b7565b61012051801561083057806ec097ce7bc90715b34b9f1000000000049050610140526101405bf35b63745e181381186102e9576024361034176108305760043560e0525b60e0516040526102c06101006106b7565b61010051801561083057806ec097ce7bc90715b34b9f1000000000049050610120526020610120f35b6367b8e28181186105fb576101043610341761083057600154331861083057426040526103176102406106b7565b61024051610220526101006004604037610332610260610786565b61026051670de0b6b3a7640000810281670de0b6b3a7640000820418610830579050610100600461010037610368610280610802565b61028051801561083057808204905090506102405260035461026052610260516102405111156104a057610220516002556102405160035561024051610220518082038281116108305790509050670de0b6b3a7640000810281670de0b6b3a76400008204186108305790506102205180156108305780820490509050600181018181106108305790506102805242610280516006548015610830578082049050905080820182811061083057905090506102a052426004556102a0516005557f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c765711610240516102c0526102a0516102e05260406102c0a161024051670de0b6b3a7640000810281670de0b6b3a764000082041861083057905061026051801561083057808204905090506102c05260206102c06104b3565b670de0b6b3a76400006102805260206102805bf35b6386fc88d381186104ce5734610830575f60e05261023c565b630afbebdd811861051b57602436103417610830576104eb6105ff565b6004356305f5e10011156104ff575f61050e565b670de0b6b3a764000060043511155b1561083057600435600655005b6316ada54781186105fb57346108305760045460405260055460605260406040f35b639cb6d4f481186105fb57602436103417610830576004358060a01c61083057610100526105696105ff565b610100516001557ff97487bf235f7d2213e9a9b8eeb23642af9c77ef7aa05f6cd97e03af9288b3c561010051610120526020610120a1005b6332a8f30f81186105fb57346108305760015460405260206040f35b63a035b1fe81186105fb57346108305760025460405260035460605260406040f35b632521f57d81186105fb57346108305760065460405260206040f35b5f5ffd5b5f5433181561067e5760208060a05260206040527f6f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260605260408160a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b60025460605260035460805260045460a05260055460c05260c051604051106106e557608051815250610784565b60a051604051116106fb57606051815250610784565b60605160c0516040518082038281116108305790509050808202811583838304141715610830579050905060805160405160a05180820382811161083057905090508082028115838383041417156108305790509050808201828110610830579050905060c05160a0518082038281116108305790509050801561083057808204905090508152505b565b6040516060518082018281106108305790509050815250565b5f60e05260c051604051116107c157604051156107fa5760a05160e0526107fa565b60605160c0516080518082038281116108305790509050808202811583838304141715610830579050905064e8d4a510008104905060e0525b60e051815250565b6101405160a061016060405e61081961020061079f565b610200518082038281116108305790509050815250565b5f80fd00ff05a1053d05fb05fb01d3001804b505fb012505bd05df014002938419085081181c00a16576797065728300040000150000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000009184e72a000
Deployed Bytecode
0x5f3560e01c6002600e820660011b61083401601e395f51565b63f0350c0481186105fb57602436103417610830576004358060a01c61083057610100526100446105ff565b610100516100ee576020806101a0526026610120527f6f776e61626c653a206e6577206f776e657220697320746865207a65726f2061610140527f646472657373000000000000000000000000000000000000000000000000000061016052610120816101a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a0610180528060040161019cfd5b610100516040526100fd610680565b005b63b15e13ee81186105fb5734610830576101176105ff565b5f604052610123610680565b005b638da5cb5b81186105fb5734610830575f5460405260206040f35b6399530b0681186101595734610830574260e0526101ef565b6354fd4d5081186105fb57346108305760208060805260056040527f302e302e3100000000000000000000000000000000000000000000000000000060605260408160800160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506080f35b63f759cc3b8118610207576024361034176108305760043560e0525b602060e0516040526102026101006106b7565b610100f35b63183d32db81186102205734610830574260e0526102af565b636872765381186105fb576024361034176108305760043560e0525b602060e05161025c57426040526102546101006106b7565b610100610291565b4260405261026b6101206106b7565b61012051801561083057806ec097ce7bc90715b34b9f1000000000049050610140526101405bf35b63745e181381186102e9576024361034176108305760043560e0525b60e0516040526102c06101006106b7565b61010051801561083057806ec097ce7bc90715b34b9f1000000000049050610120526020610120f35b6367b8e28181186105fb576101043610341761083057600154331861083057426040526103176102406106b7565b61024051610220526101006004604037610332610260610786565b61026051670de0b6b3a7640000810281670de0b6b3a7640000820418610830579050610100600461010037610368610280610802565b61028051801561083057808204905090506102405260035461026052610260516102405111156104a057610220516002556102405160035561024051610220518082038281116108305790509050670de0b6b3a7640000810281670de0b6b3a76400008204186108305790506102205180156108305780820490509050600181018181106108305790506102805242610280516006548015610830578082049050905080820182811061083057905090506102a052426004556102a0516005557f92664190cca12aca9cd5309d87194bdda75bb51362d71c06e1a6f75c7c765711610240516102c0526102a0516102e05260406102c0a161024051670de0b6b3a7640000810281670de0b6b3a764000082041861083057905061026051801561083057808204905090506102c05260206102c06104b3565b670de0b6b3a76400006102805260206102805bf35b6386fc88d381186104ce5734610830575f60e05261023c565b630afbebdd811861051b57602436103417610830576104eb6105ff565b6004356305f5e10011156104ff575f61050e565b670de0b6b3a764000060043511155b1561083057600435600655005b6316ada54781186105fb57346108305760045460405260055460605260406040f35b639cb6d4f481186105fb57602436103417610830576004358060a01c61083057610100526105696105ff565b610100516001557ff97487bf235f7d2213e9a9b8eeb23642af9c77ef7aa05f6cd97e03af9288b3c561010051610120526020610120a1005b6332a8f30f81186105fb57346108305760015460405260206040f35b63a035b1fe81186105fb57346108305760025460405260035460605260406040f35b632521f57d81186105fb57346108305760065460405260206040f35b5f5ffd5b5f5433181561067e5760208060a05260206040527f6f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260605260408160a00160208251018083835e508051806020830101601f825f03163682375050601f19601f8251602001011690509050810190506308c379a060805280600401609cfd5b565b5f546060526040515f556040516060517f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f6080a3565b60025460605260035460805260045460a05260055460c05260c051604051106106e557608051815250610784565b60a051604051116106fb57606051815250610784565b60605160c0516040518082038281116108305790509050808202811583838304141715610830579050905060805160405160a05180820382811161083057905090508082028115838383041417156108305790509050808201828110610830579050905060c05160a0518082038281116108305790509050801561083057808204905090508152505b565b6040516060518082018281106108305790509050815250565b5f60e05260c051604051116107c157604051156107fa5760a05160e0526107fa565b60605160c0516080518082038281116108305790509050808202811583838304141715610830579050905064e8d4a510008104905060e0525b60e051815250565b6101405160a061016060405e61081961020061079f565b610200518082038281116108305790509050815250565b5f80fd00ff05a1053d05fb05fb01d3001804b505fb012505bd05df01400293
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000009184e72a000
-----Decoded View---------------
Arg [0] : _initial_price (uint256): 1000000000000000000
Arg [1] : _max_acceleration (uint256): 10000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000de0b6b3a7640000
Arg [1] : 000000000000000000000000000000000000000000000000000009184e72a000
Deployed Bytecode Sourcemap
0:6846:0:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;1624:18:1;-1:-1:-1;-1:-1:-1;1624:18:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1965:19:1;-1:-1:-1;-1:-1:-1;1965:19:1:i;1965:19:1:-;1996:9:1;-1:-1:-1;-1:-1:-1;1996:27:1;1989:76:1;-1:-1:-1;-1:-1:-1;1989:76:1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2025:40:1;-1:-1:-1;-1:-1:-1;2025:40:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2025:40:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2025:40:1;2025:40:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1989:76:1:-;2095:9:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2070:35:1;1601:504:1;-1:-1:-1;-1:-1:-1;2070:35:1;-1:-1:-1;-1:-1:-1;2070:35:1:i;1601:504:1:-;1601:504:1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;2394:19:1;-1:-1:-1;-1:-1:-1;2394:19:1:i;2394:19:1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;2418:40:1;2118:340:1;-1:-1:-1;-1:-1:-1;2418:40:1;-1:-1:-1;-1:-1:-1;2418:40:1:i;2118:340:1:-;2118:340:1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1054:22:1;-1:-1:-1;1054:22:1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2157:15:0;2145:11:0;-1:-1:-1;2145:11:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;352:7:0;-1:-1:-1;352:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;352:7:0;352:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;313:46:0;-1:-1:-1;313:46:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;2145:11:0;2145:11:0;-1:-1:-1;2145:11:0;2127:351:0:-;2127:351:0;-1:-1:-1;2475:2:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2453:25:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2453:25:0;-1:-1:-1;-1:-1:-1;2453:25:0;-1:-1:-1;-1:-1:-1;2453:25:0:i;2453:25:0:-;2453:25:0;-1:-1:-1;-1:-1:-1;2127:351:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2527:15:0;2515:11:0;-1:-1:-1;2515:11:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;2890:10:0;2890:10:0;-1:-1:-1;2890:10:0;2873:357:0:-;2873:357:0;-1:-1:-1;3168:1:0;-1:-1:-1;3168:6:0;3126:104:0;-1:-1:-1;-1:-1:-1;3126:104:0:-;3148:15:0;-1:-1:-1;-1:-1:-1;3126:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;3126:38:0;-1:-1:-1;-1:-1:-1;3126:38:0;-1:-1:-1;-1:-1:-1;3126:38:0:i;3126:38:0:-;3126:38:0;-1:-1:-1;-1:-1:-1;2873:357:0;-1:-1:-1;-1:-1:-1;3126:104:0:-;3126:104:0:-;3214:15:0;-1:-1:-1;-1:-1:-1;3192:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;3192:38:0;-1:-1:-1;-1:-1:-1;3192:38:0;-1:-1:-1;-1:-1:-1;3192:38:0:i;3192:38:0:-;3192:38:0;-1:-1:-1;-1:-1:-1;3180:50:0;3180:50:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;3180:50:0;3180:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3180:50:0;3180:50:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2873:357:0:-;2873:357:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;2515:11:0;2515:11:0;-1:-1:-1;2515:11:0;2497:357:0:-;2851:2:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2829:25:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2829:25:0;-1:-1:-1;-1:-1:-1;2829:25:0;-1:-1:-1;-1:-1:-1;2829:25:0:i;2829:25:0:-;2829:25:0;-1:-1:-1;-1:-1:-1;2817:37:0;2817:37:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2817:37:0;2817:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2817:37:0;2817:37:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2497:357:0;-1:-1:-1;-1:-1:-1;2497:357:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5352:11:0;-1:-1:-1;5338:25:0;5338:10:0;5338:25:0;5331:32:0;-1:-1:-1;-1:-1:-1;5331:32:0:-;5416:15:0;-1:-1:-1;-1:-1:-1;5394:38:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5394:38:0;-1:-1:-1;-1:-1:-1;5394:38:0;-1:-1:-1;-1:-1:-1;5394:38:0:i;5394:38:0:-;5394:38:0;-1:-1:-1;-1:-1:-1;5369:63:0;5369:63:0;-1:-1:-1;-1:-1:-1;5369:63:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5458:31:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5458:31:0;-1:-1:-1;-1:-1:-1;5458:31:0;-1:-1:-1;-1:-1:-1;5458:31:0:i;5458:31:0:-;5458:31:0;-1:-1:-1;-1:-1:-1;5458:42:0;5492:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5458:42:0;-1:-1:-1;5458:42:0;5492:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5458:42:0;5458:42:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5513:31:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5513:31:0;-1:-1:-1;-1:-1:-1;5513:31:0;-1:-1:-1;-1:-1:-1;5513:31:0:i;5513:31:0:-;5513:31:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;5458:86:0;-1:-1:-1;5458:86:0;5458:86:0;5458:86:0;5458:86:0;5437:107:0;-1:-1:-1;-1:-1:-1;5437:107:0;5681:17:0;-1:-1:-1;5657:41:0;5657:41:0;-1:-1:-1;-1:-1:-1;5657:41:0;5718:12:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5706:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5706:24:0;5703:479:0;5703:479:0;-1:-1:-1;-1:-1:-1;5703:479:0:-;5771:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5793:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5842:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5854:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;5842:25:0;5842:25:0;5871:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5841:38:0;-1:-1:-1;5841:38:0;5871:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5841:38:0;5841:38:0;5883:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;5841:55:0;-1:-1:-1;5841:55:0;5841:55:0;5841:55:0;5841:55:0;5899:1:0;-1:-1:-1;5841:59:0;-1:-1:-1;5841:59:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5841:59:0;5841:59:0;5813:87:0;-1:-1:-1;-1:-1:-1;5813:87:0;5951:15:0;5969:16:0;-1:-1:-1;-1:-1:-1;5969:41:0;5989:21:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;5969:41:0;-1:-1:-1;5969:41:0;5969:41:0;5969:41:0;5969:41:0;-1:-1:-1;5951:59:0;-1:-1:-1;5951:59:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5951:59:0;5951:59:0;5951:59:0;5951:59:0;5930:80:0;-1:-1:-1;-1:-1:-1;5930:80:0;6049:15:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;6073:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6093:37:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6109:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6120:9:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6093:37:0;-1:-1:-1;-1:-1:-1;6093:37:0;6146:9:0;-1:-1:-1;-1:-1:-1;6146:20:0;6158:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6146:20:0;-1:-1:-1;6146:20:0;6158:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;6146:20:0;6146:20:0;6170:12:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;6146:36:0;-1:-1:-1;6146:36:0;6146:36:0;6146:36:0;6146:36:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5703:479:0:-;6194:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;5064:1138:0;-1:-1:-1;-1:-1:-1;5064:1138:0:-;5064:1138:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2901:1:0;2890:10:0;-1:-1:-1;2890:10:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;6507:22:0;-1:-1:-1;-1:-1:-1;6507:22:0:i;6507:22:0:-;6633:17:0;-1:-1:-1;6542:28:0;6542:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6542:62:0;6542:62:0;-1:-1:-1;-1:-1:-1;6542:62:0:-;6542:62:0;6542:62:0;-1:-1:-1;-1:-1:-1;6542:62:0:-;6542:62:0:-;6596:8:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6633:17:0;-1:-1:-1;6575:29:0;-1:-1:-1;-1:-1:-1;6542:62:0:-;6535:69:0;6535:69:0;-1:-1:-1;-1:-1:-1;6535:69:0:-;6633:17:0;-1:-1:-1;-1:-1:-1;6609:21:0;-1:-1:-1;-1:-1:-1;6215:435:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1082:22:0;-1:-1:-1;1082:22:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;6678:16:0;-1:-1:-1;-1:-1:-1;6678:16:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;6770:22:0;-1:-1:-1;-1:-1:-1;6770:22:0:i;6770:22:0:-;6812:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;6798:11:0;-1:-1:-1;-1:-1:-1;6824:22:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6838:7:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;6824:22:0;-1:-1:-1;-1:-1:-1;6824:22:0;6663:183:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1005:23:0;-1:-1:-1;1005:23:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1030:23:0;-1:-1:-1;1030:23:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1106:33:0;-1:-1:-1;1106:33:0;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2580:10:1;2566:24:1;2566:10:1;2566:24:1;2566:24:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2559:67:1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2592:34:1;-1:-1:-1;2592:34:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2592:34:1;2592:34:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;2955:10:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2934:31:1;2983:9:1;-1:-1:-1;-1:-1:-1;2970:10:1;-1:-1:-1;3033:9:1;-1:-1:-1;2997:46:1;3022:9:1;-1:-1:-1;2997:46:1;2997:46:1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;2997:46:1;2997:46:1;-1:-1:-1;2997:46:1;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;1890:11:0;-1:-1:-1;1884:17:0;1884:2:0;-1:-1:-1;1884:17:0;-1:-1:-1;1881:49:0;-1:-1:-1;-1:-1:-1;1881:49:0:-;1918:12:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;1911:19:0;1911:19:0;1911:19:0;-1:-1:-1;-1:-1:-1;1911:19:0:o;1881:49:0:-;1944:13:0;-1:-1:-1;1938:19:0;1938:2:0;-1:-1:-1;1938:19:0;-1:-1:-1;1935:53:0;-1:-1:-1;-1:-1:-1;1935:53:0:-;1974:14:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;1967:21:0;1967:21:0;1967:21:0;-1:-1:-1;-1:-1:-1;1967:21:0:o;1935:53:0:-;2001:14:0;-1:-1:-1;2001:35:0;2019:11:0;-1:-1:-1;2019:16:0;2033:2:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2019:16:0;-1:-1:-1;2019:16:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2019:16:0;2019:16:0;2019:16:0;2019:16:0;-1:-1:-1;2001:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2001:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2001:35:0;2001:35:0;2001:35:0;2001:35:0;2039:12:0;-1:-1:-1;2039:35:0;2055:2:0;-1:-1:-1;2055:18:0;2060:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2055:18:0;-1:-1:-1;2055:18:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2055:18:0;2055:18:0;2055:18:0;2055:18:0;-1:-1:-1;2039:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2039:35:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2039:35:0;2039:35:0;2039:35:0;2039:35:0;-1:-1:-1;2001:73:0;-1:-1:-1;2001:73:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2001:73:0;2001:73:0;2001:73:0;2001:73:0;2080:11:0;-1:-1:-1;2080:27:0;2094:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;2080:27:0;-1:-1:-1;2080:27:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;2080:27:0;2080:27:0;2080:27:0;2080:27:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;2000:108:0;-1:-1:-1;2000:108:0;2000:108:0;2000:108:0;2000:108:0;-1:-1:-1;1993:115:0;1993:115:0;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1:-;5022:13:0;-1:-1:-1;5022:29:0;5038:13:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;5022:29:0;-1:-1:-1;5022:29:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;5022:29:0;5022:29:0;5022:29:0;5022:29:0;-1:-1:-1;5015:36:0;5015:36:0;-1:-1:-1:-;-1:-1:-1:-;3831:1:0;-1:-1:-1;-1:-1:-1;3804:28:0;3866:2:0;-1:-1:-1;-1:-1:-1;3840:23:0;-1:-1:-1;-1:-1:-1;3840:28:0;3837:331:0;-1:-1:-1;-1:-1:-1;3837:331:0:-;4057:23:0;-1:-1:-1;4057:28:0;4057:28:0;3837:331:0;-1:-1:-1;-1:-1:-1;4052:116:0:-;4153:15:0;-1:-1:-1;-1:-1:-1;4135:15:0;-1:-1:-1;-1:-1:-1;3837:331:0;-1:-1:-1;-1:-1:-1;3837:331:0:-;3837:331:0:-;3977:21:0;-1:-1:-1;-1:-1:-1;4002:2:0;-1:-1:-1;-1:-1:-1;4007:18:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;4002:23:0;4002:23:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;3977:49:0;3977:49:0;4030:16:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;3977:69:0;-1:-1:-1;3977:69:0;3977:69:0;3959:15:0;-1:-1:-1;-1:-1:-1;3837:331:0:-;4181:15:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;4174:22:0;4174:22:0;-1:-1:-1:-;-1:-1:-1:-;4391:32:0;-1:-1:-1;-1:-1:-1;4391:418:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;4435:374:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;4435:374:0;-1:-1:-1;-1:-1:-1;4435:374:0;-1:-1:-1;-1:-1:-1;4435:374:0:i;4435:374:0:-;4435:374:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;4391:418:0;-1:-1:-1;4391:418:0;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1:-;4391:418:0;4391:418:0;4391:418:0;4391:418:0;-1:-1:-1;4384:425:0;4384:425:0;-1:-1:-1:-;-1:-1:-1:-;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1;-1:-1:-1
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 34 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
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.