Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 198 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
Value | ||||
---|---|---|---|---|---|---|---|---|---|
Withdraw | 13243703 | 1021 days ago | IN | 0 ETH | 0.0042376 | ||||
Set Funds Unlock... | 13243699 | 1021 days ago | IN | 0 ETH | 0.00135742 | ||||
Set Funds Addres... | 13243692 | 1021 days ago | IN | 0 ETH | 0.00200115 | ||||
Withdraw | 13205331 | 1027 days ago | IN | 0 ETH | 0.0042093 | ||||
Set Funds Addres... | 13205313 | 1027 days ago | IN | 0 ETH | 0.00195262 | ||||
Transfer | 13191293 | 1029 days ago | IN | 2 ETH | 0.1191275 | ||||
Transfer | 13191269 | 1029 days ago | IN | 2 ETH | 0.01866522 | ||||
Batch Set Allowa... | 13191252 | 1029 days ago | IN | 0 ETH | 0.00564167 | ||||
Batch Set Allowa... | 13191243 | 1029 days ago | IN | 0 ETH | 0.00570069 | ||||
Transfer | 13191243 | 1029 days ago | IN | 4 ETH | 0.03441782 | ||||
Transfer | 13191228 | 1029 days ago | IN | 2 ETH | 0.01792028 | ||||
Transfer | 13191201 | 1029 days ago | IN | 0 ETH | 0.03684281 | ||||
Batch Set Allowa... | 13191189 | 1029 days ago | IN | 0 ETH | 0.00502195 | ||||
Batch Set Allowa... | 13191182 | 1029 days ago | IN | 0 ETH | 0.00390618 | ||||
Transfer | 13191131 | 1029 days ago | IN | 10 ETH | 0.05352245 | ||||
Transfer | 13191128 | 1029 days ago | IN | 10 ETH | 0.05807405 | ||||
Transfer | 13191098 | 1029 days ago | IN | 4 ETH | 0.03494553 | ||||
Transfer | 13191090 | 1029 days ago | IN | 2 ETH | 0.050511 | ||||
Batch Set Allowa... | 13191083 | 1029 days ago | IN | 0 ETH | 0.04887643 | ||||
Batch Set Allowa... | 13191002 | 1029 days ago | IN | 0 ETH | 0.0119776 | ||||
Transfer | 13190643 | 1029 days ago | IN | 2 ETH | 0.03618552 | ||||
Transfer | 13190541 | 1029 days ago | IN | 2 ETH | 0.02936582 | ||||
Transfer | 13190344 | 1029 days ago | IN | 8 ETH | 0.06224714 | ||||
Transfer | 13190261 | 1029 days ago | IN | 2 ETH | 0.02408754 | ||||
Transfer | 13190099 | 1029 days ago | IN | 2 ETH | 0.02454026 |
Latest 9 internal transactions
Advanced mode:
Parent Transaction Hash | Block | From | To | Value | ||
---|---|---|---|---|---|---|
13243703 | 1021 days ago | 46.43125 ETH | ||||
13243703 | 1021 days ago | 46.43125 ETH | ||||
13243703 | 1021 days ago | 46.43125 ETH | ||||
13243703 | 1021 days ago | 46.43125 ETH | ||||
13205331 | 1027 days ago | 19.55 ETH | ||||
13205331 | 1027 days ago | 46.43125 ETH | ||||
13205331 | 1027 days ago | 46.43125 ETH | ||||
13205331 | 1027 days ago | 46.43125 ETH | ||||
13205331 | 1027 days ago | 46.43125 ETH |
Loading...
Loading
Contract Name:
LandSale
Compiler Version
v0.8.7+commit.e28d00a7
Contract Source Code (Solidity Multiple files format)
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./SafeMath.sol"; import "./Ownable.sol"; import "./ReentrancyGuard.sol"; interface ILand { function totalSupply() external view returns (uint256); function maximumSupply() external view returns (uint256); function mintToken(address account, uint256 count) external; function burnLastToken(address account) external; } contract LandSale is Ownable, ReentrancyGuard { using SafeMath for uint256; struct Purchase { uint256 count; uint256 price; } // Land-DAO token contract interface ILand public tokenContract; // Stores the allowed minting count and token price for each whitelisted address mapping (address => Purchase) private _allowances; // Stores the list of purchases along with the pricing mapping (address => Purchase[]) private _purchases; // Indicates the number of fund addresses (including treasury) uint8 constant _fundsAddressCount = 5; // Stores the total amount of owed (unlocked) funds for the founders uint256 public unlockedFunds; // Stores the total amount of owed (locked) funds for the founders uint256 public lockedFunds; // Stores the total amount of owed funds for the treasury uint256 public reserveFunds; // Stores the list of addresses owned by the reserve (at 0-index) and founders address[] public fundsAddresses; // Stores the timestamp on which the locked funds can be withdrawn uint256 public fundsUnlockTimestamp; constructor() { // By default, all founder addresses are set to the owner for (uint8 i = 0; i < _fundsAddressCount; i++) { fundsAddresses.push(msg.sender); } } // Add this modifier to all functions which are only accessible by the finance related addresses modifier onlyFinance() { require(msg.sender == fundsAddresses[0] || msg.sender == fundsAddresses[1] || msg.sender == fundsAddresses[2] || msg.sender == fundsAddresses[3] || msg.sender == fundsAddresses[4], "Unauthorized Access"); _; } function setTokenContract(address _newTokenContract) external onlyOwner { require(_newTokenContract != address(0), "Invalid Address"); tokenContract = ILand(_newTokenContract); } function setFundsAddress(uint8 _index, address _address) external onlyOwner { require(_address != address(0), "Invalid Address"); require(_index >= 0 && _index < _fundsAddressCount, "Invalid Index"); fundsAddresses[_index] = _address; } // Set the allowance for the specified address function setAllowance(address _address, uint256 _count, uint256 _price) public onlyOwner { require(_address != address(0), "Invalid Address"); _allowances[_address] = Purchase(_count, _price); } // Set the allowance for the specified address function batchSetAllowances( address[] calldata _addresses, uint256[] calldata _counts, uint256[] calldata _prices ) external onlyOwner { uint256 count = _addresses.length; for (uint8 i = 0; i < count; i++) { setAllowance(_addresses[i], _counts[i], _prices[i]); } } // Get the allowance for the specified address function allowance(address _address) public view returns ( uint256 count, uint256 price ) { Purchase memory _allowance = _allowances[_address]; count = _allowance.count; price = _allowance.price; } // Set the UNIX timestamp for the funds unlock time function setFundsUnlockTimestamp(uint256 _unlock) external onlyOwner { fundsUnlockTimestamp = _unlock; } // Handles token purchases receive() external payable nonReentrant { // Check if tokens are still available for sale uint256 remainingTokenCount = tokenContract.maximumSupply() - tokenContract.totalSupply(); require(remainingTokenCount > 0, "Sold Out"); // Check if sufficient funds are sent, and that the address is whitelisted (has valid allowance) // with enough funds to purchase at least 1 token uint256 accountLimit; uint256 tokenPrice; (accountLimit, tokenPrice) = allowance(msg.sender); require(accountLimit > 0, "Not Whitelisted For The Sale Or Insufficient Allowance"); require(msg.value >= tokenPrice, "Insufficient Funds"); // Calculate the actual amount of tokens to be minted, which must be within the set limits uint256 specifiedAmount = (tokenPrice == 0 ? accountLimit : msg.value.div(tokenPrice)); uint256 actualAmount = (specifiedAmount > accountLimit ? accountLimit : specifiedAmount); actualAmount = (remainingTokenCount < actualAmount ? remainingTokenCount : actualAmount); _allowances[msg.sender].count -= actualAmount; tokenContract.mintToken(msg.sender, actualAmount); uint256 totalSpent = actualAmount.mul(tokenPrice); if (totalSpent > 0) { // Update the total received funds for the founders' share (95%) // Half of which are locked for 30 days after the end of the sale uint256 totalFounderShare = totalSpent.mul(95).div(100); uint256 lockedShare = totalFounderShare.div(2); uint256 unlockedShare = totalFounderShare.sub(lockedShare); lockedFunds = lockedFunds.add(lockedShare); unlockedFunds = unlockedFunds.add(unlockedShare); // 0-index is reserved for the treasury (5%) fully unlocked reserveFunds = reserveFunds.add(totalSpent.sub(totalFounderShare)); _purchases[msg.sender].push(Purchase(actualAmount, tokenPrice)); } // Calculate any excess/unspent funds and transfer it back to the buyer uint256 unspent = msg.value.sub(totalSpent); if (unspent > 0) { payable(msg.sender).transfer(unspent); } } // Handles refund requests which would send back 50% of the price at the time of purchase // and also subsequently burn the last token minted for the address function refund() external nonReentrant { require(_purchases[msg.sender].length > 0, "No Refund Available"); Purchase memory purchase = _purchases[msg.sender][_purchases[msg.sender].length - 1]; uint256 refundAmount = purchase.price.div(2); require(refundAmount <= lockedFunds, "Insufficient Funds Available"); // Update the purchase records and burn the token if (purchase.count > 1) { _purchases[msg.sender][_purchases[msg.sender].length - 1].count -= 1; } else { _purchases[msg.sender].pop(); } // Deduct from the locked funds lockedFunds = lockedFunds.sub(refundAmount); tokenContract.burnLastToken(msg.sender); payable(msg.sender).transfer(refundAmount); } // Used by the fund addresses to withdraw any owed funds function withdraw() external onlyFinance { // Calculate total owed funds based on the timing of the withdrawal uint256 totalOwed; if (block.timestamp >= fundsUnlockTimestamp) { totalOwed = unlockedFunds.add(lockedFunds); unlockedFunds = 0; lockedFunds = 0; } else { totalOwed = unlockedFunds; unlockedFunds = 0; } require(totalOwed > 0, "Withdrawal Not Available"); // Starting from 1, as 0 is for the treasury uint256 individualShare = totalOwed.div(_fundsAddressCount - 1); for (uint8 i = 1; i < _fundsAddressCount; i++) { payable(fundsAddresses[i]).transfer(individualShare); } // Doing the same for the treasury if (reserveFunds > 0) { uint256 owed = reserveFunds; reserveFunds = 0; payable(fundsAddresses[0]).transfer(owed); } } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "./Context.sol"; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _setOwner(_msgSender()); } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { require(owner() == _msgSender(), "Ownable: caller is not the owner"); _; } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions anymore. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby removing any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _setOwner(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _setOwner(newOwner); } function _setOwner(address newOwner) private { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; /** * @dev Contract module that helps prevent reentrant calls to a function. * * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier * available, which can be applied to functions to make sure there are no nested * (reentrant) calls to them. * * Note that because there is a single `nonReentrant` guard, functions marked as * `nonReentrant` may not call one another. This can be worked around by making * those functions `private`, and then adding `external` `nonReentrant` entry * points to them. * * TIP: If you would like to learn more about reentrancy and alternative ways * to protect against it, check out our blog post * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul]. */ abstract contract ReentrancyGuard { // Booleans are more expensive than uint256 or any type that takes up a full // word because each write operation emits an extra SLOAD to first read the // slot's contents, replace the bits taken up by the boolean, and then write // back. This is the compiler's defense against contract upgrades and // pointer aliasing, and it cannot be disabled. // The values being non-zero value makes deployment a bit more expensive, // but in exchange the refund on every call to nonReentrant will be lower in // amount. Since refunds are capped to a percentage of the total // transaction's gas, it is best to keep them low in cases like this one, to // increase the likelihood of the full refund coming into effect. uint256 private constant _NOT_ENTERED = 1; uint256 private constant _ENTERED = 2; uint256 private _status; constructor() { _status = _NOT_ENTERED; } /** * @dev Prevents a contract from calling itself, directly or indirectly. * Calling a `nonReentrant` function from another `nonReentrant` * function is not supported. It is possible to prevent this from happening * by making the `nonReentrant` function external, and make it call a * `private` function that does the actual work. */ modifier nonReentrant() { // On the first call to nonReentrant, _notEntered will be true require(_status != _ENTERED, "ReentrancyGuard: reentrant call"); // Any calls to nonReentrant after this point will fail _status = _ENTERED; _; // By storing the original value once again, a refund is triggered (see // https://eips.ethereum.org/EIPS/eip-2200) _status = _NOT_ENTERED; } }
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; // CAUTION // This version of SafeMath should only be used with Solidity 0.8 or later, // because it relies on the compiler's built in overflow checks. /** * @dev Wrappers over Solidity's arithmetic operations. * * NOTE: `SafeMath` is no longer needed starting with Solidity 0.8. The compiler * now has built in overflow checking. */ library SafeMath { /** * @dev Returns the addition of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { uint256 c = a + b; if (c < a) return (false, 0); return (true, c); } } /** * @dev Returns the substraction of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b > a) return (false, 0); return (true, a - b); } } /** * @dev Returns the multiplication of two unsigned integers, with an overflow flag. * * _Available since v3.4._ */ function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { // Gas optimization: this is cheaper than requiring 'a' not being zero, but the // benefit is lost if 'b' is also tested. // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522 if (a == 0) return (true, 0); uint256 c = a * b; if (c / a != b) return (false, 0); return (true, c); } } /** * @dev Returns the division of two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a / b); } } /** * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag. * * _Available since v3.4._ */ function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) { unchecked { if (b == 0) return (false, 0); return (true, a % b); } } /** * @dev Returns the addition of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `+` operator. * * Requirements: * * - Addition cannot overflow. */ function add(uint256 a, uint256 b) internal pure returns (uint256) { return a + b; } /** * @dev Returns the subtraction of two unsigned integers, reverting on * overflow (when the result is negative). * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub(uint256 a, uint256 b) internal pure returns (uint256) { return a - b; } /** * @dev Returns the multiplication of two unsigned integers, reverting on * overflow. * * Counterpart to Solidity's `*` operator. * * Requirements: * * - Multiplication cannot overflow. */ function mul(uint256 a, uint256 b) internal pure returns (uint256) { return a * b; } /** * @dev Returns the integer division of two unsigned integers, reverting on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. * * Requirements: * * - The divisor cannot be zero. */ function div(uint256 a, uint256 b) internal pure returns (uint256) { return a / b; } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting when dividing by zero. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod(uint256 a, uint256 b) internal pure returns (uint256) { return a % b; } /** * @dev Returns the subtraction of two unsigned integers, reverting with custom message on * overflow (when the result is negative). * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {trySub}. * * Counterpart to Solidity's `-` operator. * * Requirements: * * - Subtraction cannot overflow. */ function sub( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b <= a, errorMessage); return a - b; } } /** * @dev Returns the integer division of two unsigned integers, reverting with custom message on * division by zero. The result is rounded towards zero. * * Counterpart to Solidity's `/` operator. Note: this function uses a * `revert` opcode (which leaves remaining gas untouched) while Solidity * uses an invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function div( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a / b; } } /** * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo), * reverting with custom message when dividing by zero. * * CAUTION: This function is deprecated because it requires allocating memory for the error * message unnecessarily. For custom revert reasons use {tryMod}. * * Counterpart to Solidity's `%` operator. This function uses a `revert` * opcode (which leaves remaining gas untouched) while Solidity uses an * invalid opcode to revert (consuming all remaining gas). * * Requirements: * * - The divisor cannot be zero. */ function mod( uint256 a, uint256 b, string memory errorMessage ) internal pure returns (uint256) { unchecked { require(b > 0, errorMessage); return a % b; } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"count","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_addresses","type":"address[]"},{"internalType":"uint256[]","name":"_counts","type":"uint256[]"},{"internalType":"uint256[]","name":"_prices","type":"uint256[]"}],"name":"batchSetAllowances","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"fundsAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fundsUnlockTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lockedFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"refund","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reserveFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"_count","type":"uint256"},{"internalType":"uint256","name":"_price","type":"uint256"}],"name":"setAllowance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_index","type":"uint8"},{"internalType":"address","name":"_address","type":"address"}],"name":"setFundsAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_unlock","type":"uint256"}],"name":"setFundsUnlockTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTokenContract","type":"address"}],"name":"setTokenContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenContract","outputs":[{"internalType":"contract ILand","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlockedFunds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]
Contract Creation Code
608060405234801561001057600080fd5b5061001a33610087565b6001805560005b600560ff8216101561008157600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319163317905580610079816100d7565b915050610021565b50610105565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060ff821660ff8114156100fc57634e487b7160e01b600052601160045260246000fd5b60010192915050565b6116f2806101146000396000f3fe6080604052600436106101125760003560e01c8063715018a6116100a5578063b746a8da11610074578063bbcd5bbe11610059578063bbcd5bbe146107d6578063e7e1f1c7146107f6578063f2fde38b1461081657600080fd5b8063b746a8da146107a0578063b8afaa48146107c057600080fd5b8063715018a61461073757806372a9e2321461074c5780638da5cb5b14610762578063af8480a11461078057600080fd5b806354c39e32116100e157806354c39e32146106b057806355a373d6146106d4578063578f88ed1461070c578063590e1ae31461072257600080fd5b806304acbb99146105ec5780633ccfd60b1461060e5780633e5beab91461062357806342dbb4ef1461069057600080fd5b366105e7576002600154141561016f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600181905554604080517f18160ddd00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156101d257600080fd5b505afa1580156101e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020a9190611573565b600260009054906101000a90046001600160a01b03166001600160a01b0316630480e58b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025857600080fd5b505afa15801561026c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102909190611573565b61029a9190611620565b9050600081116102ec5760405162461bcd60e51b815260206004820152600860248201527f536f6c64204f75740000000000000000000000000000000000000000000000006044820152606401610166565b336000908152600360209081526040918290208251808401909352805480845260019091015492909101829052908161038d5760405162461bcd60e51b815260206004820152603660248201527f4e6f742057686974656c697374656420466f72205468652053616c65204f722060448201527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006064820152608401610166565b803410156103dd5760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742046756e647300000000000000000000000000006044820152606401610166565b600081156103f4576103ef3483610836565b6103f6565b825b905060008382116104075781610409565b835b9050808510610418578061041a565b845b3360009081526003602052604081208054929350839290919061043e908490611620565b90915550506002546040517f79c65068000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379c6506890604401600060405180830381600087803b1580156104a857600080fd5b505af11580156104bc573d6000803e3d6000fd5b5050505060006104d5848361084990919063ffffffff16565b905080156105975760006104f560646104ef84605f610849565b90610836565b90506000610504826002610836565b905060006105128383610855565b6006549091506105229083610861565b6006556005546105329082610861565b60055561054b6105428585610855565b60075490610861565b6007555050336000908152600460209081526040808320815180830190925286825281830189815281546001818101845592865293909420915160029093029091019182559151910155505b60006105a33483610855565b905080156105da57604051339082156108fc029083906000818181858888f193505050501580156105d8573d6000803e3d6000fd5b505b5050600180555050505050005b600080fd5b3480156105f857600080fd5b5061060c61060736600461148d565b61086d565b005b34801561061a57600080fd5b5061060c610949565b34801561062f57600080fd5b5061067661063e366004611472565b6001600160a01b0316600090815260036020908152604091829020825180840190935280548084526001909101549290910182905291565b604080519283526020830191909152015b60405180910390f35b34801561069c57600080fd5b5061060c6106ab3660046114c0565b610c16565b3480156106bc57600080fd5b506106c660055481565b604051908152602001610687565b3480156106e057600080fd5b506002546106f4906001600160a01b031681565b6040516001600160a01b039091168152602001610687565b34801561071857600080fd5b506106c660095481565b34801561072e57600080fd5b5061060c610d05565b34801561074357600080fd5b5061060c610fcd565b34801561075857600080fd5b506106c660075481565b34801561076e57600080fd5b506000546001600160a01b03166106f4565b34801561078c57600080fd5b5061060c61079b36600461158c565b611033565b3480156107ac57600080fd5b5061060c6107bb36600461155a565b611171565b3480156107cc57600080fd5b506106c660065481565b3480156107e257600080fd5b5061060c6107f1366004611472565b6111d0565b34801561080257600080fd5b506106f461081136600461155a565b6112a1565b34801561082257600080fd5b5061060c610831366004611472565b6112cb565b600061084282846115df565b9392505050565b60006108428284611601565b60006108428284611620565b600061084282846115c7565b6000546001600160a01b031633146108c75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b03831661090f5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b60408051808201825292835260208084019283526001600160a01b0390941660009081526003909452909220905181559051600190910155565b600860008154811061095d5761095d6116a6565b6000918252602090912001546001600160a01b03163314806109a65750600860018154811061098e5761098e6116a6565b6000918252602090912001546001600160a01b031633145b806109d8575060086002815481106109c0576109c06116a6565b6000918252602090912001546001600160a01b031633145b80610a0a575060086003815481106109f2576109f26116a6565b6000918252602090912001546001600160a01b031633145b80610a3c57506008600481548110610a2457610a246116a6565b6000918252602090912001546001600160a01b031633145b610a885760405162461bcd60e51b815260206004820152601360248201527f556e617574686f72697a656420416363657373000000000000000000000000006044820152606401610166565b60006009544210610ab357600654600554610aa291610861565b600060058190556006559050610abe565b506005805460009091555b60008111610b0e5760405162461bcd60e51b815260206004820152601860248201527f5769746864726177616c204e6f7420417661696c61626c6500000000000000006044820152606401610166565b6000610b29610b1f60016005611637565b839060ff16610836565b905060015b600560ff82161015610ba35760088160ff1681548110610b5057610b506116a6565b60009182526020822001546040516001600160a01b039091169184156108fc02918591818181858888f19350505050158015610b90573d6000803e3d6000fd5b5080610b9b8161165a565b915050610b2e565b5060075415610c12576000600754905060006007819055506008600081548110610bcf57610bcf6116a6565b60009182526020822001546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610c0f573d6000803e3d6000fd5b50505b5050565b6000546001600160a01b03163314610c705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b8460005b818160ff161015610cfb57610ce988888360ff16818110610c9757610c976116a6565b9050602002016020810190610cac9190611472565b87878460ff16818110610cc157610cc16116a6565b9050602002013586868560ff16818110610cdd57610cdd6116a6565b9050602002013561086d565b80610cf38161165a565b915050610c74565b5050505050505050565b60026001541415610d585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610166565b600260015533600090815260046020526040902054610db95760405162461bcd60e51b815260206004820152601360248201527f4e6f20526566756e6420417661696c61626c65000000000000000000000000006044820152606401610166565b3360009081526004602052604081208054610dd690600190611620565b81548110610de657610de66116a6565b6000918252602080832060408051808201909152600293840290910180548252600101549181018290529350610e1b91610836565b9050600654811115610e6f5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742046756e647320417661696c61626c65000000006044820152606401610166565b815160011015610ed457336000908152600460205260409020805460019190610e99908390611620565b81548110610ea957610ea96116a6565b90600052602060002090600202016000016000828254610ec99190611620565b90915550610f119050565b336000908152600460205260409020805480610ef257610ef2611690565b6000828152602081206002600019909301928302018181556001015590555b600654610f1e9082610855565b6006556002546040517f0e370c3d0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690630e370c3d90602401600060405180830381600087803b158015610f7f57600080fd5b505af1158015610f93573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015610fc4573d6000803e3d6000fd5b50506001805550565b6000546001600160a01b031633146110275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b61103160006113ad565b565b6000546001600160a01b0316331461108d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166110d55760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b600560ff8316106111285760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420496e646578000000000000000000000000000000000000006044820152606401610166565b8060088360ff168154811061113f5761113f6116a6565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b6000546001600160a01b031633146111cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b600955565b6000546001600160a01b0316331461122a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166112725760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600881815481106112b157600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146113255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166113a15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610166565b6113aa816113ad565b50565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461142157600080fd5b919050565b60008083601f84011261143857600080fd5b50813567ffffffffffffffff81111561145057600080fd5b6020830191508360208260051b850101111561146b57600080fd5b9250929050565b60006020828403121561148457600080fd5b6108428261140a565b6000806000606084860312156114a257600080fd5b6114ab8461140a565b95602085013595506040909401359392505050565b600080600080600080606087890312156114d957600080fd5b863567ffffffffffffffff808211156114f157600080fd5b6114fd8a838b01611426565b9098509650602089013591508082111561151657600080fd5b6115228a838b01611426565b9096509450604089013591508082111561153b57600080fd5b5061154889828a01611426565b979a9699509497509295939492505050565b60006020828403121561156c57600080fd5b5035919050565b60006020828403121561158557600080fd5b5051919050565b6000806040838503121561159f57600080fd5b823560ff811681146115b057600080fd5b91506115be6020840161140a565b90509250929050565b600082198211156115da576115da61167a565b500190565b6000826115fc57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561161b5761161b61167a565b500290565b6000828210156116325761163261167a565b500390565b600060ff821660ff8416808210156116515761165161167a565b90039392505050565b600060ff821660ff8114156116715761167161167a565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212202e6b1df8a479432b6fe0e7760a37e4d695d3bd85b671f4db688c0cfe21da9cc464736f6c63430008070033
Deployed Bytecode
0x6080604052600436106101125760003560e01c8063715018a6116100a5578063b746a8da11610074578063bbcd5bbe11610059578063bbcd5bbe146107d6578063e7e1f1c7146107f6578063f2fde38b1461081657600080fd5b8063b746a8da146107a0578063b8afaa48146107c057600080fd5b8063715018a61461073757806372a9e2321461074c5780638da5cb5b14610762578063af8480a11461078057600080fd5b806354c39e32116100e157806354c39e32146106b057806355a373d6146106d4578063578f88ed1461070c578063590e1ae31461072257600080fd5b806304acbb99146105ec5780633ccfd60b1461060e5780633e5beab91461062357806342dbb4ef1461069057600080fd5b366105e7576002600154141561016f5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064015b60405180910390fd5b6002600181905554604080517f18160ddd00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916318160ddd916004808301926020929190829003018186803b1580156101d257600080fd5b505afa1580156101e6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061020a9190611573565b600260009054906101000a90046001600160a01b03166001600160a01b0316630480e58b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025857600080fd5b505afa15801561026c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906102909190611573565b61029a9190611620565b9050600081116102ec5760405162461bcd60e51b815260206004820152600860248201527f536f6c64204f75740000000000000000000000000000000000000000000000006044820152606401610166565b336000908152600360209081526040918290208251808401909352805480845260019091015492909101829052908161038d5760405162461bcd60e51b815260206004820152603660248201527f4e6f742057686974656c697374656420466f72205468652053616c65204f722060448201527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006064820152608401610166565b803410156103dd5760405162461bcd60e51b815260206004820152601260248201527f496e73756666696369656e742046756e647300000000000000000000000000006044820152606401610166565b600081156103f4576103ef3483610836565b6103f6565b825b905060008382116104075781610409565b835b9050808510610418578061041a565b845b3360009081526003602052604081208054929350839290919061043e908490611620565b90915550506002546040517f79c65068000000000000000000000000000000000000000000000000000000008152336004820152602481018390526001600160a01b03909116906379c6506890604401600060405180830381600087803b1580156104a857600080fd5b505af11580156104bc573d6000803e3d6000fd5b5050505060006104d5848361084990919063ffffffff16565b905080156105975760006104f560646104ef84605f610849565b90610836565b90506000610504826002610836565b905060006105128383610855565b6006549091506105229083610861565b6006556005546105329082610861565b60055561054b6105428585610855565b60075490610861565b6007555050336000908152600460209081526040808320815180830190925286825281830189815281546001818101845592865293909420915160029093029091019182559151910155505b60006105a33483610855565b905080156105da57604051339082156108fc029083906000818181858888f193505050501580156105d8573d6000803e3d6000fd5b505b5050600180555050505050005b600080fd5b3480156105f857600080fd5b5061060c61060736600461148d565b61086d565b005b34801561061a57600080fd5b5061060c610949565b34801561062f57600080fd5b5061067661063e366004611472565b6001600160a01b0316600090815260036020908152604091829020825180840190935280548084526001909101549290910182905291565b604080519283526020830191909152015b60405180910390f35b34801561069c57600080fd5b5061060c6106ab3660046114c0565b610c16565b3480156106bc57600080fd5b506106c660055481565b604051908152602001610687565b3480156106e057600080fd5b506002546106f4906001600160a01b031681565b6040516001600160a01b039091168152602001610687565b34801561071857600080fd5b506106c660095481565b34801561072e57600080fd5b5061060c610d05565b34801561074357600080fd5b5061060c610fcd565b34801561075857600080fd5b506106c660075481565b34801561076e57600080fd5b506000546001600160a01b03166106f4565b34801561078c57600080fd5b5061060c61079b36600461158c565b611033565b3480156107ac57600080fd5b5061060c6107bb36600461155a565b611171565b3480156107cc57600080fd5b506106c660065481565b3480156107e257600080fd5b5061060c6107f1366004611472565b6111d0565b34801561080257600080fd5b506106f461081136600461155a565b6112a1565b34801561082257600080fd5b5061060c610831366004611472565b6112cb565b600061084282846115df565b9392505050565b60006108428284611601565b60006108428284611620565b600061084282846115c7565b6000546001600160a01b031633146108c75760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b03831661090f5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b60408051808201825292835260208084019283526001600160a01b0390941660009081526003909452909220905181559051600190910155565b600860008154811061095d5761095d6116a6565b6000918252602090912001546001600160a01b03163314806109a65750600860018154811061098e5761098e6116a6565b6000918252602090912001546001600160a01b031633145b806109d8575060086002815481106109c0576109c06116a6565b6000918252602090912001546001600160a01b031633145b80610a0a575060086003815481106109f2576109f26116a6565b6000918252602090912001546001600160a01b031633145b80610a3c57506008600481548110610a2457610a246116a6565b6000918252602090912001546001600160a01b031633145b610a885760405162461bcd60e51b815260206004820152601360248201527f556e617574686f72697a656420416363657373000000000000000000000000006044820152606401610166565b60006009544210610ab357600654600554610aa291610861565b600060058190556006559050610abe565b506005805460009091555b60008111610b0e5760405162461bcd60e51b815260206004820152601860248201527f5769746864726177616c204e6f7420417661696c61626c6500000000000000006044820152606401610166565b6000610b29610b1f60016005611637565b839060ff16610836565b905060015b600560ff82161015610ba35760088160ff1681548110610b5057610b506116a6565b60009182526020822001546040516001600160a01b039091169184156108fc02918591818181858888f19350505050158015610b90573d6000803e3d6000fd5b5080610b9b8161165a565b915050610b2e565b5060075415610c12576000600754905060006007819055506008600081548110610bcf57610bcf6116a6565b60009182526020822001546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610c0f573d6000803e3d6000fd5b50505b5050565b6000546001600160a01b03163314610c705760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b8460005b818160ff161015610cfb57610ce988888360ff16818110610c9757610c976116a6565b9050602002016020810190610cac9190611472565b87878460ff16818110610cc157610cc16116a6565b9050602002013586868560ff16818110610cdd57610cdd6116a6565b9050602002013561086d565b80610cf38161165a565b915050610c74565b5050505050505050565b60026001541415610d585760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401610166565b600260015533600090815260046020526040902054610db95760405162461bcd60e51b815260206004820152601360248201527f4e6f20526566756e6420417661696c61626c65000000000000000000000000006044820152606401610166565b3360009081526004602052604081208054610dd690600190611620565b81548110610de657610de66116a6565b6000918252602080832060408051808201909152600293840290910180548252600101549181018290529350610e1b91610836565b9050600654811115610e6f5760405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742046756e647320417661696c61626c65000000006044820152606401610166565b815160011015610ed457336000908152600460205260409020805460019190610e99908390611620565b81548110610ea957610ea96116a6565b90600052602060002090600202016000016000828254610ec99190611620565b90915550610f119050565b336000908152600460205260409020805480610ef257610ef2611690565b6000828152602081206002600019909301928302018181556001015590555b600654610f1e9082610855565b6006556002546040517f0e370c3d0000000000000000000000000000000000000000000000000000000081523360048201526001600160a01b0390911690630e370c3d90602401600060405180830381600087803b158015610f7f57600080fd5b505af1158015610f93573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015610fc4573d6000803e3d6000fd5b50506001805550565b6000546001600160a01b031633146110275760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b61103160006113ad565b565b6000546001600160a01b0316331461108d5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166110d55760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b600560ff8316106111285760405162461bcd60e51b815260206004820152600d60248201527f496e76616c696420496e646578000000000000000000000000000000000000006044820152606401610166565b8060088360ff168154811061113f5761113f6116a6565b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055505050565b6000546001600160a01b031633146111cb5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b600955565b6000546001600160a01b0316331461122a5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166112725760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964204164647265737360881b6044820152606401610166565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b600881815481106112b157600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b031633146113255760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610166565b6001600160a01b0381166113a15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610166565b6113aa816113ad565b50565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b80356001600160a01b038116811461142157600080fd5b919050565b60008083601f84011261143857600080fd5b50813567ffffffffffffffff81111561145057600080fd5b6020830191508360208260051b850101111561146b57600080fd5b9250929050565b60006020828403121561148457600080fd5b6108428261140a565b6000806000606084860312156114a257600080fd5b6114ab8461140a565b95602085013595506040909401359392505050565b600080600080600080606087890312156114d957600080fd5b863567ffffffffffffffff808211156114f157600080fd5b6114fd8a838b01611426565b9098509650602089013591508082111561151657600080fd5b6115228a838b01611426565b9096509450604089013591508082111561153b57600080fd5b5061154889828a01611426565b979a9699509497509295939492505050565b60006020828403121561156c57600080fd5b5035919050565b60006020828403121561158557600080fd5b5051919050565b6000806040838503121561159f57600080fd5b823560ff811681146115b057600080fd5b91506115be6020840161140a565b90509250929050565b600082198211156115da576115da61167a565b500190565b6000826115fc57634e487b7160e01b600052601260045260246000fd5b500490565b600081600019048311821515161561161b5761161b61167a565b500290565b6000828210156116325761163261167a565b500390565b600060ff821660ff8416808210156116515761165161167a565b90039392505050565b600060ff821660ff8114156116715761167161167a565b60010192915050565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b634e487b7160e01b600052603260045260246000fdfea26469706673582212202e6b1df8a479432b6fe0e7760a37e4d695d3bd85b671f4db688c0cfe21da9cc464736f6c63430008070033
Deployed Bytecode Sourcemap
394:7035:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:1:3;2259:7;;:19;;2251:63;;;;-1:-1:-1;;;2251:63:3;;7522:2:5;2251:63:3;;;7504:21:5;7561:2;7541:18;;;7534:30;7600:33;7580:18;;;7573:61;7651:18;;2251:63:3;;;;;;;;;1680:1;2389:7;:18;;;3719:13:1;:27:::1;::::0;;;;;;;3657::::1;::::0;-1:-1:-1;;;;;3719:13:1::1;::::0;:25:::1;::::0;:27:::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;:13;:27;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3687:13;;;;;;;;;-1:-1:-1::0;;;;;3687:13:1::1;-1:-1:-1::0;;;;;3687:27:1::1;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:59;;;;:::i;:::-;3657:89;;3782:1;3760:19;:23;3752:44;;;::::0;-1:-1:-1;;;3752:44:1;;3898:2:5;3752:44:1::1;::::0;::::1;3880:21:5::0;3937:1;3917:18;;;3910:29;3975:10;3955:18;;;3948:38;4003:18;;3752:44:1::1;3696:331:5::0;3752:44:1::1;4047:10;3958:20;3267:21:::0;;;:11;:21;;;;;;;;;3238:50;;;;;;;;;;;;;;;;;;;;;;;;;;;4064:83:::1;;;::::0;-1:-1:-1;;;4064:83:1;;6037:2:5;4064:83:1::1;::::0;::::1;6019:21:5::0;6076:2;6056:18;;;6049:30;6115:34;6095:18;;;6088:62;6186:24;6166:18;;;6159:52;6228:19;;4064:83:1::1;5835:418:5::0;4064:83:1::1;4174:10;4161:9;:23;;4153:54;;;::::0;-1:-1:-1;;;4153:54:1;;5342:2:5;4153:54:1::1;::::0;::::1;5324:21:5::0;5381:2;5361:18;;;5354:30;5420:20;5400:18;;;5393:48;5458:18;;4153:54:1::1;5140:342:5::0;4153:54:1::1;4309:23;4336:15:::0;;:58:::1;;4369:25;:9;4383:10:::0;4369:13:::1;:25::i;:::-;4336:58;;;4354:12;4336:58;4309:86;;4401:20;4443:12;4425:15;:30;:63;;4473:15;4425:63;;;4458:12;4425:63;4401:88;;4533:12;4511:19;:34;:71;;4570:12;4511:71;;;4548:19;4511:71;4601:10;4589:23;::::0;;;:11:::1;:23;::::0;;;;:45;;4495:88;;-1:-1:-1;4495:88:1;;4589:23;;;:45:::1;::::0;4495:88;;4589:45:::1;:::i;:::-;::::0;;;-1:-1:-1;;4640:13:1::1;::::0;:49:::1;::::0;;;;4664:10:::1;4640:49;::::0;::::1;3325:74:5::0;3415:18;;;3408:34;;;-1:-1:-1;;;;;4640:13:1;;::::1;::::0;:23:::1;::::0;3298:18:5;;4640:49:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;4696:18;4717:28;4734:10;4717:12;:16;;:28;;;;:::i;:::-;4696:49:::0;-1:-1:-1;4755:14:1;;4751:672:::1;;4922:25;4950:27;4973:3;4950:18;:10:::0;4965:2:::1;4950:14;:18::i;:::-;:22:::0;::::1;:27::i;:::-;4922:55:::0;-1:-1:-1;4985:19:1::1;5007:24;4922:55:::0;5029:1:::1;5007:21;:24::i;:::-;4985:46:::0;-1:-1:-1;5039:21:1::1;5063:34;:17:::0;4985:46;5063:21:::1;:34::i;:::-;5119:11;::::0;5039:58;;-1:-1:-1;5119:28:1::1;::::0;5135:11;5119:15:::1;:28::i;:::-;5105:11;:42:::0;5171:13:::1;::::0;:32:::1;::::0;5189:13;5171:17:::1;:32::i;:::-;5155:13;:48:::0;5293:51:::1;5310:33;:10:::0;5325:17;5310:14:::1;:33::i;:::-;5293:12;::::0;;:16:::1;:51::i;:::-;5278:12;:66:::0;-1:-1:-1;;5364:10:1::1;5353:22;::::0;;;:10:::1;:22;::::0;;;;;;;5381:34;;;;::::1;::::0;;;;;;;;::::1;::::0;;;5353:63;;::::1;::::0;;::::1;::::0;;;;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;;;;;::::1;::::0;-1:-1:-1;4751:672:1::1;5505:15;5523:25;:9;5537:10:::0;5523:13:::1;:25::i;:::-;5505:43:::0;-1:-1:-1;5558:11:1;;5554:69:::1;;5579:37;::::0;5587:10:::1;::::0;5579:37;::::1;;;::::0;5608:7;;5579:37:::1;::::0;;;5608:7;5587:10;5579:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;5554:69;-1:-1:-1::0;;1637:1:3;2562:22;;-1:-1:-1;;;;;394:7035:1;;;;;2522:204;;;;;;;;;;-1:-1:-1;2522:204:1;;;;;:::i;:::-;;:::i;:::-;;6583:844;;;;;;;;;;;;;:::i;3132:221::-;;;;;;;;;;-1:-1:-1;3132:221:1;;;;;:::i;:::-;-1:-1:-1;;;;;3267:21:1;3195:13;3267:21;;;:11;:21;;;;;;;;;3238:50;;;;;;;;;;;;;;;;;;;;;;;;;;3132:221;;;;;8378:25:5;;;8434:2;8419:18;;8412:34;;;;8351:18;3132:221:1;;;;;;;;2779:300;;;;;;;;;;-1:-1:-1;2779:300:1;;;;;:::i;:::-;;:::i;1033:28::-;;;;;;;;;;;;;;;;;;;8168:25:5;;;8156:2;8141:18;1033:28:1;8022:177:5;577:26:1;;;;;;;;;;-1:-1:-1;577:26:1;;;;-1:-1:-1;;;;;577:26:1;;;;;;-1:-1:-1;;;;;3084:55:5;;;3066:74;;3054:2;3039:18;577:26:1;2920:226:5;1440:35:1;;;;;;;;;;;;;;;;5793:727;;;;;;;;;;;;;:::i;1598:92:2:-;;;;;;;;;;;;;:::i;1224:27:1:-;;;;;;;;;;;;;;;;966:85:2;;;;;;;;;;-1:-1:-1;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;966:85;;2219:250:1;;;;;;;;;;-1:-1:-1;2219:250:1;;;;;:::i;:::-;;:::i;3411:115::-;;;;;;;;;;-1:-1:-1;3411:115:1;;;;;:::i;:::-;;:::i;1134:26::-;;;;;;;;;;;;;;;;2027:188;;;;;;;;;;-1:-1:-1;2027:188:1;;;;;:::i;:::-;;:::i;1336:31::-;;;;;;;;;;-1:-1:-1;1336:31:1;;;;;:::i;:::-;;:::i;1839:189:2:-;;;;;;;;;;-1:-1:-1;1839:189:2;;;;;:::i;:::-;;:::i;3767:96:4:-;3825:7;3851:5;3855:1;3851;:5;:::i;:::-;3844:12;3767:96;-1:-1:-1;;;3767:96:4:o;3382:::-;3440:7;3466:5;3470:1;3466;:5;:::i;3039:96::-;3097:7;3123:5;3127:1;3123;:5;:::i;2672:96::-;2730:7;2756:5;2760:1;2756;:5;:::i;2522:204:1:-;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;-1:-1:-1;;;;;2625:22:1;::::1;2617:50;;;::::0;-1:-1:-1;;;2617:50:1;;7178:2:5;2617:50:1::1;::::0;::::1;7160:21:5::0;7217:2;7197:18;;;7190:30;-1:-1:-1;;;7236:18:5;;;7229:45;7291:18;;2617:50:1::1;6976:339:5::0;2617:50:1::1;2697:24;::::0;;;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;-1:-1:-1;;;;;2673:21:1;;::::1;-1:-1:-1::0;2673:21:1;;;:11:::1;:21:::0;;;;;;:48;;;;;;::::1;::::0;;::::1;::::0;2522:204::o;6583:844::-;1813:14;1828:1;1813:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1813:17:1;1799:10;:31;;:70;;;1852:14;1867:1;1852:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1852:17:1;1838:10;:31;1799:70;:109;;;;1891:14;1906:1;1891:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1891:17:1;1877:10;:31;1799:109;:148;;;;1930:14;1945:1;1930:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1930:17:1;1916:10;:31;1799:148;:187;;;;1969:14;1984:1;1969:17;;;;;;;;:::i;:::-;;;;;;;;;;;-1:-1:-1;;;;;1969:17:1;1955:10;:31;1799:187;1791:219;;;;-1:-1:-1;;;1791:219:1;;5689:2:5;1791:219:1;;;5671:21:5;5728:2;5708:18;;;5701:30;5767:21;5747:18;;;5740:49;5806:18;;1791:219:1;5487:343:5;1791:219:1;6702:17:::1;6748:20;;6729:15;:39;6725:221;;6808:11;::::0;6790:13:::1;::::0;:30:::1;::::0;:17:::1;:30::i;:::-;6844:1;6828:13;:17:::0;;;6853:11:::1;:15:::0;6778:42;-1:-1:-1;6725:221:1::1;;;-1:-1:-1::0;6901:13:1::1;::::0;;6938:1:::1;6922:17:::0;;;6725:221:::1;6972:1;6960:9;:13;6952:50;;;::::0;-1:-1:-1;;;6952:50:1;;4989:2:5;6952:50:1::1;::::0;::::1;4971:21:5::0;5028:2;5008:18;;;5001:30;5067:26;5047:18;;;5040:54;5111:18;;6952:50:1::1;4787:348:5::0;6952:50:1::1;7058:23;7084:37;7098:22;7119:1;957;7098:22;:::i;:::-;7084:9:::0;;:37:::1;;:13;:37::i;:::-;7058:63:::0;-1:-1:-1;7142:1:1::1;7127:114;957:1;7145:22;::::0;::::1;;7127:114;;;7190:14;7205:1;7190:17;;;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;7182:52:::1;::::0;-1:-1:-1;;;;;7190:17:1;;::::1;::::0;7182:52;::::1;;;::::0;7218:15;;7182:52;7190:17;7182:52;7218:15;7190:17;7182:52;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;7169:3:1;::::1;::::0;::::1;:::i;:::-;;;;7127:114;;;-1:-1:-1::0;7290:12:1::1;::::0;:16;7286:137:::1;;7316:12;7331;;7316:27;;7366:1;7351:12;:16;;;;7383:14;7398:1;7383:17;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;::::0;7375:41:::1;::::0;-1:-1:-1;;;;;7383:17:1;;::::1;::::0;7375:41;::::1;;;::::0;7411:4;;7375:41;7383:17;7375:41;7411:4;7383:17;7375:41;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;7308:115;7286:137;6624:803;;6583:844::o:0;2779:300::-;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;2951:10:1;2935:13:::1;2975:100;2997:5;2993:1;:9;;;2975:100;;;3017:51;3030:10;;3041:1;3030:13;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;3045:7;;3053:1;3045:10;;;;;;;;;:::i;:::-;;;;;;;3057:7;;3065:1;3057:10;;;;;;;;;:::i;:::-;;;;;;;3017:12;:51::i;:::-;3004:3:::0;::::1;::::0;::::1;:::i;:::-;;;;2975:100;;;;2929:150;2779:300:::0;;;;;;:::o;5793:727::-;1680:1:3;2259:7;;:19;;2251:63;;;;-1:-1:-1;;;2251:63:3;;7522:2:5;2251:63:3;;;7504:21:5;7561:2;7541:18;;;7534:30;7600:33;7580:18;;;7573:61;7651:18;;2251:63:3;7320:355:5;2251:63:3;1680:1;2389:7;:18;5858:10:1::1;5879:1;5847:22:::0;;;:10:::1;:22;::::0;;;;:29;5839:65:::1;;;::::0;-1:-1:-1;;;5839:65:1;;4641:2:5;5839:65:1::1;::::0;::::1;4623:21:5::0;4680:2;4660:18;;;4653:30;4719:21;4699:18;;;4692:49;4758:18;;5839:65:1::1;4439:343:5::0;5839:65:1::1;5948:10;5910:24;5937:22:::0;;;:10:::1;:22;::::0;;;;5960:29;;:33:::1;::::0;5992:1:::1;::::0;5960:33:::1;:::i;:::-;5937:57;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;5910:84:::1;::::0;;;;::::1;::::0;;;5937:57:::1;::::0;;::::1;::::0;;::::1;5910:84:::0;;;;::::1;;::::0;;;::::1;::::0;;;;-1:-1:-1;6023:21:1::1;::::0;:18:::1;:21::i;:::-;6000:44;;6074:11;;6058:12;:27;;6050:68;;;::::0;-1:-1:-1;;;6050:68:1;;6460:2:5;6050:68:1::1;::::0;::::1;6442:21:5::0;6499:2;6479:18;;;6472:30;6538;6518:18;;;6511:58;6586:18;;6050:68:1::1;6258:352:5::0;6050:68:1::1;6183:14:::0;;6200:1:::1;-1:-1:-1::0;6179:156:1::1;;;6222:10;6211:22;::::0;;;:10:::1;:22;::::0;;;;6234:29;;6278:1:::1;::::0;6211:22;6234:33:::1;::::0;6278:1;;6234:33:::1;:::i;:::-;6211:57;;;;;;;;:::i;:::-;;;;;;;;;;;:63;;;:68;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;6179:156:1::1;::::0;-1:-1:-1;6179:156:1::1;;6311:10;6300:22;::::0;;;:10:::1;:22;::::0;;;;:28;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;::::1;-1:-1:-1::0;;6300:28:1;;;;;::::1;;::::0;;;::::1;;::::0;;;6179:156:::1;6391:11;::::0;:29:::1;::::0;6407:12;6391:15:::1;:29::i;:::-;6377:11;:43:::0;6427:13:::1;::::0;:39:::1;::::0;;;;6455:10:::1;6427:39;::::0;::::1;3066:74:5::0;-1:-1:-1;;;;;6427:13:1;;::::1;::::0;:27:::1;::::0;3039:18:5;;6427:39:1::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6473:42:1::1;::::0;6481:10:::1;::::0;-1:-1:-1;6473:42:1;::::1;;;::::0;-1:-1:-1;6502:12:1;;6473:42:::1;::::0;;;6502:12;6481:10;6473:42;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;1637:1:3;2562:22;;-1:-1:-1;5793:727:1:o;1598:92:2:-;1012:7;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;1662:21:::1;1680:1;1662:9;:21::i;:::-;1598:92::o:0;2219:250:1:-;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;-1:-1:-1;;;;;2309:22:1;::::1;2301:50;;;::::0;-1:-1:-1;;;2301:50:1;;7178:2:5;2301:50:1::1;::::0;::::1;7160:21:5::0;7217:2;7197:18;;;7190:30;-1:-1:-1;;;7236:18:5;;;7229:45;7291:18;;2301:50:1::1;6976:339:5::0;2301:50:1::1;957:1;2380:27;::::0;::::1;;2357:68;;;::::0;-1:-1:-1;;;2357:68:1;;7882:2:5;2357:68:1::1;::::0;::::1;7864:21:5::0;7921:2;7901:18;;;7894:30;7960:15;7940:18;;;7933:43;7993:18;;2357:68:1::1;7680:337:5::0;2357:68:1::1;2456:8;2431:14;2446:6;2431:22;;;;;;;;;;:::i;:::-;;;;;;;;;:33;;;;;-1:-1:-1::0;;;;;2431:33:1::1;;;;;-1:-1:-1::0;;;;;2431:33:1::1;;;;;;2219:250:::0;;:::o;3411:115::-;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;3491:20:1::1;:30:::0;3411:115::o;2027:188::-;1012:7:2;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;-1:-1:-1;;;;;2113:31:1;::::1;2105:59;;;::::0;-1:-1:-1;;;2105:59:1;;7178:2:5;2105:59:1::1;::::0;::::1;7160:21:5::0;7217:2;7197:18;;;7190:30;-1:-1:-1;;;7236:18:5;;;7229:45;7291:18;;2105:59:1::1;6976:339:5::0;2105:59:1::1;2170:13;:40:::0;;-1:-1:-1;;2170:40:1::1;-1:-1:-1::0;;;;;2170:40:1;;;::::1;::::0;;;::::1;::::0;;2027:188::o;1336:31::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1336:31:1;;-1:-1:-1;1336:31:1;:::o;1839:189:2:-;1012:7;1038:6;-1:-1:-1;;;;;1038:6:2;666:10:0;1178:23:2;1170:68;;;;-1:-1:-1;;;1170:68:2;;6817:2:5;1170:68:2;;;6799:21:5;;;6836:18;;;6829:30;6895:34;6875:18;;;6868:62;6947:18;;1170:68:2;6615:356:5;1170:68:2;-1:-1:-1;;;;;1927:22:2;::::1;1919:73;;;::::0;-1:-1:-1;;;1919:73:2;;4234:2:5;1919:73:2::1;::::0;::::1;4216:21:5::0;4273:2;4253:18;;;4246:30;4312:34;4292:18;;;4285:62;4383:8;4363:18;;;4356:36;4409:19;;1919:73:2::1;4032:402:5::0;1919:73:2::1;2002:19;2012:8;2002:9;:19::i;:::-;1839:189:::0;:::o;2034:169::-;2089:16;2108:6;;-1:-1:-1;;;;;2124:17:2;;;-1:-1:-1;;2124:17:2;;;;;;2156:40;;2108:6;;;;;;;2156:40;;2089:16;2156:40;2079:124;2034:169;:::o;14:196:5:-;82:20;;-1:-1:-1;;;;;131:54:5;;121:65;;111:93;;200:1;197;190:12;111:93;14:196;;;:::o;215:367::-;278:8;288:6;342:3;335:4;327:6;323:17;319:27;309:55;;360:1;357;350:12;309:55;-1:-1:-1;383:20:5;;426:18;415:30;;412:50;;;458:1;455;448:12;412:50;495:4;487:6;483:17;471:29;;555:3;548:4;538:6;535:1;531:14;523:6;519:27;515:38;512:47;509:67;;;572:1;569;562:12;509:67;215:367;;;;;:::o;587:186::-;646:6;699:2;687:9;678:7;674:23;670:32;667:52;;;715:1;712;705:12;667:52;738:29;757:9;738:29;:::i;778:322::-;855:6;863;871;924:2;912:9;903:7;899:23;895:32;892:52;;;940:1;937;930:12;892:52;963:29;982:9;963:29;:::i;:::-;953:39;1039:2;1024:18;;1011:32;;-1:-1:-1;1090:2:5;1075:18;;;1062:32;;778:322;-1:-1:-1;;;778:322:5:o;1105:1088::-;1263:6;1271;1279;1287;1295;1303;1356:2;1344:9;1335:7;1331:23;1327:32;1324:52;;;1372:1;1369;1362:12;1324:52;1412:9;1399:23;1441:18;1482:2;1474:6;1471:14;1468:34;;;1498:1;1495;1488:12;1468:34;1537:70;1599:7;1590:6;1579:9;1575:22;1537:70;:::i;:::-;1626:8;;-1:-1:-1;1511:96:5;-1:-1:-1;1714:2:5;1699:18;;1686:32;;-1:-1:-1;1730:16:5;;;1727:36;;;1759:1;1756;1749:12;1727:36;1798:72;1862:7;1851:8;1840:9;1836:24;1798:72;:::i;:::-;1889:8;;-1:-1:-1;1772:98:5;-1:-1:-1;1977:2:5;1962:18;;1949:32;;-1:-1:-1;1993:16:5;;;1990:36;;;2022:1;2019;2012:12;1990:36;;2061:72;2125:7;2114:8;2103:9;2099:24;2061:72;:::i;:::-;1105:1088;;;;-1:-1:-1;1105:1088:5;;-1:-1:-1;1105:1088:5;;2152:8;;1105:1088;-1:-1:-1;;;1105:1088:5:o;2198:180::-;2257:6;2310:2;2298:9;2289:7;2285:23;2281:32;2278:52;;;2326:1;2323;2316:12;2278:52;-1:-1:-1;2349:23:5;;2198:180;-1:-1:-1;2198:180:5:o;2383:184::-;2453:6;2506:2;2494:9;2485:7;2481:23;2477:32;2474:52;;;2522:1;2519;2512:12;2474:52;-1:-1:-1;2545:16:5;;2383:184;-1:-1:-1;2383:184:5:o;2572:343::-;2638:6;2646;2699:2;2687:9;2678:7;2674:23;2670:32;2667:52;;;2715:1;2712;2705:12;2667:52;2754:9;2741:23;2804:4;2797:5;2793:16;2786:5;2783:27;2773:55;;2824:1;2821;2814:12;2773:55;2847:5;-1:-1:-1;2871:38:5;2905:2;2890:18;;2871:38;:::i;:::-;2861:48;;2572:343;;;;;:::o;8457:128::-;8497:3;8528:1;8524:6;8521:1;8518:13;8515:39;;;8534:18;;:::i;:::-;-1:-1:-1;8570:9:5;;8457:128::o;8590:274::-;8630:1;8656;8646:189;;-1:-1:-1;;;8688:1:5;8681:88;8792:4;8789:1;8782:15;8820:4;8817:1;8810:15;8646:189;-1:-1:-1;8849:9:5;;8590:274::o;8869:168::-;8909:7;8975:1;8971;8967:6;8963:14;8960:1;8957:21;8952:1;8945:9;8938:17;8934:45;8931:71;;;8982:18;;:::i;:::-;-1:-1:-1;9022:9:5;;8869:168::o;9042:125::-;9082:4;9110:1;9107;9104:8;9101:34;;;9115:18;;:::i;:::-;-1:-1:-1;9152:9:5;;9042:125::o;9172:195::-;9210:4;9247;9244:1;9240:12;9279:4;9276:1;9272:12;9304:3;9299;9296:12;9293:38;;;9311:18;;:::i;:::-;9348:13;;;9172:195;-1:-1:-1;;;9172:195:5:o;9372:175::-;9409:3;9453:4;9446:5;9442:16;9482:4;9473:7;9470:17;9467:43;;;9490:18;;:::i;:::-;9539:1;9526:15;;9372:175;-1:-1:-1;;9372:175:5:o;9552:184::-;-1:-1:-1;;;9601:1:5;9594:88;9701:4;9698:1;9691:15;9725:4;9722:1;9715:15;9741:184;-1:-1:-1;;;9790:1:5;9783:88;9890:4;9887:1;9880:15;9914:4;9911:1;9904:15;9930:184;-1:-1:-1;;;9979:1:5;9972:88;10079:4;10076:1;10069:15;10103:4;10100:1;10093:15
Swarm Source
ipfs://2e6b1df8a479432b6fe0e7760a37e4d695d3bd85b671f4db688c0cfe21da9cc4
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 26 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.