Overview
ETH Balance
ETH Value
$0.00Multichain Info
Latest 13 from a total of 13 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Bundle Txs | 9229185 | 42 days ago | IN | 0 ETH | 0.00000135 | ||||
Bundle Txs | 9227382 | 42 days ago | IN | 0 ETH | 0.00000135 | ||||
Bundle Txs | 9226673 | 42 days ago | IN | 0 ETH | 0.00000135 | ||||
Bundle Txs | 7752023 | 59 days ago | IN | 0 ETH | 0.00002358 | ||||
Bundle Txs | 5426132 | 86 days ago | IN | 0 ETH | 0.00000008 | ||||
Bundle Txs | 5372436 | 86 days ago | IN | 0 ETH | 0 | ||||
Bundle Txs | 5371398 | 86 days ago | IN | 0 ETH | 0.00000001 | ||||
Bundle Txs | 4976878 | 91 days ago | IN | 0 ETH | 0 | ||||
Bundle Txs | 4976873 | 91 days ago | IN | 0 ETH | 0 | ||||
Bundle Txs | 4976869 | 91 days ago | IN | 0 ETH | 0 | ||||
Bundle Txs | 4976865 | 91 days ago | IN | 0 ETH | 0 | ||||
Bundle Txs | 4976860 | 91 days ago | IN | 0 ETH | 0.00000038 | ||||
Set Authority | 4975055 | 91 days ago | IN | 0 ETH | 0 |
Latest 22 internal transactions
Parent Transaction Hash | Block | From | To | |||
---|---|---|---|---|---|---|
7752023 | 59 days ago | Contract Creation | 0 ETH | |||
7752023 | 59 days ago | Contract Creation | 0 ETH | |||
7752023 | 59 days ago | Contract Creation | 0 ETH | |||
7752023 | 59 days ago | Contract Creation | 0 ETH | |||
7752023 | 59 days ago | Contract Creation | 0 ETH | |||
7752023 | 59 days ago | Contract Creation | 0 ETH | |||
7752023 | 59 days ago | Contract Creation | 0 ETH | |||
7752023 | 59 days ago | Contract Creation | 0 ETH | |||
7752023 | 59 days ago | Contract Creation | 0 ETH | |||
7752023 | 59 days ago | Contract Creation | 0 ETH | |||
4976860 | 91 days ago | Contract Creation | 0 ETH | |||
4976860 | 91 days ago | Contract Creation | 0 ETH | |||
4976860 | 91 days ago | Contract Creation | 0 ETH | |||
4976860 | 91 days ago | Contract Creation | 0 ETH | |||
4976860 | 91 days ago | Contract Creation | 0 ETH | |||
4976860 | 91 days ago | Contract Creation | 0 ETH | |||
4976860 | 91 days ago | Contract Creation | 0 ETH | |||
4976860 | 91 days ago | Contract Creation | 0 ETH | |||
4976860 | 91 days ago | Contract Creation | 0 ETH | |||
4976860 | 91 days ago | Contract Creation | 0 ETH | |||
4976860 | 91 days ago | Contract Creation | 0 ETH | |||
4665338 | 95 days ago | Contract Creation | 0 ETH |
Contract Source Code (Solidity Standard Json-Input format)
// SPDX-License-Identifier: UNLICENSED pragma solidity 0.8.21; import {Auth, Authority} from "@solmate/auth/Auth.sol"; import {CREATE3} from "@solmate/utils/CREATE3.sol"; import {Address} from "@openzeppelin/contracts/utils/Address.sol"; contract Deployer is Auth { using Address for address; /** * @notice Contains data needed to send a transaction. */ struct Tx { address target; bytes data; uint256 value; } /** * @notice Emitted on `deployContract` calls. * @param name string name used to derive salt for deployment * @param contractAddress the newly deployed contract address * @param creationCodeHash keccak256 hash of the creation code * - useful to determine creation code is the same across multiple chains */ event ContractDeployed(string name, address contractAddress, bytes32 creationCodeHash); constructor(address _owner, Authority _auth) Auth(_owner, _auth) {} /** * @notice Deploy some contract to a deterministic address. * @param name string used to derive salt for deployment * @dev Should be of form: * "ContractName Version 0.0" * Where the numbers after version are VERSION . SUBVERSION * @param creationCode the contract creation code to deploy * - can be obtained by calling type(contractName).creationCode * @param constructorArgs the contract constructor arguments if any * - must be of form abi.encode(arg1, arg2, ...) * @param value non zero if constructor needs to be payable */ function deployContract( string calldata name, bytes memory creationCode, bytes calldata constructorArgs, uint256 value ) external requiresAuth returns (address) { bytes32 creationCodeHash = keccak256(creationCode); if (constructorArgs.length > 0) { // Append constructor args to end of creation code. creationCode = abi.encodePacked(creationCode, constructorArgs); } bytes32 salt = convertNameToBytes32(name); address contractAddress = CREATE3.deploy(salt, creationCode, value); emit ContractDeployed(name, contractAddress, creationCodeHash); return contractAddress; } function bundleTxs(Tx[] calldata txs) external requiresAuth { uint256 txsLength = txs.length; for (uint256 i; i < txsLength; i++) { txs[i].target.functionCallWithValue(txs[i].data, txs[i].value); } } function getAddress(string calldata name) external view returns (address) { bytes32 salt = convertNameToBytes32(name); return CREATE3.getDeployed(salt); } function convertNameToBytes32(string calldata name) public pure returns (bytes32) { return keccak256(abi.encode(name)); } }
// SPDX-License-Identifier: MIT // OpenZeppelin Contracts (last updated v5.0.0) (utils/Address.sol) pragma solidity ^0.8.20; /** * @dev Collection of functions related to the address type */ library Address { /** * @dev The ETH balance of the account is not enough to perform the operation. */ error AddressInsufficientBalance(address account); /** * @dev There's no code at `target` (it is not a contract). */ error AddressEmptyCode(address target); /** * @dev A call to an address target failed. The target may have reverted. */ error FailedInnerCall(); /** * @dev Replacement for Solidity's `transfer`: sends `amount` wei to * `recipient`, forwarding all available gas and reverting on errors. * * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost * of certain opcodes, possibly making contracts go over the 2300 gas limit * imposed by `transfer`, making them unable to receive funds via * `transfer`. {sendValue} removes this limitation. * * https://consensys.net/diligence/blog/2019/09/stop-using-soliditys-transfer-now/[Learn more]. * * IMPORTANT: because control is transferred to `recipient`, care must be * taken to not create reentrancy vulnerabilities. Consider using * {ReentrancyGuard} or the * https://solidity.readthedocs.io/en/v0.8.20/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern]. */ function sendValue(address payable recipient, uint256 amount) internal { if (address(this).balance < amount) { revert AddressInsufficientBalance(address(this)); } (bool success, ) = recipient.call{value: amount}(""); if (!success) { revert FailedInnerCall(); } } /** * @dev Performs a Solidity function call using a low level `call`. A * plain `call` is an unsafe replacement for a function call: use this * function instead. * * If `target` reverts with a revert reason or custom error, it is bubbled * up by this function (like regular Solidity function calls). However, if * the call reverted with no returned reason, this function reverts with a * {FailedInnerCall} error. * * Returns the raw returned data. To convert to the expected return value, * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`]. * * Requirements: * * - `target` must be a contract. * - calling `target` with `data` must not revert. */ function functionCall(address target, bytes memory data) internal returns (bytes memory) { return functionCallWithValue(target, data, 0); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but also transferring `value` wei to `target`. * * Requirements: * * - the calling contract must have an ETH balance of at least `value`. * - the called Solidity function must be `payable`. */ function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) { if (address(this).balance < value) { revert AddressInsufficientBalance(address(this)); } (bool success, bytes memory returndata) = target.call{value: value}(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a static call. */ function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) { (bool success, bytes memory returndata) = target.staticcall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], * but performing a delegate call. */ function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) { (bool success, bytes memory returndata) = target.delegatecall(data); return verifyCallResultFromTarget(target, success, returndata); } /** * @dev Tool to verify that a low level call to smart-contract was successful, and reverts if the target * was not a contract or bubbling up the revert reason (falling back to {FailedInnerCall}) in case of an * unsuccessful call. */ function verifyCallResultFromTarget( address target, bool success, bytes memory returndata ) internal view returns (bytes memory) { if (!success) { _revert(returndata); } else { // only check if target is a contract if the call was successful and the return data is empty // otherwise we already know that it was a contract if (returndata.length == 0 && target.code.length == 0) { revert AddressEmptyCode(target); } return returndata; } } /** * @dev Tool to verify that a low level call was successful, and reverts if it wasn't, either by bubbling the * revert reason or with a default {FailedInnerCall} error. */ function verifyCallResult(bool success, bytes memory returndata) internal pure returns (bytes memory) { if (!success) { _revert(returndata); } else { return returndata; } } /** * @dev Reverts with returndata if present. Otherwise reverts with {FailedInnerCall}. */ function _revert(bytes memory returndata) private pure { // 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 /// @solidity memory-safe-assembly assembly { let returndata_size := mload(returndata) revert(add(32, returndata), returndata_size) } } else { revert FailedInnerCall(); } } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Provides a flexible and updatable auth pattern which is completely separate from application logic. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Auth.sol) /// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol) abstract contract Auth { event OwnershipTransferred(address indexed user, address indexed newOwner); event AuthorityUpdated(address indexed user, Authority indexed newAuthority); address public owner; Authority public authority; constructor(address _owner, Authority _authority) { owner = _owner; authority = _authority; emit OwnershipTransferred(msg.sender, _owner); emit AuthorityUpdated(msg.sender, _authority); } modifier requiresAuth() virtual { require(isAuthorized(msg.sender, msg.sig), "UNAUTHORIZED"); _; } function isAuthorized(address user, bytes4 functionSig) internal view virtual returns (bool) { Authority auth = authority; // Memoizing authority saves us a warm SLOAD, around 100 gas. // Checking if the caller is the owner only after calling the authority saves gas in most cases, but be // aware that this makes protected functions uncallable even to the owner if the authority is out of order. return (address(auth) != address(0) && auth.canCall(user, address(this), functionSig)) || user == owner; } function setAuthority(Authority newAuthority) public virtual { // We check if the caller is the owner first because we want to ensure they can // always swap out the authority even if it's reverting or using up a lot of gas. require(msg.sender == owner || authority.canCall(msg.sender, address(this), msg.sig)); authority = newAuthority; emit AuthorityUpdated(msg.sender, newAuthority); } function transferOwnership(address newOwner) public virtual requiresAuth { owner = newOwner; emit OwnershipTransferred(msg.sender, newOwner); } } /// @notice A generic interface for a contract which provides authorization data to an Auth instance. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/auth/Auth.sol) /// @author Modified from Dappsys (https://github.com/dapphub/ds-auth/blob/master/src/auth.sol) interface Authority { function canCall( address user, address target, bytes4 functionSig ) external view returns (bool); }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; /// @notice Library for converting between addresses and bytes32 values. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/Bytes32AddressLib.sol) library Bytes32AddressLib { function fromLast20Bytes(bytes32 bytesValue) internal pure returns (address) { return address(uint160(uint256(bytesValue))); } function fillLast12Bytes(address addressValue) internal pure returns (bytes32) { return bytes32(bytes20(addressValue)); } }
// SPDX-License-Identifier: AGPL-3.0-only pragma solidity >=0.8.0; import {Bytes32AddressLib} from "./Bytes32AddressLib.sol"; /// @notice Deploy to deterministic addresses without an initcode factor. /// @author Solmate (https://github.com/transmissions11/solmate/blob/main/src/utils/CREATE3.sol) /// @author Modified from 0xSequence (https://github.com/0xSequence/create3/blob/master/contracts/Create3.sol) library CREATE3 { using Bytes32AddressLib for bytes32; //--------------------------------------------------------------------------------// // Opcode | Opcode + Arguments | Description | Stack View // //--------------------------------------------------------------------------------// // 0x36 | 0x36 | CALLDATASIZE | size // // 0x3d | 0x3d | RETURNDATASIZE | 0 size // // 0x3d | 0x3d | RETURNDATASIZE | 0 0 size // // 0x37 | 0x37 | CALLDATACOPY | // // 0x36 | 0x36 | CALLDATASIZE | size // // 0x3d | 0x3d | RETURNDATASIZE | 0 size // // 0x34 | 0x34 | CALLVALUE | value 0 size // // 0xf0 | 0xf0 | CREATE | newContract // //--------------------------------------------------------------------------------// // Opcode | Opcode + Arguments | Description | Stack View // //--------------------------------------------------------------------------------// // 0x67 | 0x67XXXXXXXXXXXXXXXX | PUSH8 bytecode | bytecode // // 0x3d | 0x3d | RETURNDATASIZE | 0 bytecode // // 0x52 | 0x52 | MSTORE | // // 0x60 | 0x6008 | PUSH1 08 | 8 // // 0x60 | 0x6018 | PUSH1 18 | 24 8 // // 0xf3 | 0xf3 | RETURN | // //--------------------------------------------------------------------------------// bytes internal constant PROXY_BYTECODE = hex"67_36_3d_3d_37_36_3d_34_f0_3d_52_60_08_60_18_f3"; bytes32 internal constant PROXY_BYTECODE_HASH = keccak256(PROXY_BYTECODE); function deploy( bytes32 salt, bytes memory creationCode, uint256 value ) internal returns (address deployed) { bytes memory proxyChildBytecode = PROXY_BYTECODE; address proxy; /// @solidity memory-safe-assembly assembly { // Deploy a new contract with our pre-made bytecode via CREATE2. // We start 32 bytes into the code to avoid copying the byte length. proxy := create2(0, add(proxyChildBytecode, 32), mload(proxyChildBytecode), salt) } require(proxy != address(0), "DEPLOYMENT_FAILED"); deployed = getDeployed(salt); (bool success, ) = proxy.call{value: value}(creationCode); require(success && deployed.code.length != 0, "INITIALIZATION_FAILED"); } function getDeployed(bytes32 salt) internal view returns (address) { return getDeployed(salt, address(this)); } function getDeployed(bytes32 salt, address creator) internal pure returns (address) { address proxy = keccak256( abi.encodePacked( // Prefix: bytes1(0xFF), // Creator: creator, // Salt: salt, // Bytecode hash: PROXY_BYTECODE_HASH ) ).fromLast20Bytes(); return keccak256( abi.encodePacked( // 0xd6 = 0xc0 (short RLP prefix) + 0x16 (length of: 0x94 ++ proxy ++ 0x01) // 0x94 = 0x80 + 0x14 (0x14 = the length of an address, 20 bytes, in hex) hex"d6_94", proxy, hex"01" // Nonce of the proxy contract (1) ) ).fromLast20Bytes(); } }
{ "evmVersion": "shanghai", "metadata": { "appendCBOR": true, "bytecodeHash": "ipfs", "useLiteralContent": false }, "optimizer": { "enabled": true, "runs": 200 }, "outputSelection": { "*": { "*": [ "evm.bytecode", "evm.deployedBytecode", "abi" ] } }, "remappings": [ "@solmate/=lib/solmate/src/", "@forge-std/=lib/forge-std/src/", "@ds-test/=lib/forge-std/lib/ds-test/src/", "ds-test/=lib/forge-std/lib/ds-test/src/", "@openzeppelin/=lib/openzeppelin-contracts/", "@ccip/=lib/ccip/", "@oapp-auth/=lib/OAppAuth/src/", "@devtools-oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/contracts/oapp/", "@layerzerolabs/lz-evm-messagelib-v2/=lib/OAppAuth/node_modules/@layerzerolabs/lz-evm-messagelib-v2/", "@layerzerolabs/lz-evm-protocol-v2/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/protocol/", "@layerzerolabs/oapp-evm/=lib/OAppAuth/lib/devtools/packages/oapp-evm/", "@lz-oapp-evm/=lib/OAppAuth/lib/LayerZero-V2/packages/layerzero-v2/evm/oapp/contracts/oapp/", "LayerZero-V2/=lib/OAppAuth/lib/", "OAppAuth/=lib/OAppAuth/", "ccip/=lib/ccip/contracts/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "halmos-cheatcodes/=lib/OAppAuth/lib/openzeppelin-contracts/lib/halmos-cheatcodes/src/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "solidity-bytes-utils/=lib/OAppAuth/node_modules/solidity-bytes-utils/", "solmate/=lib/solmate/src/" ], "viaIR": false }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"inputs":[{"internalType":"address","name":"_owner","type":"address"},{"internalType":"contract Authority","name":"_auth","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"name":"AddressEmptyCode","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"AddressInsufficientBalance","type":"error"},{"inputs":[],"name":"FailedInnerCall","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"AuthorityUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"name","type":"string"},{"indexed":false,"internalType":"address","name":"contractAddress","type":"address"},{"indexed":false,"internalType":"bytes32","name":"creationCodeHash","type":"bytes32"}],"name":"ContractDeployed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[],"name":"authority","outputs":[{"internalType":"contract Authority","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"components":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"internalType":"struct Deployer.Tx[]","name":"txs","type":"tuple[]"}],"name":"bundleTxs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"convertNameToBytes32","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"},{"internalType":"bytes","name":"creationCode","type":"bytes"},{"internalType":"bytes","name":"constructorArgs","type":"bytes"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"deployContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"name","type":"string"}],"name":"getAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract Authority","name":"newAuthority","type":"address"}],"name":"setAuthority","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]
Contract Creation Code
608060405234801561000f575f80fd5b50604051610e66380380610e6683398101604081905261002e916100dd565b5f80546001600160a01b03199081166001600160a01b0385811691821784556001805490931690851617909155604051849284929133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a36040516001600160a01b0382169033907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350505050610115565b6001600160a01b03811681146100da575f80fd5b50565b5f80604083850312156100ee575f80fd5b82516100f9816100c6565b602084015190925061010a816100c6565b809150509250929050565b610d44806101225f395ff3fe608060405234801561000f575f80fd5b5060043610610085575f3560e01c8063bf7e214f11610058578063bf7e214f146100f3578063ef5de7e314610106578063f2fde38b14610119578063f74907a21461012c575f80fd5b806369d77304146100895780637a9e5e4b1461009e5780638da5cb5b146100b1578063bf40fac1146100e0575b5f80fd5b61009c610097366004610908565b61014d565b005b61009c6100ac36600461098b565b610280565b5f546100c3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100c36100ee3660046109eb565b610364565b6001546100c3906001600160a01b031681565b6100c3610114366004610a3e565b610383565b61009c61012736600461098b565b61044e565b61013f61013a3660046109eb565b6104c9565b6040519081526020016100d7565b610162335f356001600160e01b0319166104fb565b6101875760405162461bcd60e51b815260040161017e90610b43565b60405180910390fd5b805f5b8181101561027a576102678484838181106101a7576101a7610b69565b90506020028101906101b99190610b7d565b6101c7906020810190610b9b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525088925087915085905081811061020f5761020f610b69565b90506020028101906102219190610b7d565b6040013586868581811061023757610237610b69565b90506020028101906102499190610b7d565b61025790602081019061098b565b6001600160a01b031691906105a1565b508061027281610bde565b91505061018a565b50505050565b5f546001600160a01b0316331480610311575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906102d290339030906001600160e01b03195f351690600401610c02565b602060405180830381865afa1580156102ed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103119190610c2f565b610319575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b5f8061037084846104c9565b905061037b8161063c565b949350505050565b5f610399335f356001600160e01b0319166104fb565b6103b55760405162461bcd60e51b815260040161017e90610b43565b8451602086012083156103e9578585856040516020016103d793929190610c7b565b60405160208183030381529060405295505b5f6103f489896104c9565b90505f61040282898761064d565b90507fd928a3951eedba2f72a5eb8c15b591ead63c282f21b2f5e93506fb88cae27fec8a8a83866040516104399493929190610cc1565b60405180910390a19998505050505050505050565b610463335f356001600160e01b0319166104fb565b61047f5760405162461bcd60e51b815260040161017e90610b43565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f82826040516020016104dd929190610cf0565b60405160208183030381529060405280519060200120905092915050565b6001545f906001600160a01b03168015801590610582575060405163b700961360e01b81526001600160a01b0382169063b70096139061054390879030908890600401610c02565b602060405180830381865afa15801561055e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105829190610c2f565b8061037b57505f546001600160a01b0385811691161491505092915050565b6060814710156105c65760405163cd78605960e01b815230600482015260240161017e565b5f80856001600160a01b031684866040516105e19190610d03565b5f6040518083038185875af1925050503d805f811461061b576040519150601f19603f3d011682016040523d82523d5f602084013e610620565b606091505b509150915061063086838361079c565b925050505b9392505050565b5f61064782306107f8565b92915050565b5f806040518060400160405280601081526020016f67363d3d37363d34f03d5260086018f360801b81525090505f858251602084015ff590506001600160a01b0381166106d05760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b604482015260640161017e565b6106d98661063c565b92505f816001600160a01b031685876040516106f59190610d03565b5f6040518083038185875af1925050503d805f811461072f576040519150601f19603f3d011682016040523d82523d5f602084013e610734565b606091505b5050905080801561074e57506001600160a01b0384163b15155b6107925760405162461bcd60e51b815260206004820152601560248201527412539255125053125690551253d397d19052531151605a1b604482015260640161017e565b5050509392505050565b6060826107b1576107ac826108dc565b610635565b81511580156107c857506001600160a01b0384163b155b156107f157604051639996b31560e01b81526001600160a01b038516600482015260240161017e565b5080610635565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015290516001600160f81b0319918101919091526bffffffffffffffffffffffff19606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201525f90819061089c906075015b6040516020818303038152906040528051906020012090565b6040516135a560f21b60208201526bffffffffffffffffffffffff19606083901b166022820152600160f81b603682015290915061037b90603701610883565b8051156108ec5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b5f8060208385031215610919575f80fd5b823567ffffffffffffffff80821115610930575f80fd5b818501915085601f830112610943575f80fd5b813581811115610951575f80fd5b8660208260051b8501011115610965575f80fd5b60209290920196919550909350505050565b6001600160a01b0381168114610905575f80fd5b5f6020828403121561099b575f80fd5b813561063581610977565b5f8083601f8401126109b6575f80fd5b50813567ffffffffffffffff8111156109cd575f80fd5b6020830191508360208285010111156109e4575f80fd5b9250929050565b5f80602083850312156109fc575f80fd5b823567ffffffffffffffff811115610a12575f80fd5b610a1e858286016109a6565b90969095509350505050565b634e487b7160e01b5f52604160045260245ffd5b5f805f805f8060808789031215610a53575f80fd5b863567ffffffffffffffff80821115610a6a575f80fd5b610a768a838b016109a6565b90985096506020890135915080821115610a8e575f80fd5b818901915089601f830112610aa1575f80fd5b813581811115610ab357610ab3610a2a565b604051601f8201601f19908116603f01168101908382118183101715610adb57610adb610a2a565b816040528281528c6020848701011115610af3575f80fd5b826020860160208301375f602084830101528098505050506040890135915080821115610b1e575f80fd5b50610b2b89828a016109a6565b979a9699509497949695606090950135949350505050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112610b91575f80fd5b9190910192915050565b5f808335601e19843603018112610bb0575f80fd5b83018035915067ffffffffffffffff821115610bca575f80fd5b6020019150368190038213156109e4575f80fd5b5f60018201610bfb57634e487b7160e01b5f52601160045260245ffd5b5060010190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f60208284031215610c3f575f80fd5b81518015158114610635575f80fd5b5f81515f5b81811015610c6d5760208185018101518683015201610c53565b505f93019283525090919050565b5f610c868286610c4e565b838582375f930192835250909392505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f610cd4606083018688610c99565b6001600160a01b03949094166020830152506040015292915050565b602081525f61037b602083018486610c99565b5f6106358284610c4e56fea2646970667358221220d60455b2e0c177361c7d97bd59850f966664698864856dd2499dae185086e57764736f6c634300081500330000000000000000000000001b514df3413da9931eb31f2ab72e32c0a507cad50000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode
0x608060405234801561000f575f80fd5b5060043610610085575f3560e01c8063bf7e214f11610058578063bf7e214f146100f3578063ef5de7e314610106578063f2fde38b14610119578063f74907a21461012c575f80fd5b806369d77304146100895780637a9e5e4b1461009e5780638da5cb5b146100b1578063bf40fac1146100e0575b5f80fd5b61009c610097366004610908565b61014d565b005b61009c6100ac36600461098b565b610280565b5f546100c3906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b6100c36100ee3660046109eb565b610364565b6001546100c3906001600160a01b031681565b6100c3610114366004610a3e565b610383565b61009c61012736600461098b565b61044e565b61013f61013a3660046109eb565b6104c9565b6040519081526020016100d7565b610162335f356001600160e01b0319166104fb565b6101875760405162461bcd60e51b815260040161017e90610b43565b60405180910390fd5b805f5b8181101561027a576102678484838181106101a7576101a7610b69565b90506020028101906101b99190610b7d565b6101c7906020810190610b9b565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f9201919091525088925087915085905081811061020f5761020f610b69565b90506020028101906102219190610b7d565b6040013586868581811061023757610237610b69565b90506020028101906102499190610b7d565b61025790602081019061098b565b6001600160a01b031691906105a1565b508061027281610bde565b91505061018a565b50505050565b5f546001600160a01b0316331480610311575060015460405163b700961360e01b81526001600160a01b039091169063b7009613906102d290339030906001600160e01b03195f351690600401610c02565b602060405180830381865afa1580156102ed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103119190610c2f565b610319575f80fd5b600180546001600160a01b0319166001600160a01b03831690811790915560405133907fa3396fd7f6e0a21b50e5089d2da70d5ac0a3bbbd1f617a93f134b76389980198905f90a350565b5f8061037084846104c9565b905061037b8161063c565b949350505050565b5f610399335f356001600160e01b0319166104fb565b6103b55760405162461bcd60e51b815260040161017e90610b43565b8451602086012083156103e9578585856040516020016103d793929190610c7b565b60405160208183030381529060405295505b5f6103f489896104c9565b90505f61040282898761064d565b90507fd928a3951eedba2f72a5eb8c15b591ead63c282f21b2f5e93506fb88cae27fec8a8a83866040516104399493929190610cc1565b60405180910390a19998505050505050505050565b610463335f356001600160e01b0319166104fb565b61047f5760405162461bcd60e51b815260040161017e90610b43565b5f80546001600160a01b0319166001600160a01b0383169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b5f82826040516020016104dd929190610cf0565b60405160208183030381529060405280519060200120905092915050565b6001545f906001600160a01b03168015801590610582575060405163b700961360e01b81526001600160a01b0382169063b70096139061054390879030908890600401610c02565b602060405180830381865afa15801561055e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906105829190610c2f565b8061037b57505f546001600160a01b0385811691161491505092915050565b6060814710156105c65760405163cd78605960e01b815230600482015260240161017e565b5f80856001600160a01b031684866040516105e19190610d03565b5f6040518083038185875af1925050503d805f811461061b576040519150601f19603f3d011682016040523d82523d5f602084013e610620565b606091505b509150915061063086838361079c565b925050505b9392505050565b5f61064782306107f8565b92915050565b5f806040518060400160405280601081526020016f67363d3d37363d34f03d5260086018f360801b81525090505f858251602084015ff590506001600160a01b0381166106d05760405162461bcd60e51b81526020600482015260116024820152701111541313d65351539517d19052531151607a1b604482015260640161017e565b6106d98661063c565b92505f816001600160a01b031685876040516106f59190610d03565b5f6040518083038185875af1925050503d805f811461072f576040519150601f19603f3d011682016040523d82523d5f602084013e610734565b606091505b5050905080801561074e57506001600160a01b0384163b15155b6107925760405162461bcd60e51b815260206004820152601560248201527412539255125053125690551253d397d19052531151605a1b604482015260640161017e565b5050509392505050565b6060826107b1576107ac826108dc565b610635565b81511580156107c857506001600160a01b0384163b155b156107f157604051639996b31560e01b81526001600160a01b038516600482015260240161017e565b5080610635565b604080518082018252601081526f67363d3d37363d34f03d5260086018f360801b60209182015290516001600160f81b0319918101919091526bffffffffffffffffffffffff19606083901b166021820152603581018390527f21c35dbe1b344a2488cf3321d6ce542f8e9f305544ff09e4993a62319a497c1f60558201525f90819061089c906075015b6040516020818303038152906040528051906020012090565b6040516135a560f21b60208201526bffffffffffffffffffffffff19606083901b166022820152600160f81b603682015290915061037b90603701610883565b8051156108ec5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b50565b5f8060208385031215610919575f80fd5b823567ffffffffffffffff80821115610930575f80fd5b818501915085601f830112610943575f80fd5b813581811115610951575f80fd5b8660208260051b8501011115610965575f80fd5b60209290920196919550909350505050565b6001600160a01b0381168114610905575f80fd5b5f6020828403121561099b575f80fd5b813561063581610977565b5f8083601f8401126109b6575f80fd5b50813567ffffffffffffffff8111156109cd575f80fd5b6020830191508360208285010111156109e4575f80fd5b9250929050565b5f80602083850312156109fc575f80fd5b823567ffffffffffffffff811115610a12575f80fd5b610a1e858286016109a6565b90969095509350505050565b634e487b7160e01b5f52604160045260245ffd5b5f805f805f8060808789031215610a53575f80fd5b863567ffffffffffffffff80821115610a6a575f80fd5b610a768a838b016109a6565b90985096506020890135915080821115610a8e575f80fd5b818901915089601f830112610aa1575f80fd5b813581811115610ab357610ab3610a2a565b604051601f8201601f19908116603f01168101908382118183101715610adb57610adb610a2a565b816040528281528c6020848701011115610af3575f80fd5b826020860160208301375f602084830101528098505050506040890135915080821115610b1e575f80fd5b50610b2b89828a016109a6565b979a9699509497949695606090950135949350505050565b6020808252600c908201526b15539055551213d49256915160a21b604082015260600190565b634e487b7160e01b5f52603260045260245ffd5b5f8235605e19833603018112610b91575f80fd5b9190910192915050565b5f808335601e19843603018112610bb0575f80fd5b83018035915067ffffffffffffffff821115610bca575f80fd5b6020019150368190038213156109e4575f80fd5b5f60018201610bfb57634e487b7160e01b5f52601160045260245ffd5b5060010190565b6001600160a01b0393841681529190921660208201526001600160e01b0319909116604082015260600190565b5f60208284031215610c3f575f80fd5b81518015158114610635575f80fd5b5f81515f5b81811015610c6d5760208185018101518683015201610c53565b505f93019283525090919050565b5f610c868286610c4e565b838582375f930192835250909392505050565b81835281816020850137505f828201602090810191909152601f909101601f19169091010190565b606081525f610cd4606083018688610c99565b6001600160a01b03949094166020830152506040015292915050565b602081525f61037b602083018486610c99565b5f6106358284610c4e56fea2646970667358221220d60455b2e0c177361c7d97bd59850f966664698864856dd2499dae185086e57764736f6c63430008150033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
0000000000000000000000001b514df3413da9931eb31f2ab72e32c0a507cad50000000000000000000000000000000000000000000000000000000000000000
-----Decoded View---------------
Arg [0] : _owner (address): 0x1b514df3413DA9931eB31f2Ab72e32c0A507Cad5
Arg [1] : _auth (address): 0x0000000000000000000000000000000000000000
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 0000000000000000000000001b514df3413da9931eb31f2ab72e32c0a507cad5
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000000
Deployed Bytecode Sourcemap
240:2621:4:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2300:239;;;;;;:::i;:::-;;:::i;:::-;;1523:434:1;;;;;;:::i;:::-;;:::i;562:20::-;;;;;-1:-1:-1;;;;;562:20:1;;;;;;-1:-1:-1;;;;;1246:32:5;;;1228:51;;1216:2;1201:18;562:20:1;;;;;;;;2545:175:4;;;;;;:::i;:::-;;:::i;589:26:1:-;;;;;-1:-1:-1;;;;;589:26:1;;;1600:694:4;;;;;;:::i;:::-;;:::i;1963:164:1:-;;;;;;:::i;:::-;;:::i;2726:133:4:-;;;;;;:::i;:::-;;:::i;:::-;;;4397:25:5;;;4385:2;4370:18;2726:133:4;4251:177:5;2300:239:4;902:33:1;915:10;927:7;;-1:-1:-1;;;;;;927:7:1;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:1;;;;;;;:::i;:::-;;;;;;;;;2390:3:4;2370:17:::1;2410:123;2430:9;2426:1;:13;2410:123;;;2460:62;2496:3;;2500:1;2496:6;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:11;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;2460:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;2509:3:4;;-1:-1:-1;2509:3:4;;-1:-1:-1;2513:1:4;;-1:-1:-1;2509:6:4;;::::1;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:12;;;2460:3;;2464:1;2460:6;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;:13;::::0;::::1;::::0;::::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;;;;;2460:35:4::1;::::0;:62;:35:::1;:62::i;:::-;-1:-1:-1::0;2441:3:4;::::1;::::0;::::1;:::i;:::-;;;;2410:123;;;;2360:179;2300:239:::0;;:::o;1523:434:1:-;1794:5;;-1:-1:-1;;;;;1794:5:1;1780:10;:19;;:76;;-1:-1:-1;1803:9:1;;:53;;-1:-1:-1;;;1803:53:1;;-1:-1:-1;;;;;1803:9:1;;;;:17;;:53;;1821:10;;1841:4;;-1:-1:-1;;;;;;1803:9:1;1848:7;;;1803:53;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1772:85;;;;;;1868:9;:24;;-1:-1:-1;;;;;;1868:24:1;-1:-1:-1;;;;;1868:24:1;;;;;;;;1908:42;;1925:10;;1908:42;;-1:-1:-1;;1908:42:1;1523:434;:::o;2545:175:4:-;2610:7;2629:12;2644:26;2665:4;;2644:20;:26::i;:::-;2629:41;;2688:25;2708:4;2688:19;:25::i;:::-;2681:32;2545:175;-1:-1:-1;;;;2545:175:4:o;1600:694::-;1789:7;902:33:1;915:10;927:7;;-1:-1:-1;;;;;;927:7:1;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:1;;;;;;;:::i;:::-;1835:23:4;;::::1;::::0;::::1;::::0;1873:26;;1869:183:::1;;2011:12;2025:15;;1994:47;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;1979:62;;1869:183;2062:12;2077:26;2098:4;;2077:20;:26::i;:::-;2062:41;;2114:23;2140:41;2155:4;2161:12;2175:5;2140:14;:41::i;:::-;2114:67;;2197:57;2214:4;;2220:15;2237:16;2197:57;;;;;;;;;:::i;:::-;;;;;;;;2272:15:::0;1600:694;-1:-1:-1;;;;;;;;;1600:694:4:o;1963:164:1:-;902:33;915:10;927:7;;-1:-1:-1;;;;;;927:7:1;902:12;:33::i;:::-;894:58;;;;-1:-1:-1;;;894:58:1;;;;;;;:::i;:::-;2046:5:::1;:16:::0;;-1:-1:-1;;;;;;2046:16:1::1;-1:-1:-1::0;;;;;2046:16:1;::::1;::::0;;::::1;::::0;;2078:42:::1;::::0;2046:16;;2099:10:::1;::::0;2078:42:::1;::::0;2046:5;2078:42:::1;1963:164:::0;:::o;2726:133:4:-;2799:7;2846:4;;2835:16;;;;;;;;;:::i;:::-;;;;;;;;;;;;;2825:27;;;;;;2818:34;;2726:133;;;;:::o;977:540:1:-;1097:9;;1064:4;;-1:-1:-1;;;;;1097:9:1;1415:27;;;;;:77;;-1:-1:-1;1446:46:1;;-1:-1:-1;;;1446:46:1;;-1:-1:-1;;;;;1446:12:1;;;;;:46;;1459:4;;1473;;1480:11;;1446:46;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1414:96;;;-1:-1:-1;1505:5:1;;-1:-1:-1;;;;;1497:13:1;;;1505:5;;1497:13;1407:103;;;977:540;;;;:::o;3180:392:0:-;3279:12;3331:5;3307:21;:29;3303:108;;;3359:41;;-1:-1:-1;;;3359:41:0;;3394:4;3359:41;;;1228:51:5;1201:18;;3359:41:0;1082:203:5;3303:108:0;3421:12;3435:23;3462:6;-1:-1:-1;;;;;3462:11:0;3481:5;3488:4;3462:31;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:73;;;;3510:55;3537:6;3545:7;3554:10;3510:26;:55::i;:::-;3503:62;;;;3180:392;;;;;;:::o;3325:123:3:-;3383:7;3409:32;3421:4;3435;3409:11;:32::i;:::-;3402:39;3325:123;-1:-1:-1;;3325:123:3:o;2523:796::-;2643:16;2671:31;2705:14;;;;;;;;;;;;;-1:-1:-1;;;2705:14:3;;;2671:48;;2730:13;3053:4;3032:18;3026:25;3021:2;3001:18;2997:27;2994:1;2986:72;2977:81;-1:-1:-1;;;;;;3085:19:3;;3077:49;;;;-1:-1:-1;;;3077:49:3;;8714:2:5;3077:49:3;;;8696:21:5;8753:2;8733:18;;;8726:30;-1:-1:-1;;;8772:18:5;;;8765:47;8829:18;;3077:49:3;8512:341:5;3077:49:3;3148:17;3160:4;3148:11;:17::i;:::-;3137:28;;3176:12;3194:5;-1:-1:-1;;;;;3194:10:3;3212:5;3219:12;3194:38;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3175:57;;;3250:7;:36;;;;-1:-1:-1;;;;;;3261:20:3;;;:25;;3250:36;3242:70;;;;-1:-1:-1;;;3242:70:3;;9060:2:5;3242:70:3;;;9042:21:5;9099:2;9079:18;;;9072:30;-1:-1:-1;;;9118:18:5;;;9111:51;9179:18;;3242:70:3;8858:345:5;3242:70:3;2661:658;;;2523:796;;;;;:::o;4625:582:0:-;4769:12;4798:7;4793:408;;4821:19;4829:10;4821:7;:19::i;:::-;4793:408;;;5045:17;;:22;:49;;;;-1:-1:-1;;;;;;5071:18:0;;;:23;5045:49;5041:119;;;5121:24;;-1:-1:-1;;;5121:24:0;;-1:-1:-1;;;;;1246:32:5;;5121:24:0;;;1228:51:5;1201:18;;5121:24:0;1082:203:5;5041:119:0;-1:-1:-1;5180:10:0;5173:17;;3454:862:3;2501:14;;;;;;;;;;;-1:-1:-1;;;2501:14:3;;;;;3587:258;;-1:-1:-1;;;;;;3587:258:3;;;9419:39:5;;;;-1:-1:-1;;9495:2:5;9491:15;;;9487:53;9474:11;;;9467:74;9557:12;;;9550:28;;;2491:25:3;9594:12:5;;;9587:28;-1:-1:-1;;;;3564:309:3;;9631:12:5;;3587:258:3;;;;;;;;;;;;;3564:291;;;;;;398:10:2;280:138;3564:309:3;3930:347;;-1:-1:-1;;;3930:347:3;;;9985:28:5;-1:-1:-1;;10050:2:5;10046:15;;;10042:53;10029:11;;;10022:74;-1:-1:-1;;;10112:12:5;;;10105:33;3548:325:3;;-1:-1:-1;3903:406:3;;10154:12:5;;3930:347:3;9654:518:5;5743:516:0;5874:17;;:21;5870:383;;6102:10;6096:17;6158:15;6145:10;6141:2;6137:19;6130:44;5870:383;6225:17;;-1:-1:-1;;;6225:17:0;;;;;;;;;;;5870:383;5743:516;:::o;14:636:5:-;121:6;129;182:2;170:9;161:7;157:23;153:32;150:52;;;198:1;195;188:12;150:52;238:9;225:23;267:18;308:2;300:6;297:14;294:34;;;324:1;321;314:12;294:34;362:6;351:9;347:22;337:32;;407:7;400:4;396:2;392:13;388:27;378:55;;429:1;426;419:12;378:55;469:2;456:16;495:2;487:6;484:14;481:34;;;511:1;508;501:12;481:34;564:7;559:2;549:6;546:1;542:14;538:2;534:23;530:32;527:45;524:65;;;585:1;582;575:12;524:65;616:2;608:11;;;;;638:6;;-1:-1:-1;14:636:5;;-1:-1:-1;;;;14:636:5:o;655:142::-;-1:-1:-1;;;;;741:31:5;;731:42;;721:70;;787:1;784;777:12;802:275;878:6;931:2;919:9;910:7;906:23;902:32;899:52;;;947:1;944;937:12;899:52;986:9;973:23;1005:42;1041:5;1005:42;:::i;1290:348::-;1342:8;1352:6;1406:3;1399:4;1391:6;1387:17;1383:27;1373:55;;1424:1;1421;1414:12;1373:55;-1:-1:-1;1447:20:5;;1490:18;1479:30;;1476:50;;;1522:1;1519;1512:12;1476:50;1559:4;1551:6;1547:17;1535:29;;1611:3;1604:4;1595:6;1587;1583:19;1579:30;1576:39;1573:59;;;1628:1;1625;1618:12;1573:59;1290:348;;;;;:::o;1643:411::-;1714:6;1722;1775:2;1763:9;1754:7;1750:23;1746:32;1743:52;;;1791:1;1788;1781:12;1743:52;1831:9;1818:23;1864:18;1856:6;1853:30;1850:50;;;1896:1;1893;1886:12;1850:50;1935:59;1986:7;1977:6;1966:9;1962:22;1935:59;:::i;:::-;2013:8;;1909:85;;-1:-1:-1;1643:411:5;-1:-1:-1;;;;1643:411:5:o;2284:127::-;2345:10;2340:3;2336:20;2333:1;2326:31;2376:4;2373:1;2366:15;2400:4;2397:1;2390:15;2416:1567;2534:6;2542;2550;2558;2566;2574;2627:3;2615:9;2606:7;2602:23;2598:33;2595:53;;;2644:1;2641;2634:12;2595:53;2684:9;2671:23;2713:18;2754:2;2746:6;2743:14;2740:34;;;2770:1;2767;2760:12;2740:34;2809:59;2860:7;2851:6;2840:9;2836:22;2809:59;:::i;:::-;2887:8;;-1:-1:-1;2783:85:5;-1:-1:-1;2975:2:5;2960:18;;2947:32;;-1:-1:-1;2991:16:5;;;2988:36;;;3020:1;3017;3010:12;2988:36;3058:8;3047:9;3043:24;3033:34;;3105:7;3098:4;3094:2;3090:13;3086:27;3076:55;;3127:1;3124;3117:12;3076:55;3163:2;3150:16;3185:2;3181;3178:10;3175:36;;;3191:18;;:::i;:::-;3266:2;3260:9;3234:2;3320:13;;-1:-1:-1;;3316:22:5;;;3340:2;3312:31;3308:40;3296:53;;;3364:18;;;3384:22;;;3361:46;3358:72;;;3410:18;;:::i;:::-;3450:10;3446:2;3439:22;3485:2;3477:6;3470:18;3525:7;3520:2;3515;3511;3507:11;3503:20;3500:33;3497:53;;;3546:1;3543;3536:12;3497:53;3602:2;3597;3593;3589:11;3584:2;3576:6;3572:15;3559:46;3647:1;3642:2;3637;3629:6;3625:15;3621:24;3614:35;3668:6;3658:16;;;;;3727:2;3716:9;3712:18;3699:32;3683:48;;3756:2;3746:8;3743:16;3740:36;;;3772:1;3769;3762:12;3740:36;;3811:61;3864:7;3853:8;3842:9;3838:24;3811:61;:::i;:::-;2416:1567;;;;-1:-1:-1;2416:1567:5;;;;;3973:2;3958:18;;;3945:32;;2416:1567;-1:-1:-1;;;;2416:1567:5:o;4433:336::-;4635:2;4617:21;;;4674:2;4654:18;;;4647:30;-1:-1:-1;;;4708:2:5;4693:18;;4686:42;4760:2;4745:18;;4433:336::o;4774:127::-;4835:10;4830:3;4826:20;4823:1;4816:31;4866:4;4863:1;4856:15;4890:4;4887:1;4880:15;4906:318;4993:4;5051:11;5038:25;5145:2;5141:7;5130:8;5114:14;5110:29;5106:43;5086:18;5082:68;5072:96;;5164:1;5161;5154:12;5072:96;5185:33;;;;;4906:318;-1:-1:-1;;4906:318:5:o;5229:521::-;5306:4;5312:6;5372:11;5359:25;5466:2;5462:7;5451:8;5435:14;5431:29;5427:43;5407:18;5403:68;5393:96;;5485:1;5482;5475:12;5393:96;5512:33;;5564:20;;;-1:-1:-1;5607:18:5;5596:30;;5593:50;;;5639:1;5636;5629:12;5593:50;5672:4;5660:17;;-1:-1:-1;5703:14:5;5699:27;;;5689:38;;5686:58;;;5740:1;5737;5730:12;5755:232;5794:3;5815:17;;;5812:140;;5874:10;5869:3;5865:20;5862:1;5855:31;5909:4;5906:1;5899:15;5937:4;5934:1;5927:15;5812:140;-1:-1:-1;5979:1:5;5968:13;;5755:232::o;5992:400::-;-1:-1:-1;;;;;6248:15:5;;;6230:34;;6300:15;;;;6295:2;6280:18;;6273:43;-1:-1:-1;;;;;;6352:33:5;;;6347:2;6332:18;;6325:61;6180:2;6165:18;;5992:400::o;6397:277::-;6464:6;6517:2;6505:9;6496:7;6492:23;6488:32;6485:52;;;6533:1;6530;6523:12;6485:52;6565:9;6559:16;6618:5;6611:13;6604:21;6597:5;6594:32;6584:60;;6640:1;6637;6630:12;6679:322;6720:3;6758:5;6752:12;6782:1;6792:128;6806:6;6803:1;6800:13;6792:128;;;6903:4;6888:13;;;6884:24;;6878:31;6865:11;;;6858:52;6821:12;6792:128;;;-1:-1:-1;6975:1:5;6939:16;;6964:13;;;-1:-1:-1;6939:16:5;;6679:322;-1:-1:-1;6679:322:5:o;7006:363::-;7191:3;7219:29;7244:3;7236:6;7219:29;:::i;:::-;7282:6;7274;7270:2;7257:32;7343:1;7308:15;;7332:13;;;-1:-1:-1;7308:15:5;;7006:363;-1:-1:-1;;;7006:363:5:o;7374:267::-;7463:6;7458:3;7451:19;7515:6;7508:5;7501:4;7496:3;7492:14;7479:43;-1:-1:-1;7567:1:5;7542:16;;;7560:4;7538:27;;;7531:38;;;;7623:2;7602:15;;;-1:-1:-1;;7598:29:5;7589:39;;;7585:50;;7374:267::o;7646:415::-;7861:2;7850:9;7843:21;7824:4;7881:62;7939:2;7928:9;7924:18;7916:6;7908;7881:62;:::i;:::-;-1:-1:-1;;;;;7979:32:5;;;;7974:2;7959:18;;7952:60;-1:-1:-1;8043:2:5;8028:18;8021:34;7873:70;7646:415;-1:-1:-1;;7646:415:5:o;8066:247::-;8225:2;8214:9;8207:21;8188:4;8245:62;8303:2;8292:9;8288:18;8280:6;8272;8245:62;:::i;8318:189::-;8447:3;8472:29;8497:3;8489:6;8472:29;:::i
Swarm Source
ipfs://d60455b2e0c177361c7d97bd59850f966664698864856dd2499dae185086e577
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.