Feature Tip: Add private address tag to any address under My Name Tag !
More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 6,610 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Bridge Send | 16460190 | 671 days ago | IN | 0.00034 ETH | 0.00308004 | ||||
Bridge Send | 16460187 | 671 days ago | IN | 0.00034 ETH | 0.0033997 | ||||
Bridge Send | 16460002 | 671 days ago | IN | 0.00034 ETH | 0.00333758 | ||||
Bridge Send | 16460002 | 671 days ago | IN | 0.00034 ETH | 0.00333758 | ||||
Bridge Send | 16440978 | 673 days ago | IN | 0.00034 ETH | 0.0031412 | ||||
Set Unlocker | 16423316 | 676 days ago | IN | 0 ETH | 0.00179359 | ||||
Bridge Send | 16412542 | 677 days ago | IN | 0.00034 ETH | 0.00323263 | ||||
Bridge Send | 16407544 | 678 days ago | IN | 0.00034 ETH | 0.00328263 | ||||
Bridge Send | 16404298 | 679 days ago | IN | 0.00034 ETH | 0.00398735 | ||||
Bridge Send | 16397890 | 679 days ago | IN | 0.00034 ETH | 0.00335019 | ||||
Bridge Send | 16397085 | 680 days ago | IN | 0.00034 ETH | 0.00320329 | ||||
Bridge Send | 16397085 | 680 days ago | IN | 0.00034 ETH | 0.0029067 | ||||
Bridge Send | 16397056 | 680 days ago | IN | 0.00034 ETH | 0.00311613 | ||||
Bridge Send | 16395894 | 680 days ago | IN | 0.00034 ETH | 0.00324565 | ||||
Bridge Send | 16395890 | 680 days ago | IN | 0.00034 ETH | 0.00343222 | ||||
Bridge Send | 16395888 | 680 days ago | IN | 0.00034 ETH | 0.00342038 | ||||
Bridge Send | 16395885 | 680 days ago | IN | 0.00034 ETH | 0.00375447 | ||||
Bridge Send | 16395883 | 680 days ago | IN | 0.00034 ETH | 0.00337522 | ||||
Bridge Send | 16395877 | 680 days ago | IN | 0.00034 ETH | 0.00335269 | ||||
Bridge Send | 16395874 | 680 days ago | IN | 0.00034 ETH | 0.00317349 | ||||
Bridge Send | 16395870 | 680 days ago | IN | 0.00034 ETH | 0.00338388 | ||||
Bridge Send | 16395861 | 680 days ago | IN | 0.00034 ETH | 0.0031742 | ||||
Bridge Send | 16395859 | 680 days ago | IN | 0.00034 ETH | 0.00311706 | ||||
Bridge Send | 16395856 | 680 days ago | IN | 0.00034 ETH | 0.00315863 | ||||
Bridge Send | 16395854 | 680 days ago | IN | 0.00034 ETH | 0.0031641 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
16460190 | 671 days ago | 0.00034 ETH | ||||
16460187 | 671 days ago | 0.00034 ETH | ||||
16460002 | 671 days ago | 0.00034 ETH | ||||
16460002 | 671 days ago | 0.00034 ETH | ||||
16440978 | 673 days ago | 0.00034 ETH | ||||
16412542 | 677 days ago | 0.00034 ETH | ||||
16407544 | 678 days ago | 0.00034 ETH | ||||
16404298 | 679 days ago | 0.00034 ETH | ||||
16397890 | 679 days ago | 0.00034 ETH | ||||
16397085 | 680 days ago | 0.00034 ETH | ||||
16397085 | 680 days ago | 0.00034 ETH | ||||
16397056 | 680 days ago | 0.00034 ETH | ||||
16395894 | 680 days ago | 0.00034 ETH | ||||
16395890 | 680 days ago | 0.00034 ETH | ||||
16395888 | 680 days ago | 0.00034 ETH | ||||
16395885 | 680 days ago | 0.00034 ETH | ||||
16395883 | 680 days ago | 0.00034 ETH | ||||
16395877 | 680 days ago | 0.00034 ETH | ||||
16395874 | 680 days ago | 0.00034 ETH | ||||
16395870 | 680 days ago | 0.00034 ETH | ||||
16395861 | 680 days ago | 0.00034 ETH | ||||
16395859 | 680 days ago | 0.00034 ETH | ||||
16395856 | 680 days ago | 0.00034 ETH | ||||
16395854 | 680 days ago | 0.00034 ETH | ||||
16395851 | 680 days ago | 0.00034 ETH |
Loading...
Loading
Contract Name:
NFTBridgeTransfers
Compiler Version
v0.8.2+commit.661d1103
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2021-08-20 */ // SPDX-License-Identifier: MIT pragma solidity 0.8.2; interface IERC165 { /** * @dev Returns true ifa this contract implements the interface defined by * `interfaceId`. See the corresponding * https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] * to learn more about how these ids are created. * * This function call must use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) external view returns (bool); } interface IERC721 { function safeTransferFrom(address from, address to, uint256 tokenId) external; function setApprovalForAll(address operator, bool _approved) external; } interface NFT2D { function getTokenDetails(uint256 index) external view returns (uint128 lastvalue, uint32 aType, uint32 customDetails, uint32 lastTx, uint32 lastPayment); } interface NFT3D { function getTokenDetails(uint256 index) external view returns (uint32 aType, uint32 customDetails, uint32 lastTx, uint32 lastPayment, uint256 initialvalue, string memory coin); } abstract contract ERC165 is IERC165 { /** * @dev Mapping of interface ids to whether or not it's supported. */ mapping(bytes4 => bool) private _supportedInterfaces; constructor () { // Derived contracts need only register support for their own interfaces, // we register support for ERC165 itself here _registerInterface(type(IERC165).interfaceId); } /** * @dev See {IERC165-supportsInterface}. * * Time complexity O(1), guaranteed to always use less than 30 000 gas. */ function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) { return _supportedInterfaces[interfaceId]; } /** * @dev Registers the contract as an implementer of the interface defined by * `interfaceId`. Support of the actual ERC165 interface is automatic and * registering its interface id is not required. * * See {IERC165-supportsInterface}. * * Requirements: * * - `interfaceId` cannot be the ERC165 invalid interface (`0xffffffff`). */ function _registerInterface(bytes4 interfaceId) internal virtual { require(interfaceId != 0xffffffff, "ERC165: invalid interface id"); _supportedInterfaces[interfaceId] = true; } } library ECDSA { /** * @dev Returns the address that signed a hashed message (`hash`) with * `signature`. This address can then be used for verification purposes. * * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures: * this function rejects them by requiring the `s` value to be in the lower * half order, and the `v` value to be either 27 or 28. * * IMPORTANT: `hash` _must_ be the result of a hash operation for the * verification to be secure: it is possible to craft signatures that * recover to arbitrary addresses for non-hashed data. A safe way to ensure * this is by receiving a hash of the original message (which may otherwise * be too long), and then calling {toEthSignedMessageHash} on it. * * Documentation for signature generation: * - with https://web3js.readthedocs.io/en/v1.3.4/web3-eth-accounts.html#sign[Web3.js] * - with https://docs.ethers.io/v5/api/signer/#Signer-signMessage[ethers] */ function recover(bytes32 hash, bytes memory signature) internal pure returns (address) { // Divide the signature in r, s and v variables bytes32 r; bytes32 s; uint8 v; // Check the signature length // - case 65: r,s,v signature (standard) // - case 64: r,vs signature (cf https://eips.ethereum.org/EIPS/eip-2098) _Available since v4.1._ if (signature.length == 65) { // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. // solhint-disable-next-line no-inline-assembly assembly { r := mload(add(signature, 0x20)) s := mload(add(signature, 0x40)) v := byte(0, mload(add(signature, 0x60))) } } else if (signature.length == 64) { // ecrecover takes the signature parameters, and the only way to get them // currently is to use assembly. // solhint-disable-next-line no-inline-assembly assembly { let vs := mload(add(signature, 0x40)) r := mload(add(signature, 0x20)) s := and(vs, 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) v := add(shr(255, vs), 27) } } else { revert("ECDSA: invalid signature length"); } return recover(hash, v, r, s); } /** * @dev Overload of {ECDSA-recover} that receives the `v`, * `r` and `s` signature fields separately. */ function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) { // EIP-2 still allows signature malleability for ecrecover(). Remove this possibility and make the signature // unique. Appendix F in the Ethereum Yellow paper (https://ethereum.github.io/yellowpaper/paper.pdf), defines // the valid range for s in (281): 0 < s < secp256k1n ÷ 2 + 1, and for v in (282): v ∈ {27, 28}. Most // signatures from current libraries generate a unique signature with an s-value in the lower half order. // // If your library generates malleable signatures, such as s-values in the upper range, calculate a new s-value // with 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAAEDCE6AF48A03BBFD25E8CD0364141 - s1 and flip v from 27 to 28 or // vice versa. If your library also generates signatures with 0/1 for v instead 27/28, add 27 to v to accept // these malleable signatures as well. require(uint256(s) <= 0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0, "ECDSA: invalid signature 's' value"); require(v == 27 || v == 28, "ECDSA: invalid signature 'v' value"); // If the signature is valid (and not malleable), return the signer address address signer = ecrecover(hash, v, r, s); require(signer != address(0), "ECDSA: invalid signature"); return signer; } /** * @dev Returns an Ethereum Signed Message, created from a `hash`. This * produces hash corresponding to the one signed with the * https://eth.wiki/json-rpc/API#eth_sign[`eth_sign`] * JSON-RPC method as part of EIP-191. * * See {recover}. */ function toEthSignedMessageHash(bytes32 hash) internal pure returns (bytes32) { // 32 is the length in bytes of hash, // enforced by the type signature above return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", hash)); } /** * @dev Returns an Ethereum Signed Typed Data, created from a * `domainSeparator` and a `structHash`. This produces hash corresponding * to the one signed with the * https://eips.ethereum.org/EIPS/eip-712[`eth_signTypedData`] * JSON-RPC method as part of EIP-712. * * See {recover}. */ function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32) { return keccak256(abi.encodePacked("\x19\x01", domainSeparator, structHash)); } } library Address { function isContract(address account) internal view returns (bool) { // This method relies on extcodesize, which returns 0 for contracts in // construction, since the code is only stored at the end of the // constructor execution. uint256 size; // solhint-disable-next-line no-inline-assembly assembly { size := extcodesize(account) } return size > 0; } function sendValue(address payable recipient, uint256 amount) internal { require(address(this).balance >= amount, "Address: insufficient balance"); // solhint-disable-next-line avoid-low-level-calls, avoid-call-value (bool success, ) = recipient.call{ value: amount }(""); require(success, "Address: unable to send value, recipient may have reverted"); } function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCall(target, data, "Address: low-level call failed"); } function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { return functionCallWithValue(target, data, 0, errorMessage); } function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { return functionCallWithValue(target, data, value, "Address: low-level call with value failed"); } function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) { require(address(this).balance >= value, "Address: insufficient balance for call"); require(isContract(target), "Address: call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.call{ value: value }(data); return _verifyCallResult(success, returndata, errorMessage); } function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { return functionStaticCall(target, data, "Address: low-level static call failed"); } function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) { require(isContract(target), "Address: static call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.staticcall(data); return _verifyCallResult(success, returndata, errorMessage); } function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { return functionDelegateCall(target, data, "Address: low-level delegate call failed"); } function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) { require(isContract(target), "Address: delegate call to non-contract"); // solhint-disable-next-line avoid-low-level-calls (bool success, bytes memory returndata) = target.delegatecall(data); return _verifyCallResult(success, returndata, errorMessage); } function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) { if (success) { return returndata; } else { // Look for revert reason and bubble it up if present if (returndata.length > 0) { // The easiest way to bubble the revert reason is using memory via assembly // solhint-disable-next-line no-inline-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert(errorMessage); } } } } abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691 return msg.data; } } contract NFTBridgeTransfers is Context, ERC165 { address payable public bankVault; address public nftVault; address public NFT2DAddress; address public NFT3DAddress; uint256 public gasFee; address public unlocker; mapping (uint8 => address) public managers; mapping (bytes32 => bool) public executedTask; uint16 public taskIndex; uint256 public depositIndex; struct Deposit { uint256 assetId; address sender; uint128 value; uint32 lastTrade; uint32 lastPayment; uint32 typeDetail; uint32 customDetails; } mapping (uint256 => Deposit) public deposits; bytes4 private constant _ERC721_RECEIVED = 0x150b7a02; modifier isManager() { require(managers[0] == msg.sender || managers[1] == msg.sender || managers[2] == msg.sender, "Not manager"); _; } constructor() { NFT2DAddress = 0x57E9a39aE8eC404C08f88740A9e6E306f50c937f; NFT3DAddress = 0xB20217bf3d89667Fa15907971866acD6CcD570C8; bankVault = payable(0xf7A9F6001ff8b499149569C54852226d719f2D76); nftVault = address(this); managers[0] = msg.sender; managers[1] = 0xeA50CE6EBb1a5E4A8F90Bfb35A2fb3c3F0C673ec; managers[2] = 0xB1A951141F1b3A16824241f687C3741459E33225; gasFee = (1 gwei)*70000; _registerInterface(_ERC721_RECEIVED); } function bridgeSend(uint256 _assetId, address _nftAddress) public payable returns (bool) { require((_nftAddress == NFT2DAddress) || (_nftAddress == NFT3DAddress), "Invalid NFT Contract"); require(msg.value >= gasFee, "Invalid gas fee"); Address.sendValue(bankVault, msg.value); uint32 assetType; uint32 lastTransfer; uint32 lastPayment; uint32 customDetails; uint256 value; if (_nftAddress == NFT2DAddress) { (value, assetType, customDetails, lastTransfer, lastPayment ) = NFT2D(NFT2DAddress).getTokenDetails(_assetId); } else { (assetType, customDetails, lastTransfer, lastPayment, value, ) = NFT3D(NFT3DAddress).getTokenDetails(_assetId); } deposits[depositIndex].assetId = _assetId; deposits[depositIndex].sender = msg.sender; deposits[depositIndex].value = uint128(value); deposits[depositIndex].lastTrade = lastTransfer; deposits[depositIndex].lastPayment = lastPayment; deposits[depositIndex].typeDetail = assetType; deposits[depositIndex].customDetails = customDetails; depositIndex += 1; IERC721(_nftAddress).safeTransferFrom(msg.sender, nftVault, _assetId); return true; } function setBankVault(address _vault, bytes memory _sig) public isManager { uint8 mId = 1; bytes32 taskHash = keccak256(abi.encode(_vault, taskIndex, mId)); verifyApproval(taskHash, _sig); bankVault = payable(_vault); } function setGasFee(uint256 _fee, bytes memory _sig) public isManager { uint8 mId = 2; bytes32 taskHash = keccak256(abi.encode(_fee, taskIndex, mId)); verifyApproval(taskHash, _sig); gasFee = _fee; } function setUnlocker(address _unlocker, bytes memory _sig) public isManager { uint8 mId = 3; bytes32 taskHash = keccak256(abi.encode(_unlocker, taskIndex, mId)); verifyApproval(taskHash, _sig); unlocker = _unlocker; } function setUnlockerApproval(bool _approval, bytes memory _sig) public isManager { uint8 mId = 4; bytes32 taskHash = keccak256(abi.encode(_approval, taskIndex, mId)); verifyApproval(taskHash, _sig); IERC721(NFT2DAddress).setApprovalForAll(unlocker, _approval); IERC721(NFT3DAddress).setApprovalForAll(unlocker, _approval); } function verifyApproval(bytes32 _taskHash, bytes memory _sig) private { require(executedTask[_taskHash] == false, "Task already executed"); address mSigner = ECDSA.recover(ECDSA.toEthSignedMessageHash(_taskHash), _sig); require(mSigner == managers[0] || mSigner == managers[1] || mSigner == managers[2], "Invalid signature" ); require(mSigner != msg.sender, "Signature from different managers required"); executedTask[_taskHash] = true; taskIndex += 1; } function changeManager(address _manager, uint8 _index, bytes memory _sig) public isManager { require(_index >= 0 && _index <= 2, "Invalid index"); uint8 mId = 100; bytes32 taskHash = keccak256(abi.encode(_manager, taskIndex, mId)); verifyApproval(taskHash, _sig); managers[_index] = _manager; } function onERC721Received(address operator, address from, uint256 tokenId, bytes calldata data) public returns (bytes4) { return _ERC721_RECEIVED; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NFT2DAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NFT3DAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bankVault","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_assetId","type":"uint256"},{"internalType":"address","name":"_nftAddress","type":"address"}],"name":"bridgeSend","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"},{"internalType":"uint8","name":"_index","type":"uint8"},{"internalType":"bytes","name":"_sig","type":"bytes"}],"name":"changeManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"depositIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"deposits","outputs":[{"internalType":"uint256","name":"assetId","type":"uint256"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint128","name":"value","type":"uint128"},{"internalType":"uint32","name":"lastTrade","type":"uint32"},{"internalType":"uint32","name":"lastPayment","type":"uint32"},{"internalType":"uint32","name":"typeDetail","type":"uint32"},{"internalType":"uint32","name":"customDetails","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"executedTask","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"gasFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint8","name":"","type":"uint8"}],"name":"managers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"nftVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"onERC721Received","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"},{"internalType":"bytes","name":"_sig","type":"bytes"}],"name":"setBankVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_fee","type":"uint256"},{"internalType":"bytes","name":"_sig","type":"bytes"}],"name":"setGasFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_unlocker","type":"address"},{"internalType":"bytes","name":"_sig","type":"bytes"}],"name":"setUnlocker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_approval","type":"bool"},{"internalType":"bytes","name":"_sig","type":"bytes"}],"name":"setUnlockerApproval","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"taskIndex","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unlocker","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
608060405234801561001057600080fd5b506100216301ffc9a760e01b61015b565b600380546001600160a01b03199081167357e9a39ae8ec404c08f88740a9e6e306f50c937f1790915560048054821673b20217bf3d89667fa15907971866acd6ccd570c817905560018054821673f7a9f6001ff8b499149569c54852226d719f2d761790556002805482163017815560076020527f6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6df80548316331790557fb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b8288054831673ea50ce6ebb1a5e4a8f90bfb35a2fb3c3f0c673ec1790556000527fb7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d805490911673b1a951141f1b3a16824241f687c3741459e33225179055653faa25226000600555610156630a85bd0160e11b61015b565b6101de565b6001600160e01b031980821614156101b95760405162461bcd60e51b815260206004820152601c60248201527f4552433136353a20696e76616c696420696e7465726661636520696400000000604482015260640160405180910390fd5b6001600160e01b0319166000908152602081905260409020805460ff19166001179055565b6119b4806101ed6000396000f3fe6080604052600436106101135760003560e01c80634a8d08a5116100a0578063b76bb61011610064578063b76bb610146103d7578063b84254d71461040d578063d58177fe1461043b578063dbfb7d811461045b578063ec58d1801461047b57610113565b80634a8d08a51461028f578063658612e9146102af5780637b898939146102d35780638bad535f146102e9578063b02c43d01461030957610113565b80631ef8abb4116100e75780631ef8abb4146101fa57806323c5f23c1461021c5780632edbb5051461023c5780633d55d3f61461025c5780633e649d111461027c57610113565b80620769431461011857806301ffc9a714610155578063150b7a02146101855780631b9ab685146101ca575b600080fd5b34801561012457600080fd5b50600654610138906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016157600080fd5b5061017561017036600461161c565b61049b565b604051901515815260200161014c565b34801561019157600080fd5b506101b16101a03660046114a5565b630a85bd0160e11b95945050505050565b6040516001600160e01b0319909116815260200161014c565b3480156101d657600080fd5b506101756101e5366004611604565b60086020526000908152604090205460ff1681565b34801561020657600080fd5b5061021a6102153660046115e3565b6104be565b005b34801561022857600080fd5b50600454610138906001600160a01b031681565b34801561024857600080fd5b50600354610138906001600160a01b031681565b34801561026857600080fd5b5061021a6102773660046116e7565b610684565b61017561028a3660046116bc565b61076e565b34801561029b57600080fd5b5061021a6102aa36600461153b565b610b01565b3480156102bb57600080fd5b506102c560055481565b60405190815260200161014c565b3480156102df57600080fd5b506102c5600a5481565b3480156102f557600080fd5b50600154610138906001600160a01b031681565b34801561031557600080fd5b50610384610324366004611604565b600b6020526000908152604090208054600182015460029092015490916001600160a01b0316906001600160801b0381169063ffffffff600160801b8204811691600160a01b8104821691600160c01b8204811691600160e01b90041687565b604080519788526001600160a01b0390961660208801526001600160801b039094169486019490945263ffffffff91821660608601528116608085015291821660a08401521660c082015260e00161014c565b3480156103e357600080fd5b506101386103f23660046117f4565b6007602052600090815260409020546001600160a01b031681565b34801561041957600080fd5b506009546104289061ffff1681565b60405161ffff909116815260200161014c565b34801561044757600080fd5b5061021a61045636600461153b565b610c04565b34801561046757600080fd5b50600254610138906001600160a01b031681565b34801561048757600080fd5b5061021a610496366004611587565b610d07565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60008052600760205260008051602061195f833981519152546001600160a01b031633148061050e57506001600052600760205260008051602061191f833981519152546001600160a01b031633145b8061053a57506002600052600760205260008051602061193f833981519152546001600160a01b031633145b61055f5760405162461bcd60e51b815260040161055690611836565b60405180910390fd5b60095460408051841515602082015261ffff90921690820152600460608201819052906000906080016040516020818303038152906040528051906020012090506105aa8184610e5c565b60035460065460405163a22cb46560e01b81526001600160a01b039182166004820152861515602482015291169063a22cb46590604401600060405180830381600087803b1580156105fb57600080fd5b505af115801561060f573d6000803e3d6000fd5b50506004805460065460405163a22cb46560e01b81526001600160a01b0391821693810193909352881515602484015216925063a22cb4659150604401600060405180830381600087803b15801561066657600080fd5b505af115801561067a573d6000803e3d6000fd5b5050505050505050565b60008052600760205260008051602061195f833981519152546001600160a01b03163314806106d457506001600052600760205260008051602061191f833981519152546001600160a01b031633145b8061070057506002600052600760205260008051602061193f833981519152546001600160a01b031633145b61071c5760405162461bcd60e51b815260040161055690611836565b600954604080516020810185905261ffff90921690820152600260608201819052906000906080016040516020818303038152906040528051906020012090506107668184610e5c565b505050600555565b6003546000906001600160a01b038381169116148061079a57506004546001600160a01b038381169116145b6107dd5760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a59081391950810dbdb9d1c9858dd60621b6044820152606401610556565b6005543410156108215760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206761732066656560881b6044820152606401610556565b600154610837906001600160a01b03163461109b565b60035460009081908190819081906001600160a01b03888116911614156108ee5760035460405163183c06e560e31b8152600481018a90526001600160a01b039091169063c1e037289060240160a06040518083038186803b15801561089c57600080fd5b505afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061164b565b929850965090945092506001600160801b0316905061097a565b6004805460405163183c06e560e31b81529182018a90526001600160a01b03169063c1e037289060240160006040518083038186803b15801561093057600080fd5b505afa158015610944573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261096c9190810190611716565b509398509096509450925090505b600a80546000908152600b60205260408082208b90558254825280822060019081018054336001600160a01b031990911617905583548352818320600290810180546fffffffffffffffffffffffffffffffff19166001600160801b038816179055845484528284208101805463ffffffff60801b1916600160801b63ffffffff8c81169190910291909117909155855485528385208201805463ffffffff60a01b1916600160a01b8b841602179055855485528385208201805463ffffffff60c01b1916600160c01b8d841602179055855485529284200180546001600160e01b0316600160e01b9388169390930292909217909155825490929190610a829084906118da565b9091555050600254604051632142170760e11b81523360048201526001600160a01b039182166024820152604481018a9052908816906342842e0e90606401600060405180830381600087803b158015610adb57600080fd5b505af1158015610aef573d6000803e3d6000fd5b5060019b9a5050505050505050505050565b60008052600760205260008051602061195f833981519152546001600160a01b0316331480610b5157506001600052600760205260008051602061191f833981519152546001600160a01b031633145b80610b7d57506002600052600760205260008051602061193f833981519152546001600160a01b031633145b610b995760405162461bcd60e51b815260040161055690611836565b600954604051600391600091610bbc91869161ffff90911690859060200161180e565b604051602081830303815290604052805190602001209050610bde8184610e5c565b5050600680546001600160a01b0319166001600160a01b03939093169290921790915550565b60008052600760205260008051602061195f833981519152546001600160a01b0316331480610c5457506001600052600760205260008051602061191f833981519152546001600160a01b031633145b80610c8057506002600052600760205260008051602061193f833981519152546001600160a01b031633145b610c9c5760405162461bcd60e51b815260040161055690611836565b600954604051600191600091610cbf91869161ffff90911690859060200161180e565b604051602081830303815290604052805190602001209050610ce18184610e5c565b5050600180546001600160a01b0319166001600160a01b03939093169290921790915550565b60008052600760205260008051602061195f833981519152546001600160a01b0316331480610d5757506001600052600760205260008051602061191f833981519152546001600160a01b031633145b80610d8357506002600052600760205260008051602061193f833981519152546001600160a01b031633145b610d9f5760405162461bcd60e51b815260040161055690611836565b60028260ff161115610de35760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610556565b600954604051606491600091610e0691879161ffff90911690859060200161180e565b604051602081830303815290604052805190602001209050610e288184610e5c565b50505060ff16600090815260076020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526008602052604090205460ff1615610eb35760405162461bcd60e51b815260206004820152601560248201527415185cdac8185b1c9958591e48195e1958dd5d1959605a1b6044820152606401610556565b6000610f15610f0f846040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b836111b9565b60008052600760205260008051602061195f833981519152549091506001600160a01b0380831691161480610f6e57506001600052600760205260008051602061191f833981519152546001600160a01b038281169116145b80610f9d57506002600052600760205260008051602061193f833981519152546001600160a01b038281169116145b610fdd5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610556565b6001600160a01b0381163314156110495760405162461bcd60e51b815260206004820152602a60248201527f5369676e61747572652066726f6d20646966666572656e74206d616e616765726044820152691cc81c995c5d5a5c995960b21b6064820152608401610556565b6000838152600860205260408120805460ff19166001908117909155600980549192909161107c90849061ffff166118b4565b92506101000a81548161ffff021916908361ffff160217905550505050565b804710156110eb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610556565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611138576040519150601f19603f3d011682016040523d82523d6000602084013e61113d565b606091505b50509050806111b45760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610556565b505050565b6000806000808451604114156111e35750505060208201516040830151606084015160001a611259565b8451604014156112115750505060408201516020830151906001600160ff1b0381169060ff1c601b01611259565b60405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610556565b6112658682858561126f565b9695505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156112ec5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610556565b8360ff16601b148061130157508360ff16601c145b6113585760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610556565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156113ac573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661140f5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610556565b95945050505050565b80356001600160a01b03811681146104b957600080fd5b600082601f83011261143f578081fd5b813561145261144d8261188c565b61185b565b818152846020838601011115611466578283fd5b816020850160208301379081016020019190915292915050565b805163ffffffff811681146104b957600080fd5b803560ff811681146104b957600080fd5b6000806000806000608086880312156114bc578081fd5b6114c586611418565b94506114d360208701611418565b935060408601359250606086013567ffffffffffffffff808211156114f6578283fd5b818801915088601f830112611509578283fd5b813581811115611517578384fd5b896020828501011115611528578384fd5b9699959850939650602001949392505050565b6000806040838503121561154d578182fd5b61155683611418565b9150602083013567ffffffffffffffff811115611571578182fd5b61157d8582860161142f565b9150509250929050565b60008060006060848603121561159b578283fd5b6115a484611418565b92506115b260208501611494565b9150604084013567ffffffffffffffff8111156115cd578182fd5b6115d98682870161142f565b9150509250925092565b600080604083850312156115f5578182fd5b82358015158114611556578283fd5b600060208284031215611615578081fd5b5035919050565b60006020828403121561162d578081fd5b81356001600160e01b031981168114611644578182fd5b9392505050565b600080600080600060a08688031215611662578081fd5b85516001600160801b0381168114611678578182fd5b945061168660208701611480565b935061169460408701611480565b92506116a260608701611480565b91506116b060808701611480565b90509295509295909350565b600080604083850312156116ce578182fd5b823591506116de60208401611418565b90509250929050565b600080604083850312156116f9578182fd5b82359150602083013567ffffffffffffffff811115611571578182fd5b60008060008060008060c0878903121561172e578384fd5b61173787611480565b95506020611746818901611480565b955061175460408901611480565b945061176260608901611480565b93506080880151925060a088015167ffffffffffffffff811115611784578283fd5b8801601f81018a13611794578283fd5b80516117a261144d8261188c565b8181528b848385010111156117b5578485fd5b845b828110156117d25783810185015182820186015284016117b7565b828111156117e257858584840101525b50809450505050509295509295509295565b600060208284031215611805578081fd5b61164482611494565b6001600160a01b0393909316835261ffff91909116602083015260ff16604082015260600190565b6020808252600b908201526a2737ba1036b0b730b3b2b960a91b604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561188457611884611908565b604052919050565b600067ffffffffffffffff8211156118a6576118a6611908565b50601f01601f191660200190565b600061ffff8083168185168083038211156118d1576118d16118f2565b01949350505050565b600082198211156118ed576118ed6118f2565b500190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfeb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828b7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6dfa264697066735822122028b16dc3599b8eca7cc687c956ed77da4a28c1e21a3bf65d75a505a20084d1d364736f6c63430008020033
Deployed Bytecode
0x6080604052600436106101135760003560e01c80634a8d08a5116100a0578063b76bb61011610064578063b76bb610146103d7578063b84254d71461040d578063d58177fe1461043b578063dbfb7d811461045b578063ec58d1801461047b57610113565b80634a8d08a51461028f578063658612e9146102af5780637b898939146102d35780638bad535f146102e9578063b02c43d01461030957610113565b80631ef8abb4116100e75780631ef8abb4146101fa57806323c5f23c1461021c5780632edbb5051461023c5780633d55d3f61461025c5780633e649d111461027c57610113565b80620769431461011857806301ffc9a714610155578063150b7a02146101855780631b9ab685146101ca575b600080fd5b34801561012457600080fd5b50600654610138906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b34801561016157600080fd5b5061017561017036600461161c565b61049b565b604051901515815260200161014c565b34801561019157600080fd5b506101b16101a03660046114a5565b630a85bd0160e11b95945050505050565b6040516001600160e01b0319909116815260200161014c565b3480156101d657600080fd5b506101756101e5366004611604565b60086020526000908152604090205460ff1681565b34801561020657600080fd5b5061021a6102153660046115e3565b6104be565b005b34801561022857600080fd5b50600454610138906001600160a01b031681565b34801561024857600080fd5b50600354610138906001600160a01b031681565b34801561026857600080fd5b5061021a6102773660046116e7565b610684565b61017561028a3660046116bc565b61076e565b34801561029b57600080fd5b5061021a6102aa36600461153b565b610b01565b3480156102bb57600080fd5b506102c560055481565b60405190815260200161014c565b3480156102df57600080fd5b506102c5600a5481565b3480156102f557600080fd5b50600154610138906001600160a01b031681565b34801561031557600080fd5b50610384610324366004611604565b600b6020526000908152604090208054600182015460029092015490916001600160a01b0316906001600160801b0381169063ffffffff600160801b8204811691600160a01b8104821691600160c01b8204811691600160e01b90041687565b604080519788526001600160a01b0390961660208801526001600160801b039094169486019490945263ffffffff91821660608601528116608085015291821660a08401521660c082015260e00161014c565b3480156103e357600080fd5b506101386103f23660046117f4565b6007602052600090815260409020546001600160a01b031681565b34801561041957600080fd5b506009546104289061ffff1681565b60405161ffff909116815260200161014c565b34801561044757600080fd5b5061021a61045636600461153b565b610c04565b34801561046757600080fd5b50600254610138906001600160a01b031681565b34801561048757600080fd5b5061021a610496366004611587565b610d07565b6001600160e01b0319811660009081526020819052604090205460ff165b919050565b60008052600760205260008051602061195f833981519152546001600160a01b031633148061050e57506001600052600760205260008051602061191f833981519152546001600160a01b031633145b8061053a57506002600052600760205260008051602061193f833981519152546001600160a01b031633145b61055f5760405162461bcd60e51b815260040161055690611836565b60405180910390fd5b60095460408051841515602082015261ffff90921690820152600460608201819052906000906080016040516020818303038152906040528051906020012090506105aa8184610e5c565b60035460065460405163a22cb46560e01b81526001600160a01b039182166004820152861515602482015291169063a22cb46590604401600060405180830381600087803b1580156105fb57600080fd5b505af115801561060f573d6000803e3d6000fd5b50506004805460065460405163a22cb46560e01b81526001600160a01b0391821693810193909352881515602484015216925063a22cb4659150604401600060405180830381600087803b15801561066657600080fd5b505af115801561067a573d6000803e3d6000fd5b5050505050505050565b60008052600760205260008051602061195f833981519152546001600160a01b03163314806106d457506001600052600760205260008051602061191f833981519152546001600160a01b031633145b8061070057506002600052600760205260008051602061193f833981519152546001600160a01b031633145b61071c5760405162461bcd60e51b815260040161055690611836565b600954604080516020810185905261ffff90921690820152600260608201819052906000906080016040516020818303038152906040528051906020012090506107668184610e5c565b505050600555565b6003546000906001600160a01b038381169116148061079a57506004546001600160a01b038381169116145b6107dd5760405162461bcd60e51b8152602060048201526014602482015273125b9d985b1a59081391950810dbdb9d1c9858dd60621b6044820152606401610556565b6005543410156108215760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206761732066656560881b6044820152606401610556565b600154610837906001600160a01b03163461109b565b60035460009081908190819081906001600160a01b03888116911614156108ee5760035460405163183c06e560e31b8152600481018a90526001600160a01b039091169063c1e037289060240160a06040518083038186803b15801561089c57600080fd5b505afa1580156108b0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108d4919061164b565b929850965090945092506001600160801b0316905061097a565b6004805460405163183c06e560e31b81529182018a90526001600160a01b03169063c1e037289060240160006040518083038186803b15801561093057600080fd5b505afa158015610944573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261096c9190810190611716565b509398509096509450925090505b600a80546000908152600b60205260408082208b90558254825280822060019081018054336001600160a01b031990911617905583548352818320600290810180546fffffffffffffffffffffffffffffffff19166001600160801b038816179055845484528284208101805463ffffffff60801b1916600160801b63ffffffff8c81169190910291909117909155855485528385208201805463ffffffff60a01b1916600160a01b8b841602179055855485528385208201805463ffffffff60c01b1916600160c01b8d841602179055855485529284200180546001600160e01b0316600160e01b9388169390930292909217909155825490929190610a829084906118da565b9091555050600254604051632142170760e11b81523360048201526001600160a01b039182166024820152604481018a9052908816906342842e0e90606401600060405180830381600087803b158015610adb57600080fd5b505af1158015610aef573d6000803e3d6000fd5b5060019b9a5050505050505050505050565b60008052600760205260008051602061195f833981519152546001600160a01b0316331480610b5157506001600052600760205260008051602061191f833981519152546001600160a01b031633145b80610b7d57506002600052600760205260008051602061193f833981519152546001600160a01b031633145b610b995760405162461bcd60e51b815260040161055690611836565b600954604051600391600091610bbc91869161ffff90911690859060200161180e565b604051602081830303815290604052805190602001209050610bde8184610e5c565b5050600680546001600160a01b0319166001600160a01b03939093169290921790915550565b60008052600760205260008051602061195f833981519152546001600160a01b0316331480610c5457506001600052600760205260008051602061191f833981519152546001600160a01b031633145b80610c8057506002600052600760205260008051602061193f833981519152546001600160a01b031633145b610c9c5760405162461bcd60e51b815260040161055690611836565b600954604051600191600091610cbf91869161ffff90911690859060200161180e565b604051602081830303815290604052805190602001209050610ce18184610e5c565b5050600180546001600160a01b0319166001600160a01b03939093169290921790915550565b60008052600760205260008051602061195f833981519152546001600160a01b0316331480610d5757506001600052600760205260008051602061191f833981519152546001600160a01b031633145b80610d8357506002600052600760205260008051602061193f833981519152546001600160a01b031633145b610d9f5760405162461bcd60e51b815260040161055690611836565b60028260ff161115610de35760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b6044820152606401610556565b600954604051606491600091610e0691879161ffff90911690859060200161180e565b604051602081830303815290604052805190602001209050610e288184610e5c565b50505060ff16600090815260076020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b60008281526008602052604090205460ff1615610eb35760405162461bcd60e51b815260206004820152601560248201527415185cdac8185b1c9958591e48195e1958dd5d1959605a1b6044820152606401610556565b6000610f15610f0f846040517f19457468657265756d205369676e6564204d6573736167653a0a3332000000006020820152603c8101829052600090605c01604051602081830303815290604052805190602001209050919050565b836111b9565b60008052600760205260008051602061195f833981519152549091506001600160a01b0380831691161480610f6e57506001600052600760205260008051602061191f833981519152546001600160a01b038281169116145b80610f9d57506002600052600760205260008051602061193f833981519152546001600160a01b038281169116145b610fdd5760405162461bcd60e51b8152602060048201526011602482015270496e76616c6964207369676e617475726560781b6044820152606401610556565b6001600160a01b0381163314156110495760405162461bcd60e51b815260206004820152602a60248201527f5369676e61747572652066726f6d20646966666572656e74206d616e616765726044820152691cc81c995c5d5a5c995960b21b6064820152608401610556565b6000838152600860205260408120805460ff19166001908117909155600980549192909161107c90849061ffff166118b4565b92506101000a81548161ffff021916908361ffff160217905550505050565b804710156110eb5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610556565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114611138576040519150601f19603f3d011682016040523d82523d6000602084013e61113d565b606091505b50509050806111b45760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610556565b505050565b6000806000808451604114156111e35750505060208201516040830151606084015160001a611259565b8451604014156112115750505060408201516020830151906001600160ff1b0381169060ff1c601b01611259565b60405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610556565b6112658682858561126f565b9695505050505050565b60007f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156112ec5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610556565b8360ff16601b148061130157508360ff16601c145b6113585760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202776272076616c604482015261756560f01b6064820152608401610556565b6040805160008082526020820180845288905260ff871692820192909252606081018590526080810184905260019060a0016020604051602081039080840390855afa1580156113ac573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811661140f5760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610556565b95945050505050565b80356001600160a01b03811681146104b957600080fd5b600082601f83011261143f578081fd5b813561145261144d8261188c565b61185b565b818152846020838601011115611466578283fd5b816020850160208301379081016020019190915292915050565b805163ffffffff811681146104b957600080fd5b803560ff811681146104b957600080fd5b6000806000806000608086880312156114bc578081fd5b6114c586611418565b94506114d360208701611418565b935060408601359250606086013567ffffffffffffffff808211156114f6578283fd5b818801915088601f830112611509578283fd5b813581811115611517578384fd5b896020828501011115611528578384fd5b9699959850939650602001949392505050565b6000806040838503121561154d578182fd5b61155683611418565b9150602083013567ffffffffffffffff811115611571578182fd5b61157d8582860161142f565b9150509250929050565b60008060006060848603121561159b578283fd5b6115a484611418565b92506115b260208501611494565b9150604084013567ffffffffffffffff8111156115cd578182fd5b6115d98682870161142f565b9150509250925092565b600080604083850312156115f5578182fd5b82358015158114611556578283fd5b600060208284031215611615578081fd5b5035919050565b60006020828403121561162d578081fd5b81356001600160e01b031981168114611644578182fd5b9392505050565b600080600080600060a08688031215611662578081fd5b85516001600160801b0381168114611678578182fd5b945061168660208701611480565b935061169460408701611480565b92506116a260608701611480565b91506116b060808701611480565b90509295509295909350565b600080604083850312156116ce578182fd5b823591506116de60208401611418565b90509250929050565b600080604083850312156116f9578182fd5b82359150602083013567ffffffffffffffff811115611571578182fd5b60008060008060008060c0878903121561172e578384fd5b61173787611480565b95506020611746818901611480565b955061175460408901611480565b945061176260608901611480565b93506080880151925060a088015167ffffffffffffffff811115611784578283fd5b8801601f81018a13611794578283fd5b80516117a261144d8261188c565b8181528b848385010111156117b5578485fd5b845b828110156117d25783810185015182820186015284016117b7565b828111156117e257858584840101525b50809450505050509295509295509295565b600060208284031215611805578081fd5b61164482611494565b6001600160a01b0393909316835261ffff91909116602083015260ff16604082015260600190565b6020808252600b908201526a2737ba1036b0b730b3b2b960a91b604082015260600190565b604051601f8201601f1916810167ffffffffffffffff8111828210171561188457611884611908565b604052919050565b600067ffffffffffffffff8211156118a6576118a6611908565b50601f01601f191660200190565b600061ffff8083168185168083038211156118d1576118d16118f2565b01949350505050565b600082198211156118ed576118ed6118f2565b500190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fdfeb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828b7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d6d5257204ebe7d88fd91ae87941cb2dd9d8062b64ae5a2bd2d28ec40b9fbf6dfa264697066735822122028b16dc3599b8eca7cc687c956ed77da4a28c1e21a3bf65d75a505a20084d1d364736f6c63430008020033
Deployed Bytecode Sourcemap
12120:5050:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12341:23;;;;;;;;;;-1:-1:-1;12341:23:0;;;;-1:-1:-1;;;;;12341:23:0;;;;;;-1:-1:-1;;;;;7590:32:1;;;7572:51;;7560:2;7545:18;12341:23:0;;;;;;;;1660:150;;;;;;;;;;-1:-1:-1;1660:150:0;;;;;:::i;:::-;;:::i;:::-;;;9060:14:1;;9053:22;9035:41;;9023:2;9008:18;1660:150:0;8990:92:1;16991:162:0;;;;;;;;;;-1:-1:-1;16991:162:0;;;;;:::i;:::-;-1:-1:-1;;;16991:162:0;;;;;;;;;;;-1:-1:-1;;;;;;10004:33:1;;;9986:52;;9974:2;9959:18;16991:162:0;9941:103:1;12420:45:0;;;;;;;;;;-1:-1:-1;12420:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15721:374;;;;;;;;;;-1:-1:-1;15721:374:0;;;;;:::i;:::-;;:::i;:::-;;12279:27;;;;;;;;;;-1:-1:-1;12279:27:0;;;;-1:-1:-1;;;;;12279:27:0;;;12245;;;;;;;;;;-1:-1:-1;12245:27:0;;;;-1:-1:-1;;;;;12245:27:0;;;15200:239;;;;;;;;;;-1:-1:-1;15200:239:0;;;;;:::i;:::-;;:::i;13615:1301::-;;;;;;:::i;:::-;;:::i;15451:258::-;;;;;;;;;;-1:-1:-1;15451:258:0;;;;;:::i;:::-;;:::i;12313:21::-;;;;;;;;;;;;;;;;;;;15174:25:1;;;15162:2;15147:18;12313:21:0;15129:76:1;12510:27:0;;;;;;;;;;;;;;;;12176:32;;;;;;;;;;-1:-1:-1;12176:32:0;;;;-1:-1:-1;;;;;12176:32:0;;;12776:44;;;;;;;;;;-1:-1:-1;12776:44:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;12776:44:0;;-1:-1:-1;;;;;12776:44:0;;;;-1:-1:-1;;;12776:44:0;;;;;-1:-1:-1;;;12776:44:0;;;;;-1:-1:-1;;;12776:44:0;;;;;-1:-1:-1;;;12776:44:0;;;;;;;;;15517:25:1;;;-1:-1:-1;;;;;15578:32:1;;;15573:2;15558:18;;15551:60;-1:-1:-1;;;;;15647:47:1;;;15627:18;;;15620:75;;;;15714:10;15760:15;;;15755:2;15740:18;;15733:43;15813:15;;15807:3;15792:19;;15785:44;15866:15;;;15598:3;15845:19;;15838:44;15919:15;15913:3;15898:19;;15891:44;15504:3;15489:19;12776:44:0;15471:470:1;12371:42:0;;;;;;;;;;-1:-1:-1;12371:42:0;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;12371:42:0;;;12474:23;;;;;;;;;;-1:-1:-1;12474:23:0;;;;;;;;;;;15009:6:1;14997:19;;;14979:38;;14967:2;14952:18;12474:23:0;14934:89:1;14928:260:0;;;;;;;;;;-1:-1:-1;14928:260:0;;;;;:::i;:::-;;:::i;12215:23::-;;;;;;;;;;-1:-1:-1;12215:23:0;;;;-1:-1:-1;;;;;12215:23:0;;;16633:344;;;;;;;;;;-1:-1:-1;16633:344:0;;;;;:::i;:::-;;:::i;1660:150::-;-1:-1:-1;;;;;;1769:33:0;;1745:4;1769:33;;;;;;;;;;;;;1660:150;;;;:::o;15721:374::-;12939:11;;;:8;:11;;-1:-1:-1;;;;;;;;;;;12939:11:0;-1:-1:-1;;;;;12939:11:0;12954:10;12939:25;;:54;;-1:-1:-1;12977:1:0;12968:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;12968:11:0;-1:-1:-1;;;;;12968:11:0;12983:10;12968:25;12939:54;:83;;;-1:-1:-1;13006:1:0;12997:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;12997:11:0;-1:-1:-1;;;;;12997:11:0;13012:10;12997:25;12939:83;12931:107;;;;-1:-1:-1;;;12931:107:0;;;;;;;:::i;:::-;;;;;;;;;15888:9:::1;::::0;15866:37:::1;::::0;;9302:14:1;;9295:22;15866:37:0::1;::::0;::::1;9277:41:1::0;15888:9:0::1;::::0;;::::1;9334:18:1::0;;;9327:47;15825:1:0::1;9390:18:1::0;;;9383:45;;;15825:1:0;15813:9:::1;::::0;9250:18:1;;15866:37:0::1;;;;;;;;;;;;15856:48;;;;;;15837:67;;15915:30;15930:8;15940:4;15915:14;:30::i;:::-;15964:12;::::0;15996:8:::1;::::0;15956:60:::1;::::0;-1:-1:-1;;;15956:60:0;;-1:-1:-1;;;;;15996:8:0;;::::1;15956:60;::::0;::::1;8406:51:1::0;8500:14;;8493:22;8473:18;;;8466:50;15964:12:0;::::1;::::0;15956:39:::1;::::0;8379:18:1;;15956:60:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;16035:12:0::1;::::0;;16067:8:::1;::::0;16027:60:::1;::::0;-1:-1:-1;;;16027:60:0;;-1:-1:-1;;;;;16067:8:0;;::::1;16027:60:::0;;::::1;8406:51:1::0;;;;8500:14;;8493:22;8473:18;;;8466:50;16035:12:0::1;::::0;-1:-1:-1;16027:39:0::1;::::0;-1:-1:-1;8379:18:1;;16027:60:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;13049:1;;15721:374:::0;;:::o;15200:239::-;12939:11;;;:8;:11;;-1:-1:-1;;;;;;;;;;;12939:11:0;-1:-1:-1;;;;;12939:11:0;12954:10;12939:25;;:54;;-1:-1:-1;12977:1:0;12968:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;12968:11:0;-1:-1:-1;;;;;12968:11:0;12983:10;12968:25;12939:54;:83;;;-1:-1:-1;13006:1:0;12997:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;12997:11:0;-1:-1:-1;;;;;12997:11:0;13012:10;12997:25;12939:83;12931:107;;;;-1:-1:-1;;;12931:107:0;;;;;;;:::i;:::-;15350:9:::1;::::0;15333:32:::1;::::0;;::::1;::::0;::::1;16142:25:1::0;;;15350:9:0::1;::::0;;::::1;16183:18:1::0;;;16176:47;15292:1:0::1;16239:18:1::0;;;16232:45;;;15292:1:0;15280:9:::1;::::0;16115:18:1;;15333:32:0::1;;;;;;;;;;;;15323:43;;;;;;15304:62;;15377:30;15392:8;15402:4;15377:14;:30::i;:::-;-1:-1:-1::0;;;15418:6:0::1;:13:::0;15200:239::o;13615:1301::-;13739:12;;13698:4;;-1:-1:-1;;;;;13724:27:0;;;13739:12;;13724:27;;13723:62;;-1:-1:-1;13772:12:0;;-1:-1:-1;;;;;13757:27:0;;;13772:12;;13757:27;13723:62;13715:95;;;;-1:-1:-1;;;13715:95:0;;14344:2:1;13715:95:0;;;14326:21:1;14383:2;14363:18;;;14356:30;-1:-1:-1;;;14402:18:1;;;14395:50;14462:18;;13715:95:0;14316:170:1;13715:95:0;13842:6;;13829:9;:19;;13821:47;;;;-1:-1:-1;;;13821:47:0;;14693:2:1;13821:47:0;;;14675:21:1;14732:2;14712:18;;;14705:30;-1:-1:-1;;;14751:18:1;;;14744:45;14806:18;;13821:47:0;14665:165:1;13821:47:0;13897:9;;13879:39;;-1:-1:-1;;;;;13897:9:0;13908;13879:17;:39::i;:::-;14089:12;;13929:16;;;;;;;;;;-1:-1:-1;;;;;14074:27:0;;;14089:12;;14074:27;14070:312;;;14188:12;;14182:45;;-1:-1:-1;;;14182:45:0;;;;;15174:25:1;;;-1:-1:-1;;;;;14188:12:0;;;;14182:35;;15147:18:1;;14182:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14118:109;;-1:-1:-1;14118:109:0;-1:-1:-1;14118:109:0;;-1:-1:-1;14118:109:0;-1:-1:-1;;;;;;14118:109:0;;-1:-1:-1;14070:312:0;;;14331:12;;;14325:45;;-1:-1:-1;;;14325:45:0;;;;;15174:25:1;;;-1:-1:-1;;;;;14331:12:0;;14325:35;;15147:18:1;;14325:45:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14325:45:0;;;;;;;;;;;;:::i;:::-;-1:-1:-1;14260:110:0;;-1:-1:-1;14260:110:0;;-1:-1:-1;14260:110:0;-1:-1:-1;14260:110:0;-1:-1:-1;14260:110:0;-1:-1:-1;14070:312:0;14401:12;;;14392:22;;;;:8;:22;;;;;;:41;;;14453:12;;14444:22;;;;;:29;;;;:42;;14476:10;-1:-1:-1;;;;;;14444:42:0;;;;;;14506:12;;14497:22;;;;;:28;;;;:45;;-1:-1:-1;;14497:45:0;-1:-1:-1;;;;;14497:45:0;;;;;14562:12;;14553:22;;;;;:32;;:47;;-1:-1:-1;;;;14553:47:0;-1:-1:-1;;;14553:47:0;;;;;;;;;;;;;;;14620:12;;14611:22;;;;;:34;;:48;;-1:-1:-1;;;;14611:48:0;-1:-1:-1;;;14611:48:0;;;;;;;14679:12;;14670:22;;;;;:33;;:45;;-1:-1:-1;;;;14670:45:0;-1:-1:-1;;;14670:45:0;;;;;;;14735:12;;14726:22;;;;;:36;:52;;-1:-1:-1;;;;;14726:52:0;-1:-1:-1;;;14726:52:0;;;;;;;;;;;;;;14789:17;;14444:29;;14401:12;14392:22;14789:17;;14444:29;;14789:17;:::i;:::-;;;;-1:-1:-1;;14867:8:0;;14817:69;;-1:-1:-1;;;14817:69:0;;14855:10;14817:69;;;8098:34:1;-1:-1:-1;;;;;14867:8:0;;;8148:18:1;;;8141:43;8200:18;;;8193:34;;;14817:37:0;;;;;;8033:18:1;;14817:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14904:4:0;;13615:1301;-1:-1:-1;;;;;;;;;;;13615:1301:0:o;15451:258::-;12939:11;;;:8;:11;;-1:-1:-1;;;;;;;;;;;12939:11:0;-1:-1:-1;;;;;12939:11:0;12954:10;12939:25;;:54;;-1:-1:-1;12977:1:0;12968:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;12968:11:0;-1:-1:-1;;;;;12968:11:0;12983:10;12968:25;12939:54;:83;;;-1:-1:-1;13006:1:0;12997:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;12997:11:0;-1:-1:-1;;;;;12997:11:0;13012:10;12997:25;12939:83;12931:107;;;;-1:-1:-1;;;12931:107:0;;;;;;;:::i;:::-;15613:9:::1;::::0;15591:37:::1;::::0;15550:1:::1;::::0;15538:9:::1;::::0;15591:37:::1;::::0;15602:9;;15613::::1;::::0;;::::1;::::0;15550:1;;15591:37:::1;;;:::i;:::-;;;;;;;;;;;;;15581:48;;;;;;15562:67;;15640:30;15655:8;15665:4;15640:14;:30::i;:::-;-1:-1:-1::0;;15681:8:0::1;:20:::0;;-1:-1:-1;;;;;;15681:20:0::1;-1:-1:-1::0;;;;;15681:20:0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;15451:258:0:o;14928:260::-;12939:11;;;:8;:11;;-1:-1:-1;;;;;;;;;;;12939:11:0;-1:-1:-1;;;;;12939:11:0;12954:10;12939:25;;:54;;-1:-1:-1;12977:1:0;12968:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;12968:11:0;-1:-1:-1;;;;;12968:11:0;12983:10;12968:25;12939:54;:83;;;-1:-1:-1;13006:1:0;12997:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;12997:11:0;-1:-1:-1;;;;;12997:11:0;13012:10;12997:25;12939:83;12931:107;;;;-1:-1:-1;;;12931:107:0;;;;;;;:::i;:::-;15085:9:::1;::::0;15066:34:::1;::::0;15025:1:::1;::::0;15013:9:::1;::::0;15066:34:::1;::::0;15077:6;;15085:9:::1;::::0;;::::1;::::0;15025:1;;15066:34:::1;;;:::i;:::-;;;;;;;;;;;;;15056:45;;;;;;15037:64;;15112:30;15127:8;15137:4;15112:14;:30::i;:::-;-1:-1:-1::0;;15153:9:0::1;:27:::0;;-1:-1:-1;;;;;;15153:27:0::1;-1:-1:-1::0;;;;;15153:27:0;;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;14928:260:0:o;16633:344::-;12939:11;;;:8;:11;;-1:-1:-1;;;;;;;;;;;12939:11:0;-1:-1:-1;;;;;12939:11:0;12954:10;12939:25;;:54;;-1:-1:-1;12977:1:0;12968:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;12968:11:0;-1:-1:-1;;;;;12968:11:0;12983:10;12968:25;12939:54;:83;;;-1:-1:-1;13006:1:0;12997:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;12997:11:0;-1:-1:-1;;;;;12997:11:0;13012:10;12997:25;12939:83;12931:107;;;;-1:-1:-1;;;12931:107:0;;;;;;;:::i;:::-;16768:1:::1;16758:6;:11;;;;16735:52;;;::::0;-1:-1:-1;;;16735:52:0;;11304:2:1;16735:52:0::1;::::0;::::1;11286:21:1::0;11343:2;11323:18;;;11316:30;-1:-1:-1;;;11362:18:1;;;11355:43;11415:18;;16735:52:0::1;11276:163:1::0;16735:52:0::1;16874:9;::::0;16853:36:::1;::::0;16810:3:::1;::::0;16798:9:::1;::::0;16853:36:::1;::::0;16864:8;;16874:9:::1;::::0;;::::1;::::0;16810:3;;16853:36:::1;;;:::i;:::-;;;;;;;;;;;;;16843:47;;;;;;16824:66;;16901:30;16916:8;16926:4;16901:14;:30::i;:::-;-1:-1:-1::0;;;16942:16:0::1;;;::::0;;;:8:::1;:16;::::0;;;;:27;;-1:-1:-1;;;;;;16942:27:0::1;-1:-1:-1::0;;;;;16942:27:0;;;::::1;::::0;;;::::1;::::0;;16633:344::o;16107:514::-;16196:23;;;;:12;:23;;;;;;;;:32;16188:66;;;;-1:-1:-1;;;16188:66:0;;11646:2:1;16188:66:0;;;11628:21:1;11685:2;11665:18;;;11658:30;-1:-1:-1;;;11704:18:1;;;11697:51;11765:18;;16188:66:0;11618:171:1;16188:66:0;16265:15;16283:60;16297:39;16326:9;7033:58;;7073:66:1;7033:58:0;;;7061:79:1;7156:12;;;7149:28;;;6900:7:0;;7193:12:1;;7033:58:0;;;;;;;;;;;;7023:69;;;;;;7016:76;;6831:269;;;;16297:39;16338:4;16283:13;:60::i;:::-;16373:11;;;:8;:11;;-1:-1:-1;;;;;;;;;;;16373:11:0;16265:78;;-1:-1:-1;;;;;;16362:22:0;;;16373:11;;16362:22;;:48;;-1:-1:-1;16408:1:0;16399:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;16399:11:0;-1:-1:-1;;;;;16388:22:0;;;16399:11;;16388:22;16362:48;:74;;;-1:-1:-1;16434:1:0;16425:11;;:8;:11;;-1:-1:-1;;;;;;;;;;;16425:11:0;-1:-1:-1;;;;;16414:22:0;;;16425:11;;16414:22;16362:74;16354:106;;;;-1:-1:-1;;;16354:106:0;;11996:2:1;16354:106:0;;;11978:21:1;12035:2;12015:18;;;12008:30;-1:-1:-1;;;12054:18:1;;;12047:47;12111:18;;16354:106:0;11968:167:1;16354:106:0;-1:-1:-1;;;;;16479:21:0;;16490:10;16479:21;;16471:76;;;;-1:-1:-1;;;16471:76:0;;13530:2:1;16471:76:0;;;13512:21:1;13569:2;13549:18;;;13542:30;13608:34;13588:18;;;13581:62;-1:-1:-1;;;13659:18:1;;;13652:40;13709:19;;16471:76:0;13502:232:1;16471:76:0;16558:23;;;;:12;:23;;;;;:30;;-1:-1:-1;;16558:30:0;16584:4;16558:30;;;;;;16599:9;:14;;16584:4;;16599:9;;:14;;16584:4;;16599:14;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16107:514;;;:::o;8110:397::-;8225:6;8200:21;:31;;8192:73;;;;-1:-1:-1;;;8192:73:0;;13172:2:1;8192:73:0;;;13154:21:1;13211:2;13191:18;;;13184:30;13250:31;13230:18;;;13223:59;13299:18;;8192:73:0;13144:179:1;8192:73:0;8357:12;8375:9;-1:-1:-1;;;;;8375:14:0;8398:6;8375:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8356:54;;;8429:7;8421:78;;;;-1:-1:-1;;;8421:78:0;;12342:2:1;8421:78:0;;;12324:21:1;12381:2;12361:18;;;12354:30;12420:34;12400:18;;;12393:62;12491:28;12471:18;;;12464:56;12537:19;;8421:78:0;12314:248:1;8421:78:0;8110:397;;;:::o;3468:1492::-;3546:7;3623:9;3643;3663:7;3883:9;:16;3903:2;3883:22;3879:1032;;;-1:-1:-1;;;4170:4:0;4155:20;;4149:27;4220:4;4205:20;;4199:27;4278:4;4263:20;;4257:27;4254:1;4249:36;4125:175;;;4321:9;:16;4341:2;4321:22;4317:594;;;-1:-1:-1;;;4613:4:0;4598:20;;4592:27;4663:4;4648:20;;4642:27;;-1:-1:-1;;;;;4692:75:0;;;4798:3;4794:12;4808:2;4790:21;4563:263;;;4858:41;;-1:-1:-1;;;4858:41:0;;10944:2:1;4858:41:0;;;10926:21:1;10983:2;10963:18;;;10956:30;11022:33;11002:18;;;10995:61;11073:18;;4858:41:0;10916:181:1;4317:594:0;4930:22;4938:4;4944:1;4947;4950;4930:7;:22::i;:::-;4923:29;3468:1492;-1:-1:-1;;;;;;3468:1492:0:o;5099:1432::-;5184:7;6109:66;6095:80;;;6087:127;;;;-1:-1:-1;;;6087:127:0;;12769:2:1;6087:127:0;;;12751:21:1;12808:2;12788:18;;;12781:30;12847:34;12827:18;;;12820:62;-1:-1:-1;;;12898:18:1;;;12891:32;12940:19;;6087:127:0;12741:224:1;6087:127:0;6233:1;:7;;6238:2;6233:7;:18;;;;6244:1;:7;;6249:2;6244:7;6233:18;6225:65;;;;-1:-1:-1;;;6225:65:0;;13941:2:1;6225:65:0;;;13923:21:1;13980:2;13960:18;;;13953:30;14019:34;13999:18;;;13992:62;-1:-1:-1;;;14070:18:1;;;14063:32;14112:19;;6225:65:0;13913:224:1;6225:65:0;6405:24;;;6388:14;6405:24;;;;;;;;;9666:25:1;;;9739:4;9727:17;;9707:18;;;9700:45;;;;9761:18;;;9754:34;;;9804:18;;;9797:34;;;6405:24:0;;9638:19:1;;6405:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;6405:24:0;;-1:-1:-1;;6405:24:0;;;-1:-1:-1;;;;;;;6448:20:0;;6440:57;;;;-1:-1:-1;;;6440:57:0;;10251:2:1;6440:57:0;;;10233:21:1;10290:2;10270:18;;;10263:30;10329:26;10309:18;;;10302:54;10373:18;;6440:57:0;10223:174:1;6440:57:0;6517:6;5099:1432;-1:-1:-1;;;;;5099:1432:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:482;;287:3;280:4;272:6;268:17;264:27;254:2;;309:5;302;295:20;254:2;349:6;336:20;380:48;396:31;424:2;396:31;:::i;:::-;380:48;:::i;:::-;453:2;444:7;437:19;499:3;492:4;487:2;479:6;475:15;471:26;468:35;465:2;;;520:5;513;506:20;465:2;589;582:4;574:6;570:17;563:4;554:7;550:18;537:55;612:16;;;630:4;608:27;601:42;;;;616:7;244:430;-1:-1:-1;;244:430:1:o;679:167::-;757:13;;810:10;799:22;;789:33;;779:2;;836:1;833;826:12;851:156;917:20;;977:4;966:16;;956:27;;946:2;;997:1;994;987:12;1012:858;;;;;;1194:3;1182:9;1173:7;1169:23;1165:33;1162:2;;;1216:6;1208;1201:22;1162:2;1244:29;1263:9;1244:29;:::i;:::-;1234:39;;1292:38;1326:2;1315:9;1311:18;1292:38;:::i;:::-;1282:48;;1377:2;1366:9;1362:18;1349:32;1339:42;;1432:2;1421:9;1417:18;1404:32;1455:18;1496:2;1488:6;1485:14;1482:2;;;1517:6;1509;1502:22;1482:2;1560:6;1549:9;1545:22;1535:32;;1605:7;1598:4;1594:2;1590:13;1586:27;1576:2;;1632:6;1624;1617:22;1576:2;1677;1664:16;1703:2;1695:6;1692:14;1689:2;;;1724:6;1716;1709:22;1689:2;1774:7;1769:2;1760:6;1756:2;1752:15;1748:24;1745:37;1742:2;;;1800:6;1792;1785:22;1742:2;1152:718;;;;-1:-1:-1;1152:718:1;;-1:-1:-1;1836:2:1;1828:11;;1858:6;1152:718;-1:-1:-1;;;1152:718:1:o;1875:414::-;;;2013:2;2001:9;1992:7;1988:23;1984:32;1981:2;;;2034:6;2026;2019:22;1981:2;2062:29;2081:9;2062:29;:::i;:::-;2052:39;;2142:2;2131:9;2127:18;2114:32;2169:18;2161:6;2158:30;2155:2;;;2206:6;2198;2191:22;2155:2;2234:49;2275:7;2266:6;2255:9;2251:22;2234:49;:::i;:::-;2224:59;;;1971:318;;;;;:::o;2294:484::-;;;;2447:2;2435:9;2426:7;2422:23;2418:32;2415:2;;;2468:6;2460;2453:22;2415:2;2496:29;2515:9;2496:29;:::i;:::-;2486:39;;2544:36;2576:2;2565:9;2561:18;2544:36;:::i;:::-;2534:46;;2631:2;2620:9;2616:18;2603:32;2658:18;2650:6;2647:30;2644:2;;;2695:6;2687;2680:22;2644:2;2723:49;2764:7;2755:6;2744:9;2740:22;2723:49;:::i;:::-;2713:59;;;2405:373;;;;;:::o;2783:511::-;;;2918:2;2906:9;2897:7;2893:23;2889:32;2886:2;;;2939:6;2931;2924:22;2886:2;2983:9;2970:23;3036:5;3029:13;3022:21;3015:5;3012:32;3002:2;;3063:6;3055;3048:22;3299:190;;3411:2;3399:9;3390:7;3386:23;3382:32;3379:2;;;3432:6;3424;3417:22;3379:2;-1:-1:-1;3460:23:1;;3369:120;-1:-1:-1;3369:120:1:o;3494:306::-;;3605:2;3593:9;3584:7;3580:23;3576:32;3573:2;;;3626:6;3618;3611:22;3573:2;3657:23;;-1:-1:-1;;;;;;3709:32:1;;3699:43;;3689:2;;3761:6;3753;3746:22;3689:2;3789:5;3563:237;-1:-1:-1;;;3563:237:1:o;3805:659::-;;;;;;3992:3;3980:9;3971:7;3967:23;3963:33;3960:2;;;4014:6;4006;3999:22;3960:2;4051:9;4045:16;-1:-1:-1;;;;;4094:5:1;4090:46;4083:5;4080:57;4070:2;;4156:6;4148;4141:22;4070:2;4184:5;-1:-1:-1;4208:48:1;4252:2;4237:18;;4208:48;:::i;:::-;4198:58;;4275:48;4319:2;4308:9;4304:18;4275:48;:::i;:::-;4265:58;;4342:48;4386:2;4375:9;4371:18;4342:48;:::i;:::-;4332:58;;4409:49;4453:3;4442:9;4438:19;4409:49;:::i;:::-;4399:59;;3950:514;;;;;;;;:::o;4664:264::-;;;4793:2;4781:9;4772:7;4768:23;4764:32;4761:2;;;4814:6;4806;4799:22;4761:2;4855:9;4842:23;4832:33;;4884:38;4918:2;4907:9;4903:18;4884:38;:::i;:::-;4874:48;;4751:177;;;;;:::o;4933:408::-;;;5071:2;5059:9;5050:7;5046:23;5042:32;5039:2;;;5092:6;5084;5077:22;5039:2;5133:9;5120:23;5110:33;;5194:2;5183:9;5179:18;5166:32;5221:18;5213:6;5210:30;5207:2;;;5258:6;5250;5243:22;5346:1283;;;;;;;5560:3;5548:9;5539:7;5535:23;5531:33;5528:2;;;5582:6;5574;5567:22;5528:2;5610:39;5639:9;5610:39;:::i;:::-;5600:49;;5668:2;5689:48;5733:2;5722:9;5718:18;5689:48;:::i;:::-;5679:58;;5756:48;5800:2;5789:9;5785:18;5756:48;:::i;:::-;5746:58;;5823:48;5867:2;5856:9;5852:18;5823:48;:::i;:::-;5813:58;;5911:3;5900:9;5896:19;5890:26;5880:36;;5960:3;5949:9;5945:19;5939:26;5988:18;5980:6;5977:30;5974:2;;;6025:6;6017;6010:22;5974:2;6053:22;;6106:4;6098:13;;6094:27;-1:-1:-1;6084:2:1;;6140:6;6132;6125:22;6084:2;6174;6168:9;6199:48;6215:31;6243:2;6215:31;:::i;6199:48::-;6270:2;6263:5;6256:17;6310:7;6305:2;6300;6296;6292:11;6288:20;6285:33;6282:2;;;6336:6;6328;6321:22;6282:2;6363:6;6378:128;6392:2;6389:1;6386:9;6378:128;;;6479:10;;;6475:19;;6469:26;6449:13;;;6445:22;;6438:58;6403:10;;6378:128;;;6524:2;6521:1;6518:9;6515:2;;;6582:6;6577:2;6572;6565:5;6561:14;6557:23;6550:39;6515:2;;6618:5;6608:15;;;;;;5518:1111;;;;;;;;:::o;6634:192::-;;6744:2;6732:9;6723:7;6719:23;6715:32;6712:2;;;6765:6;6757;6750:22;6712:2;6793:27;6810:9;6793:27;:::i;8527:363::-;-1:-1:-1;;;;;8741:32:1;;;;8723:51;;8822:6;8810:19;;;;8805:2;8790:18;;8783:47;8878:4;8866:17;8861:2;8846:18;;8839:45;8711:2;8696:18;;8678:212::o;10402:335::-;10604:2;10586:21;;;10643:2;10623:18;;;10616:30;-1:-1:-1;;;10677:2:1;10662:18;;10655:41;10728:2;10713:18;;10576:161::o;16288:275::-;16359:2;16353:9;16424:2;16405:13;;-1:-1:-1;;16401:27:1;16389:40;;16459:18;16444:34;;16480:22;;;16441:62;16438:2;;;16506:18;;:::i;:::-;16542:2;16535:22;16333:230;;-1:-1:-1;16333:230:1:o;16568:186::-;;16649:18;16641:6;16638:30;16635:2;;;16671:18;;:::i;:::-;-1:-1:-1;16737:2:1;16716:15;-1:-1:-1;;16712:29:1;16743:4;16708:40;;16625:129::o;16759:224::-;;16826:6;16859:2;16856:1;16852:10;16889:2;16886:1;16882:10;16920:3;16916:2;16912:12;16907:3;16904:21;16901:2;;;16928:18;;:::i;:::-;16964:13;;16806:177;-1:-1:-1;;;;16806:177:1:o;16988:128::-;;17059:1;17055:6;17052:1;17049:13;17046:2;;;17065:18;;:::i;:::-;-1:-1:-1;17101:9:1;;17036:80::o;17121:127::-;17182:10;17177:3;17173:20;17170:1;17163:31;17213:4;17210:1;17203:15;17237:4;17234:1;17227:15;17253:127;17314:10;17309:3;17305:20;17302:1;17295:31;17345:4;17342:1;17335:15;17369:4;17366:1;17359:15
Swarm Source
ipfs://28b16dc3599b8eca7cc687c956ed77da4a28c1e21a3bf65d75a505a20084d1d3
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|---|---|---|---|---|
BSC | 100.00% | $0.006983 | 17,640 | $123.18 |
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.